Skip to content

Commit

Permalink
unit test for oan-etl load
Browse files Browse the repository at this point in the history
  • Loading branch information
iimpulse committed Oct 23, 2023
1 parent fc66b9e commit 64b4e54
Show file tree
Hide file tree
Showing 9 changed files with 96 additions and 30 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Micronaut 4.1.2
### Modules

#### OAN-ETL
A module to load our graph data which includes phenotypes, diseases, genes, assays. There
A ontologyModule to load our graph data which includes phenotypes, diseases, genes, assays. There
are multiple loaders for the different ontologies that are supported

Running
Expand All @@ -30,7 +30,7 @@ Testing
```

#### OAN-REST
A module that exposes our graph via a REST-API. This will be used for the hpo web application
A ontologyModule that exposes our graph via a REST-API. This will be used for the hpo web application
and deployed to google cloud.

Running
Expand Down
13 changes: 13 additions & 0 deletions oan-etl/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
id("com.github.johnrengelman.shadow") version "8.1.1"
id("io.micronaut.application") version "4.0.3"
id('jacoco')
}

group = 'org.jacksonlaboratory'
Expand Down Expand Up @@ -52,3 +53,15 @@ micronaut {
annotations("org.jacksonlaboratory.*")
}
}

test {
finalizedBy jacocoTestReport // report is always generated after tests run
}
jacocoTestReport {
dependsOn test // tests are required to run before generating the report
reports {
xml.required = false
csv.required = false
html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import io.micronaut.configuration.picocli.PicocliRunner;
import jakarta.inject.Inject;
import org.jacksonlaboratory.graph.Operations;
import org.jacksonlaboratory.model.Module;
import org.jacksonlaboratory.ontology.HpoGraphLoader;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package org.jacksonlaboratory.graph;

import jakarta.inject.Singleton;
import org.jacksonlaboratory.model.Module;
import org.jacksonlaboratory.model.OntologyModule;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

@Singleton
public class Operations {
private static final Logger logger = LoggerFactory.getLogger(Operations.class);
Expand All @@ -27,9 +25,9 @@ public void truncate(){
}
}

public void createIndexes(Module module){
public void createIndexes(OntologyModule ontologyModule){
Transaction tx = driver.session().beginTransaction();
if (module.equals(Module.HPO)){
if (ontologyModule.equals(OntologyModule.HPO)){
logger.info("Creating Indexes...");
tx.run("CREATE INDEX phenotype_id FOR (n:Phenotype) ON (n.id)");
tx.run("CREATE INDEX disease_id FOR (n:Disease) ON (n.id)");
Expand All @@ -41,9 +39,9 @@ public void createIndexes(Module module){
tx.close();
}

public void dropIndexes(Module module){
public void dropIndexes(OntologyModule ontologyModule){
Transaction tx = driver.session().beginTransaction();
if(module.equals(Module.HPO)){
if(ontologyModule.equals(OntologyModule.HPO)){
logger.info("Dropping Indexes...");
tx.run("DROP INDEX phenotype_id IF EXISTS");
tx.run("DROP INDEX disease_id IF EXISTS");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.jacksonlaboratory.model;

public enum Module {
public enum OntologyModule {
HPO, MAXO

}

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import io.micronaut.context.annotation.Context;
import org.jacksonlaboratory.graph.Operations;
import org.jacksonlaboratory.model.Module;
import org.jacksonlaboratory.model.OntologyModule;
import org.monarchinitiative.phenol.annotations.assoc.MissingPhenolResourceException;
import org.monarchinitiative.phenol.annotations.formats.AnnotationReference;
import org.monarchinitiative.phenol.annotations.formats.hpo.HpoAssociationData;
Expand Down Expand Up @@ -56,12 +56,12 @@ public void load(String folder) throws IOException, MissingPhenolResourceExcepti
final HpoAssociationData associations = HpoAssociationData.builder(hpoOntology).orphaToGenePath(orphaToGenePath).mim2GeneMedgen(omimToGenePath)
.hpoDiseases(diseases).hgncCompleteSetArchive(hgncPath).build();
List<TermId> phenotypes = diseases.stream().flatMap(d -> d.annotationLines().stream().map(HpoAnnotationLine::phenotypeTermId)).distinct().toList();
operations.dropIndexes(Module.HPO);
operations.dropIndexes(OntologyModule.HPO);
try (Session session = driver.session()) {
phenotypes(session, phenotypes, hpoOntology);
diseases(session, diseases);
genes(session, associations);
operations.createIndexes(Module.HPO);
operations.createIndexes(OntologyModule.HPO);
diseaseToPhenotype(session, diseases, hpoOntology);
diseaseToGene(session, associations);
assayToPhenotype(session, loincPath);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.jacksonlaboratory.graph;

import io.micronaut.test.extensions.junit5.annotation.MicronautTest;
import org.jacksonlaboratory.model.OntologyModule;
import org.junit.jupiter.api.Test;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Record;

import java.util.List;
import java.util.stream.Collectors;

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

@MicronautTest
class OperationsTest {

Driver driver;
Operations operations;
public OperationsTest(Driver driver, Operations operations) {
this.driver = driver;
this.operations = operations;
}

@Test
void truncate() {
// Create fake nodes
// expect nodes to be 0.
driver.session().executeWriteWithoutResult(tx -> tx.run("CREATE (sample1),(sample2),(sample3),(sample4),(sample5)"));
int current = driver.session().executeWrite(tx -> tx.run("MATCH (x) RETURN COUNT(x)").single().values().get(0).asInt());
assertEquals(5, current);
operations.truncate();
current = driver.session().executeWrite(tx -> tx.run("MATCH (x) RETURN COUNT(x)").single().values().get(0).asInt());
assertEquals(0, current);
}

@Test
void createAndDropIndexes() {
driver.session().executeWriteWithoutResult(tx ->
tx.run("CREATE (p: Phenotype {id: 'HP:000001'}),(d: Disease {id: 'OMIM:1000'}),(g: Gene {id: 'NCBIGene:30'}),(a: Assay {id: 'LOINC:09103-3'})"));

operations.createIndexes(OntologyModule.HPO);
List<Record> indexes = driver.session().executeWrite(tx -> tx.run("SHOW INDEXES YIELD name, labelsOrTypes, properties, type").list()).stream().filter(r -> r.get("type").asString().equals("RANGE")).collect(Collectors.toList());
assertEquals(4, indexes.size());
operations.dropIndexes(OntologyModule.HPO);
indexes = driver.session().executeWrite(tx -> tx.run("SHOW INDEXES YIELD name, labelsOrTypes, properties, type").list()).stream().filter(r -> r.get("type").asString().equals("RANGE")).collect(Collectors.toList());;
assertEquals(0, indexes.size());
operations.truncate();
}
}
16 changes: 0 additions & 16 deletions oan-etl/src/test/java/org/jacksonlaboratory/model/ModuleTest.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.jacksonlaboratory.model;

import org.junit.jupiter.api.Test;

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

class OntologyModuleTest {

@Test
void values() {
assertEquals(OntologyModule.HPO, OntologyModule.HPO);
assertNotEquals(OntologyModule.HPO, OntologyModule.MAXO);
assertEquals(OntologyModule.values().length, 2);
}

@Test
void valueOf() {
assertEquals(OntologyModule.valueOf("HPO"), OntologyModule.HPO);
assertEquals(OntologyModule.valueOf("MAXO"), OntologyModule.MAXO);
}
}

0 comments on commit 64b4e54

Please sign in to comment.