diff --git a/oan-etl/build.gradle b/oan-etl/build.gradle index 2ec3bce..b1310df 100644 --- a/oan-etl/build.gradle +++ b/oan-etl/build.gradle @@ -4,7 +4,7 @@ plugins { id('jacoco') } -group = 'org.jacksonlaboratory' +group = 'org.jax' version = '0.1' repositories { @@ -12,6 +12,7 @@ repositories { } dependencies { + implementation project(':oan-model') annotationProcessor("info.picocli:picocli-codegen") annotationProcessor("io.micronaut.serde:micronaut-serde-processor") testAnnotationProcessor("io.micronaut:micronaut-inject-java") diff --git a/oan-etl/src/main/java/org/jacksonlaboratory/ontology/GraphLoader.java b/oan-etl/src/main/java/org/jacksonlaboratory/ontology/GraphLoader.java deleted file mode 100644 index b94d5eb..0000000 --- a/oan-etl/src/main/java/org/jacksonlaboratory/ontology/GraphLoader.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.jacksonlaboratory.ontology; - -import org.monarchinitiative.phenol.annotations.assoc.MissingPhenolResourceException; - -import java.io.IOException; - -public interface GraphLoader { - void load(String folder) throws IOException, MissingPhenolResourceException; -} diff --git a/oan-etl/src/main/java/org/jacksonlaboratory/GraphCommand.java b/oan-etl/src/main/java/org/jax/oan/GraphCommand.java similarity index 74% rename from oan-etl/src/main/java/org/jacksonlaboratory/GraphCommand.java rename to oan-etl/src/main/java/org/jax/oan/GraphCommand.java index ce54934..2fc0bbe 100644 --- a/oan-etl/src/main/java/org/jacksonlaboratory/GraphCommand.java +++ b/oan-etl/src/main/java/org/jax/oan/GraphCommand.java @@ -1,13 +1,14 @@ -package org.jacksonlaboratory; +package org.jax.oan; import io.micronaut.configuration.picocli.PicocliRunner; import jakarta.inject.Inject; -import org.jacksonlaboratory.graph.Operations; -import org.jacksonlaboratory.ontology.HpoGraphLoader; +import org.jax.oan.exception.OntologyAnnotationNetworkRuntimeException; +import org.jax.oan.graph.Operations; +import org.jax.oan.ontology.HpoGraphLoader; import picocli.CommandLine.Command; import picocli.CommandLine.Option; -import java.io.IOException; +import java.nio.file.Path; import java.util.List; @Command(name = "graph", @@ -22,7 +23,7 @@ public class GraphCommand implements Runnable { Operations operations; @Option(names = {"-d", "--data"}, description = "The directory with the data.") - String path; + Path path; @Option(names = {"-m", "--modules"}, description = "The list of modules to load into the graph.") List modules; @@ -35,8 +36,8 @@ public void run() { try { operations.truncate(); hpoGraphLoader.load(path); - } catch (IOException e) { - throw new RuntimeException(e); + } catch (Exception e) { + throw new OntologyAnnotationNetworkRuntimeException(e); } } } diff --git a/oan-etl/src/main/java/org/jacksonlaboratory/graph/Operations.java b/oan-etl/src/main/java/org/jax/oan/graph/Operations.java similarity index 95% rename from oan-etl/src/main/java/org/jacksonlaboratory/graph/Operations.java rename to oan-etl/src/main/java/org/jax/oan/graph/Operations.java index 574acde..bc94bc9 100644 --- a/oan-etl/src/main/java/org/jacksonlaboratory/graph/Operations.java +++ b/oan-etl/src/main/java/org/jax/oan/graph/Operations.java @@ -1,7 +1,7 @@ -package org.jacksonlaboratory.graph; +package org.jax.oan.graph; import jakarta.inject.Singleton; -import org.jacksonlaboratory.model.OntologyModule; +import org.jax.oan.core.OntologyModule; import org.neo4j.driver.Driver; import org.neo4j.driver.Transaction; import org.slf4j.Logger; diff --git a/oan-etl/src/main/java/org/jax/oan/ontology/GraphLoader.java b/oan-etl/src/main/java/org/jax/oan/ontology/GraphLoader.java new file mode 100644 index 0000000..b8a9fe0 --- /dev/null +++ b/oan-etl/src/main/java/org/jax/oan/ontology/GraphLoader.java @@ -0,0 +1,10 @@ +package org.jax.oan.ontology; + +import org.jax.oan.exception.OntologyAnnotationNetworkException; + +import java.io.IOException; +import java.nio.file.Path; + +public interface GraphLoader { + void load(Path dataDirectory) throws IOException, OntologyAnnotationNetworkException; +} diff --git a/oan-etl/src/main/java/org/jax/oan/ontology/HpoDataResolver.java b/oan-etl/src/main/java/org/jax/oan/ontology/HpoDataResolver.java new file mode 100644 index 0000000..d2bc578 --- /dev/null +++ b/oan-etl/src/main/java/org/jax/oan/ontology/HpoDataResolver.java @@ -0,0 +1,70 @@ +package org.jax.oan.ontology; + +import org.jax.oan.exception.OntologyAnnotationNetworkDataException; +import org.jax.oan.exception.OntologyAnnotationNetworkException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Objects; + +public class HpoDataResolver { + private static final Logger LOGGER = LoggerFactory.getLogger(HpoDataResolver.class); + + private final Path dataDirectory; + public static HpoDataResolver of(Path dataDirectory) throws OntologyAnnotationNetworkException { + return new HpoDataResolver(dataDirectory); + } + + private HpoDataResolver(Path dataDirectory) throws OntologyAnnotationNetworkException { + Objects.requireNonNull(dataDirectory, "Data directory must not be null!"); + this.dataDirectory = dataDirectory; + validateHpoFiles(); + } + + private void validateHpoFiles() throws OntologyAnnotationNetworkException { + boolean error = false; + List requiredFiles = List.of(hpJson(), hgncCompleteSet(), mim2geneMedgen(), phenotypeAnnotations(), + orpha2Gene(), loinc()); + for (Path file : requiredFiles) { + if (!Files.isRegularFile(file)) { + LOGGER.error("Missing required file `{}` in `{}`.", file.toFile().getName(), dataDirectory.toAbsolutePath()); + error = true; + } + } + if (error) { + throw new OntologyAnnotationNetworkDataException("Missing one or more required files in OntologyAnnotationNetwork data directory!"); + } + } + + + public Path dataDirectory() { + return dataDirectory; + } + + public Path hpJson(){ + return dataDirectory.resolve("hp-simple-non-classified.json"); + } + + public Path hgncCompleteSet() { + return dataDirectory.resolve("hgnc_complete_set.txt"); + } + + public Path mim2geneMedgen() { + return dataDirectory.resolve("mim2gene_medgen"); + } + + public Path phenotypeAnnotations() { + return dataDirectory.resolve("phenotype.hpoa"); + } + + public Path orpha2Gene(){ + return dataDirectory.resolve("en_product6.xml"); + } + + public Path loinc(){ + return dataDirectory.resolve("loinc2hpo-annotations-merged.tsv"); + } +} diff --git a/oan-etl/src/main/java/org/jacksonlaboratory/ontology/HpoGraphLoader.java b/oan-etl/src/main/java/org/jax/oan/ontology/HpoGraphLoader.java similarity index 84% rename from oan-etl/src/main/java/org/jacksonlaboratory/ontology/HpoGraphLoader.java rename to oan-etl/src/main/java/org/jax/oan/ontology/HpoGraphLoader.java index b27d692..0cbac14 100644 --- a/oan-etl/src/main/java/org/jacksonlaboratory/ontology/HpoGraphLoader.java +++ b/oan-etl/src/main/java/org/jax/oan/ontology/HpoGraphLoader.java @@ -1,9 +1,10 @@ -package org.jacksonlaboratory.ontology; +package org.jax.oan.ontology; import io.micronaut.context.annotation.Context; -import org.jacksonlaboratory.graph.Operations; -import org.jacksonlaboratory.model.OntologyModule; -import org.monarchinitiative.phenol.annotations.assoc.MissingPhenolResourceException; +import org.jax.oan.exception.OntologyAnnotationNetworkException; +import org.jax.oan.exception.OntologyAnnotationNetworkRuntimeException; +import org.jax.oan.graph.Operations; +import org.jax.oan.core.OntologyModule; import org.monarchinitiative.phenol.annotations.formats.AnnotationReference; import org.monarchinitiative.phenol.annotations.formats.hpo.HpoAssociationData; import org.monarchinitiative.phenol.annotations.formats.hpo.HpoOnset; @@ -21,7 +22,6 @@ import org.slf4j.LoggerFactory; import java.io.BufferedReader; -import java.io.File; import java.io.FileReader; import java.io.IOException; import java.nio.file.Path; @@ -44,17 +44,12 @@ public HpoGraphLoader(Driver driver, Operations operations) { this.operations = operations; } @Override - public void load(String folder) throws IOException, MissingPhenolResourceException { - final File ontologyFile = new File(String.format("data/%s-simple-non-classified.json", "hp")); - final Ontology hpoOntology = OntologyLoader.loadOntology(ontologyFile); - final Path hgncPath = new File("data/hgnc_complete_set.txt").toPath(); - final Path omimToGenePath = new File("data/mim2gene_medgen").toPath(); - final Path hpoaFilePath = new File("data/phenotype.hpoa").toPath(); - final Path orphaToGenePath = new File("data/en_product6.xml").toPath(); - final File loincPath = new File("data/loinc2hpo-annotations-merged.tsv"); - final HpoaDiseaseDataContainer diseases = HpoaDiseaseDataLoader.of(Set.of(DiseaseDatabase.OMIM, DiseaseDatabase.ORPHANET)).loadDiseaseData(hpoaFilePath); - final HpoAssociationData associations = HpoAssociationData.builder(hpoOntology).orphaToGenePath(orphaToGenePath).mim2GeneMedgen(omimToGenePath) - .hpoDiseases(diseases).hgncCompleteSetArchive(hgncPath).build(); + public void load(Path hpoDataDirectory) throws IOException, OntologyAnnotationNetworkException { + final HpoDataResolver dataResolver = HpoDataResolver.of(hpoDataDirectory); + final Ontology hpoOntology = OntologyLoader.loadOntology(dataResolver.hpJson().toFile()); + final HpoaDiseaseDataContainer diseases = HpoaDiseaseDataLoader.of(Set.of(DiseaseDatabase.OMIM, DiseaseDatabase.ORPHANET)).loadDiseaseData(dataResolver.phenotypeAnnotations()); + final HpoAssociationData associations = HpoAssociationData.builder(hpoOntology).orphaToGenePath(dataResolver.orpha2Gene()).mim2GeneMedgen(dataResolver.mim2geneMedgen()) + .hpoDiseases(diseases).hgncCompleteSetArchive(dataResolver.hgncCompleteSet()).build(); List phenotypes = diseases.stream().flatMap(d -> d.annotationLines().stream().map(HpoAnnotationLine::phenotypeTermId)).distinct().toList(); operations.dropIndexes(OntologyModule.HPO); try (Session session = driver.session()) { @@ -64,14 +59,14 @@ public void load(String folder) throws IOException, MissingPhenolResourceExcepti operations.createIndexes(OntologyModule.HPO); diseaseToPhenotype(session, diseases, hpoOntology); diseaseToGene(session, associations); - assayToPhenotype(session, loincPath); + assayToPhenotype(session, dataResolver.loinc()); } } - protected void assayToPhenotype(Session session, File loinc){ + protected void assayToPhenotype(Session session, Path loinc){ logger.info("Loading Assay Relationships..."); Transaction tx = session.beginTransaction(); - try (BufferedReader reader = new BufferedReader(new FileReader(loinc))) { + try (BufferedReader reader = new BufferedReader(new FileReader(loinc.toFile()))) { String line; reader.readLine(); while ((line = reader.readLine()) != null) { @@ -86,8 +81,7 @@ protected void assayToPhenotype(Session session, File loinc){ tx.commit(); tx.close(); } catch (IOException e) { - // TODO: throw oan-error - e.printStackTrace(); + throw new OntologyAnnotationNetworkRuntimeException("There was a problem with the required assay file format."); } } diff --git a/oan-etl/src/test/java/org/jacksonlaboratory/graph/OperationsTest.java b/oan-etl/src/test/java/org/jax/oan/graph/OperationsTest.java similarity index 95% rename from oan-etl/src/test/java/org/jacksonlaboratory/graph/OperationsTest.java rename to oan-etl/src/test/java/org/jax/oan/graph/OperationsTest.java index 22d0756..f0c7c5d 100644 --- a/oan-etl/src/test/java/org/jacksonlaboratory/graph/OperationsTest.java +++ b/oan-etl/src/test/java/org/jax/oan/graph/OperationsTest.java @@ -1,7 +1,7 @@ -package org.jacksonlaboratory.graph; +package org.jax.oan.graph; import io.micronaut.test.extensions.junit5.annotation.MicronautTest; -import org.jacksonlaboratory.model.OntologyModule; +import org.jax.oan.core.OntologyModule; import org.junit.jupiter.api.Test; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; diff --git a/oan-etl/src/test/java/org/jax/oan/ontology/HpoDataResolverTest.java b/oan-etl/src/test/java/org/jax/oan/ontology/HpoDataResolverTest.java new file mode 100644 index 0000000..db745de --- /dev/null +++ b/oan-etl/src/test/java/org/jax/oan/ontology/HpoDataResolverTest.java @@ -0,0 +1,29 @@ +package org.jax.oan.ontology; + +import org.jax.oan.exception.OntologyAnnotationNetworkDataException; +import org.jax.oan.exception.OntologyAnnotationNetworkException; +import org.junit.jupiter.api.Test; + +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.*; + +class HpoDataResolverTest { + + @Test + void of() throws OntologyAnnotationNetworkException { + Path dataDirectory = Path.of("src/test/resources"); + HpoDataResolver dataResolver = HpoDataResolver.of(dataDirectory); + assertEquals(dataResolver.hpJson(), dataDirectory.resolve("hp-simple-non-classified.json")); + assertEquals(dataResolver.mim2geneMedgen(), dataDirectory.resolve("mim2gene_medgen")); + assertEquals(dataResolver.hgncCompleteSet(), dataDirectory.resolve("hgnc_complete_set.txt")); + assertEquals(dataResolver.phenotypeAnnotations(), dataDirectory.resolve("phenotype.hpoa")); + assertEquals(dataResolver.loinc(), dataDirectory.resolve("loinc2hpo-annotations-merged.tsv")); + assertEquals(dataDirectory, dataResolver.dataDirectory()); + } + + @Test + void error() { + assertThrows(OntologyAnnotationNetworkDataException.class, () -> HpoDataResolver.of(Path.of("src/main/resources"))); + } +} diff --git a/oan-etl/src/test/java/org/jacksonlaboratory/ontology/HpoGraphLoaderTest.java b/oan-etl/src/test/java/org/jax/oan/ontology/HpoGraphLoaderTest.java similarity index 82% rename from oan-etl/src/test/java/org/jacksonlaboratory/ontology/HpoGraphLoaderTest.java rename to oan-etl/src/test/java/org/jax/oan/ontology/HpoGraphLoaderTest.java index 8a21112..8a1f992 100644 --- a/oan-etl/src/test/java/org/jacksonlaboratory/ontology/HpoGraphLoaderTest.java +++ b/oan-etl/src/test/java/org/jax/oan/ontology/HpoGraphLoaderTest.java @@ -1,8 +1,8 @@ -package org.jacksonlaboratory.ontology; +package org.jax.oan.ontology; -import io.micronaut.core.io.ResourceLoader; import io.micronaut.test.extensions.junit5.annotation.MicronautTest; -import org.jacksonlaboratory.graph.Operations; +import org.jax.oan.exception.OntologyAnnotationNetworkException; +import org.jax.oan.graph.Operations; import org.junit.jupiter.api.Test; import org.monarchinitiative.phenol.annotations.formats.AnnotationReference; import org.monarchinitiative.phenol.annotations.formats.EvidenceCode; @@ -19,7 +19,6 @@ import org.neo4j.driver.types.Node; import java.io.IOException; -import java.net.URISyntaxException; import java.nio.file.Path; import java.util.List; import java.util.Set; @@ -37,18 +36,16 @@ class HpoGraphLoaderTest { final Session session; - public HpoGraphLoaderTest(Driver driver, ResourceLoader resourceLoader, HpoGraphLoader graphLoader, Operations operations) throws IOException, URISyntaxException { + public HpoGraphLoaderTest(Driver driver, HpoGraphLoader graphLoader, Operations operations) throws IOException, OntologyAnnotationNetworkException { this.graphLoader = graphLoader; this.operations = operations; - Ontology ontology = OntologyLoader.loadOntology(resourceLoader.getResourceAsStream("classpath:hp.json").get()); - final HpoaDiseaseDataContainer container = HpoaDiseaseDataLoader.of(Set.of(DiseaseDatabase.OMIM, DiseaseDatabase.ORPHANET)).loadDiseaseData(resourceLoader.getResourceAsStream("classpath:phenotype.hpoa").get()); + HpoDataResolver hpoDataResolver = HpoDataResolver.of(Path.of("src/test/resources")); + Ontology ontology = OntologyLoader.loadOntology(hpoDataResolver.hpJson().toFile()); + final HpoaDiseaseDataContainer container = HpoaDiseaseDataLoader.of(Set.of(DiseaseDatabase.OMIM, DiseaseDatabase.ORPHANET)).loadDiseaseData(hpoDataResolver.phenotypeAnnotations()); session = driver.session(); - final Path mim2gene = Path.of(resourceLoader.getResource("classpath:mim2gene_medgen_short").get().toURI()); - final Path hgncPath = Path.of(resourceLoader.getResource("classpath:hgnc_2gene.txt").get().toURI()); - final HpoAssociationData associations = HpoAssociationData.builder(ontology).mim2GeneMedgen(mim2gene) - .hpoDiseases(container).hgncCompleteSetArchive(hgncPath).build(); - final Path loincPath = Path.of(resourceLoader.getResource("classpath:loinc-annotations.tsv").get().toURI()); - configureGraph(associations, container, ontology, loincPath); + final HpoAssociationData associations = HpoAssociationData.builder(ontology).mim2GeneMedgen(hpoDataResolver.mim2geneMedgen()) + .hpoDiseases(container).hgncCompleteSetArchive(hpoDataResolver.hgncCompleteSet()).build(); + configureGraph(associations, container, ontology, hpoDataResolver.loinc()); } void configureGraph(HpoAssociationData associations, HpoaDiseaseDataContainer container, Ontology ontology, @@ -60,7 +57,7 @@ void configureGraph(HpoAssociationData associations, HpoaDiseaseDataContainer co graphLoader.diseaseToPhenotype(session, container, ontology); graphLoader.genes(session, associations); graphLoader.diseaseToGene(session, associations); - graphLoader.assayToPhenotype(session, loincPath.toFile()); + graphLoader.assayToPhenotype(session, loincPath); } @Test diff --git a/oan-etl/src/test/resources/en_product6.xml b/oan-etl/src/test/resources/en_product6.xml new file mode 100644 index 0000000..d9ea5b9 --- /dev/null +++ b/oan-etl/src/test/resources/en_product6.xml @@ -0,0 +1,76 @@ + + + + + Creative Commons Attribution 4.0 International + CC-BY-4.0 + https://creativecommons.org/licenses/by/4.0/legalcode + + + + + 166024 + http://www.orpha.net/consor/cgi-bin/OC_Exp.php?lng=en&Expert=166024 + Multiple epiphyseal dysplasia, Al-Gazali type + + Disease + + + Disorder + + + + 22587682[PMID] + + kinesin family member 7 + KIF7 + + JBTS12 + + + gene with protein product + + + + Ensembl + ENSG00000166813 + + + Genatlas + KIF7 + + + HGNC + 30497 + + + OMIM + 611254 + + + Reactome + Q2M1P5 + + + SwissProt + Q2M1P5 + + + + + 15q26.1 + 1 + + + + + Disease-causing germline mutation(s) in + + + Assessed + + + + + + diff --git a/oan-etl/src/test/resources/hgnc_2gene.txt b/oan-etl/src/test/resources/hgnc_complete_set.txt similarity index 100% rename from oan-etl/src/test/resources/hgnc_2gene.txt rename to oan-etl/src/test/resources/hgnc_complete_set.txt diff --git a/oan-etl/src/test/resources/hp.json b/oan-etl/src/test/resources/hp-simple-non-classified.json similarity index 100% rename from oan-etl/src/test/resources/hp.json rename to oan-etl/src/test/resources/hp-simple-non-classified.json diff --git a/oan-etl/src/test/resources/loinc-annotations.tsv b/oan-etl/src/test/resources/loinc2hpo-annotations-merged.tsv similarity index 100% rename from oan-etl/src/test/resources/loinc-annotations.tsv rename to oan-etl/src/test/resources/loinc2hpo-annotations-merged.tsv diff --git a/oan-etl/src/test/resources/mim2gene_medgen_short b/oan-etl/src/test/resources/mim2gene_medgen similarity index 100% rename from oan-etl/src/test/resources/mim2gene_medgen_short rename to oan-etl/src/test/resources/mim2gene_medgen diff --git a/oan-model/build.gradle b/oan-model/build.gradle new file mode 100644 index 0000000..d0357fb --- /dev/null +++ b/oan-model/build.gradle @@ -0,0 +1,19 @@ +plugins { + id 'java-library' +} + +group = 'org.jax' +version = '0.1' + +repositories { + mavenCentral() +} + +dependencies { + testImplementation platform('org.junit:junit-bom:5.9.1') + testImplementation 'org.junit.jupiter:junit-jupiter' +} + +test { + useJUnitPlatform() +} diff --git a/oan-etl/src/main/java/org/jacksonlaboratory/model/OntologyModule.java b/oan-model/src/main/java/org/jax/oan/core/OntologyModule.java similarity index 53% rename from oan-etl/src/main/java/org/jacksonlaboratory/model/OntologyModule.java rename to oan-model/src/main/java/org/jax/oan/core/OntologyModule.java index edd978f..08e25cb 100644 --- a/oan-etl/src/main/java/org/jacksonlaboratory/model/OntologyModule.java +++ b/oan-model/src/main/java/org/jax/oan/core/OntologyModule.java @@ -1,7 +1,6 @@ -package org.jacksonlaboratory.model; +package org.jax.oan.core; public enum OntologyModule { HPO, MAXO } - diff --git a/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkDataException.java b/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkDataException.java new file mode 100644 index 0000000..d2827bd --- /dev/null +++ b/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkDataException.java @@ -0,0 +1,30 @@ +package org.jax.oan.exception; + +/* + Thrown when our data loader is missing required resources. + */ +public class OntologyAnnotationNetworkDataException extends OntologyAnnotationNetworkException { + public OntologyAnnotationNetworkDataException() { + super(); + } + + public OntologyAnnotationNetworkDataException(String message) { + super(message); + } + + public OntologyAnnotationNetworkDataException(String message, Exception e) { + super(message, e); + } + + public OntologyAnnotationNetworkDataException(String message, Throwable cause) { + super(message, cause); + } + + public OntologyAnnotationNetworkDataException(Throwable cause) { + super(cause); + } + + protected OntologyAnnotationNetworkDataException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkException.java b/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkException.java new file mode 100644 index 0000000..695aaea --- /dev/null +++ b/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkException.java @@ -0,0 +1,18 @@ +package org.jax.oan.exception; + +public class OntologyAnnotationNetworkException extends Exception { + public OntologyAnnotationNetworkException() { super(); } + public OntologyAnnotationNetworkException(String message) { super(message);} + public OntologyAnnotationNetworkException(String message, Exception e) { super(message,e);} + public OntologyAnnotationNetworkException(String message, Throwable cause) { + super(message, cause); + } + + public OntologyAnnotationNetworkException(Throwable cause) { + super(cause); + } + + protected OntologyAnnotationNetworkException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkRuntimeException.java b/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkRuntimeException.java new file mode 100644 index 0000000..40b655d --- /dev/null +++ b/oan-model/src/main/java/org/jax/oan/exception/OntologyAnnotationNetworkRuntimeException.java @@ -0,0 +1,8 @@ +package org.jax.oan.exception; + +public class OntologyAnnotationNetworkRuntimeException extends RuntimeException { + public OntologyAnnotationNetworkRuntimeException() { super();} + public OntologyAnnotationNetworkRuntimeException(String msg) { super(msg);} + public OntologyAnnotationNetworkRuntimeException(String message, Throwable cause) { super(message, cause);} + public OntologyAnnotationNetworkRuntimeException(Throwable cause) { super(cause);} +} diff --git a/oan-etl/src/test/java/org/jacksonlaboratory/model/OntologyModuleTest.java b/oan-model/src/test/java/org/jax/oan/core/OntologyModuleTest.java similarity index 73% rename from oan-etl/src/test/java/org/jacksonlaboratory/model/OntologyModuleTest.java rename to oan-model/src/test/java/org/jax/oan/core/OntologyModuleTest.java index b490f22..667e36d 100644 --- a/oan-etl/src/test/java/org/jacksonlaboratory/model/OntologyModuleTest.java +++ b/oan-model/src/test/java/org/jax/oan/core/OntologyModuleTest.java @@ -1,8 +1,9 @@ -package org.jacksonlaboratory.model; +package org.jax.oan.core; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; class OntologyModuleTest { diff --git a/oan-model/src/test/java/org/jax/oan/exception/OntologyAnnotationNetworkDataExceptionTest.java b/oan-model/src/test/java/org/jax/oan/exception/OntologyAnnotationNetworkDataExceptionTest.java new file mode 100644 index 0000000..45851a9 --- /dev/null +++ b/oan-model/src/test/java/org/jax/oan/exception/OntologyAnnotationNetworkDataExceptionTest.java @@ -0,0 +1,7 @@ +package org.jax.oan.exception; + +import static org.junit.jupiter.api.Assertions.*; + +class OntologyAnnotationNetworkDataExceptionTest { + +} diff --git a/oan-rest/build.gradle b/oan-rest/build.gradle index 91ff0d1..9605722 100644 --- a/oan-rest/build.gradle +++ b/oan-rest/build.gradle @@ -5,7 +5,7 @@ plugins { } version = "0.1" -group = "org.jacksonlaboratory" +group = "org.jax" repositories { mavenCentral() diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/Application.java b/oan-rest/src/main/java/org/jax/oan/Application.java similarity index 92% rename from oan-rest/src/main/java/org/jacksonlaboratory/Application.java rename to oan-rest/src/main/java/org/jax/oan/Application.java index 9fbd897..28c635f 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/Application.java +++ b/oan-rest/src/main/java/org/jax/oan/Application.java @@ -1,4 +1,4 @@ -package org.jacksonlaboratory; +package org.jax.oan; import io.micronaut.runtime.Micronaut; import io.swagger.v3.oas.annotations.*; @@ -15,4 +15,4 @@ public class Application { public static void main(String[] args) { Micronaut.run(Application.class, args); } -} \ No newline at end of file +} diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/controller/AnnotationController.java b/oan-rest/src/main/java/org/jax/oan/controller/AnnotationController.java similarity index 94% rename from oan-rest/src/main/java/org/jacksonlaboratory/controller/AnnotationController.java rename to oan-rest/src/main/java/org/jax/oan/controller/AnnotationController.java index 9c1ae32..ac66e7e 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/controller/AnnotationController.java +++ b/oan-rest/src/main/java/org/jax/oan/controller/AnnotationController.java @@ -1,11 +1,11 @@ -package org.jacksonlaboratory.controller; +package org.jax.oan.controller; import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import io.micronaut.http.annotation.PathVariable; import io.swagger.v3.oas.annotations.media.Schema; -import org.jacksonlaboratory.service.AnnotationService; +import org.jax.oan.service.AnnotationService; @Controller("${api-prefix}/annotation") public class AnnotationController { diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/model/Assay.java b/oan-rest/src/main/java/org/jax/oan/model/Assay.java similarity index 59% rename from oan-rest/src/main/java/org/jacksonlaboratory/model/Assay.java rename to oan-rest/src/main/java/org/jax/oan/model/Assay.java index ff2a3d5..94b8f1a 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/model/Assay.java +++ b/oan-rest/src/main/java/org/jax/oan/model/Assay.java @@ -1,8 +1,8 @@ -package org.jacksonlaboratory.model; +package org.jax.oan.model; import org.monarchinitiative.phenol.ontology.data.TermId; -public class Assay extends SimpleOntologyTerm { +public class Assay extends OntologyClass { public Assay(TermId id, String name) { super(id, name); diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/model/Disease.java b/oan-rest/src/main/java/org/jax/oan/model/Disease.java similarity index 59% rename from oan-rest/src/main/java/org/jacksonlaboratory/model/Disease.java rename to oan-rest/src/main/java/org/jax/oan/model/Disease.java index a73dad2..208a959 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/model/Disease.java +++ b/oan-rest/src/main/java/org/jax/oan/model/Disease.java @@ -1,8 +1,8 @@ -package org.jacksonlaboratory.model; +package org.jax.oan.model; import org.monarchinitiative.phenol.ontology.data.TermId; -public class Disease extends SimpleOntologyTerm { +public class Disease extends OntologyClass { public Disease(TermId id, String name) { super(id, name); diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/model/Gene.java b/oan-rest/src/main/java/org/jax/oan/model/Gene.java similarity index 59% rename from oan-rest/src/main/java/org/jacksonlaboratory/model/Gene.java rename to oan-rest/src/main/java/org/jax/oan/model/Gene.java index 0c42077..c9a2b8c 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/model/Gene.java +++ b/oan-rest/src/main/java/org/jax/oan/model/Gene.java @@ -1,8 +1,8 @@ -package org.jacksonlaboratory.model; +package org.jax.oan.model; import org.monarchinitiative.phenol.ontology.data.TermId; -public class Gene extends SimpleOntologyTerm { +public class Gene extends OntologyClass { public Gene(TermId id, String name) { super(id, name); } diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/model/MedicalAction.java b/oan-rest/src/main/java/org/jax/oan/model/MedicalAction.java similarity index 58% rename from oan-rest/src/main/java/org/jacksonlaboratory/model/MedicalAction.java rename to oan-rest/src/main/java/org/jax/oan/model/MedicalAction.java index 709d955..63caa6a 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/model/MedicalAction.java +++ b/oan-rest/src/main/java/org/jax/oan/model/MedicalAction.java @@ -1,8 +1,8 @@ -package org.jacksonlaboratory.model; +package org.jax.oan.model; import org.monarchinitiative.phenol.ontology.data.TermId; -public class MedicalAction extends SimpleOntologyTerm { +public class MedicalAction extends OntologyClass { public MedicalAction(TermId id, String name) { super(id, name); } diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/model/SimpleOntologyTerm.java b/oan-rest/src/main/java/org/jax/oan/model/OntologyClass.java similarity index 63% rename from oan-rest/src/main/java/org/jacksonlaboratory/model/SimpleOntologyTerm.java rename to oan-rest/src/main/java/org/jax/oan/model/OntologyClass.java index 6bb36b2..e4b7e0e 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/model/SimpleOntologyTerm.java +++ b/oan-rest/src/main/java/org/jax/oan/model/OntologyClass.java @@ -1,14 +1,14 @@ -package org.jacksonlaboratory.model; +package org.jax.oan.model; import org.monarchinitiative.phenol.ontology.data.TermId; -public abstract class SimpleOntologyTerm { +public abstract class OntologyClass { TermId id; String name; - public SimpleOntologyTerm(TermId id, String name) { + public OntologyClass(TermId id, String name) { this.id = id; this.name = name; } diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/repository/AnnotationRepository.java b/oan-rest/src/main/java/org/jax/oan/repository/AnnotationRepository.java similarity index 84% rename from oan-rest/src/main/java/org/jacksonlaboratory/repository/AnnotationRepository.java rename to oan-rest/src/main/java/org/jax/oan/repository/AnnotationRepository.java index da064b0..67991ab 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/repository/AnnotationRepository.java +++ b/oan-rest/src/main/java/org/jax/oan/repository/AnnotationRepository.java @@ -1,4 +1,4 @@ -package org.jacksonlaboratory.repository; +package org.jax.oan.repository; import jakarta.inject.Inject; @@ -23,7 +23,8 @@ public AnnotationRepository(Driver driver) { // public void findDiseasesByTerm(TermId termId){ // try (Session session = driver.session()) { // List names = new ArrayList<>(); -// var result = session.run("MATCH (a:Person) RETURN a.name ORDER BY a.name"); +// var result = session.run("MATC +// H (a:Person) RETURN a.name ORDER BY a.name"); // while (result.hasNext()) { // names.add(result.next().get(0).asString()); // } diff --git a/oan-rest/src/main/java/org/jacksonlaboratory/service/AnnotationService.java b/oan-rest/src/main/java/org/jax/oan/service/AnnotationService.java similarity index 92% rename from oan-rest/src/main/java/org/jacksonlaboratory/service/AnnotationService.java rename to oan-rest/src/main/java/org/jax/oan/service/AnnotationService.java index 247e613..e887912 100644 --- a/oan-rest/src/main/java/org/jacksonlaboratory/service/AnnotationService.java +++ b/oan-rest/src/main/java/org/jax/oan/service/AnnotationService.java @@ -1,4 +1,4 @@ -package org.jacksonlaboratory.service; +package org.jax.oan.service; import jakarta.inject.Singleton; import org.monarchinitiative.phenol.ontology.data.TermId; diff --git a/oan-rest/src/test/java/org/jacksonlaboratory/OntologyAnnotationNetworkTest.java b/oan-rest/src/test/java/org/jax/oan/OntologyAnnotationNetworkTest.java similarity index 93% rename from oan-rest/src/test/java/org/jacksonlaboratory/OntologyAnnotationNetworkTest.java rename to oan-rest/src/test/java/org/jax/oan/OntologyAnnotationNetworkTest.java index fdbbe7c..dcfd575 100644 --- a/oan-rest/src/test/java/org/jacksonlaboratory/OntologyAnnotationNetworkTest.java +++ b/oan-rest/src/test/java/org/jax/oan/OntologyAnnotationNetworkTest.java @@ -1,4 +1,4 @@ -package org.jacksonlaboratory; +package org.jax.oan; import io.micronaut.runtime.EmbeddedApplication; import io.micronaut.test.extensions.junit5.annotation.MicronautTest; diff --git a/settings.gradle b/settings.gradle index 115a67e..7c6de27 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,4 +2,5 @@ rootProject.name="ontology-annotation-network" include 'oan-rest' include 'oan-etl' +include 'oan-model'