Skip to content

Commit

Permalink
Merge pull request #464 from monarch-initiative/enhancement/aspect
Browse files Browse the repository at this point in the history
Enhancement/aspect
  • Loading branch information
ielis authored Apr 17, 2024
2 parents 71f2c9c + d543085 commit a24872a
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,7 @@ public final class HpoSubOntologyRootTermIds {
/** {@link TermId} of sub ontology "mode of inheritance" (<code>HP:0000005</code>). */
public static final TermId MODE_OF_INHERITANCE = TermId.of("HP:0000005");

/** {@link TermId} of sub ontology Past medical history (<code>HP:0032443</code>). */
public static final TermId PAST_MEDICAL_HISTORY = TermId.of("HP:0032443");
private HpoSubOntologyRootTermIds(){}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,39 @@
package org.monarchinitiative.phenol.annotations.io.hpo;

import org.monarchinitiative.phenol.ontology.data.TermId;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

import static org.monarchinitiative.phenol.annotations.constants.hpo.HpoClinicalModifierTermIds.CLINICAL_COURSE;
import static org.monarchinitiative.phenol.annotations.constants.hpo.HpoModeOfInheritanceTermIds.INHERITANCE_ROOT;
import static org.monarchinitiative.phenol.annotations.constants.hpo.HpoSubOntologyRootTermIds.*;

/**
* An enum for aspect column of {@link HpoAnnotationLine}.
*/
public enum Aspect {

P,
I,
C,
M;
P(PHENOTYPIC_ABNORMALITY),
I(INHERITANCE_ROOT),
C(CLINICAL_COURSE),
M(CLINICAL_MODIFIER),
H(PAST_MEDICAL_HISTORY);

private final TermId termId;
private static final Map<TermId, Aspect> BY_TERMID = new HashMap<>();


static {
for (Aspect e: values()) {
BY_TERMID.put(e.termId, e);
}
}

Aspect(TermId termId) {
this.termId = termId;
}

public static Optional<Aspect> parse(String aspect) {
switch (aspect.toUpperCase()) {
Expand All @@ -22,8 +45,15 @@ public static Optional<Aspect> parse(String aspect) {
return Optional.of(Aspect.C);
case "M":
return Optional.of(Aspect.M);
case "H":
return Optional.of(Aspect.H);
default:
return Optional.empty();
}
}

public static Optional<Aspect> fromTermId(TermId termId) {
return Optional.ofNullable(BY_TERMID.get(termId));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.monarchinitiative.phenol.annotations.io.hpo;

import org.junit.jupiter.api.Test;
import org.monarchinitiative.phenol.ontology.data.TermId;

import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
import static org.monarchinitiative.phenol.annotations.constants.hpo.HpoClinicalModifierTermIds.CLINICAL_COURSE;
import static org.monarchinitiative.phenol.annotations.constants.hpo.HpoModeOfInheritanceTermIds.INHERITANCE_ROOT;
import static org.monarchinitiative.phenol.annotations.constants.hpo.HpoSubOntologyRootTermIds.*;

public class AspectTest {

@Test
public void test_aspect_from_termId() {
assertThat(Aspect.fromTermId(PHENOTYPIC_ABNORMALITY).get(), equalTo(Aspect.P));
assertThat(Aspect.fromTermId(INHERITANCE_ROOT).get(), equalTo(Aspect.I));
assertThat(Aspect.fromTermId(CLINICAL_COURSE).get(), equalTo(Aspect.C));
assertThat(Aspect.fromTermId(CLINICAL_MODIFIER).get(), equalTo(Aspect.M));
assertThat(Aspect.fromTermId(PAST_MEDICAL_HISTORY).get(), equalTo(Aspect.H));
assertThat(Aspect.fromTermId(TermId.of("HP:0000000")).isEmpty(), equalTo(true));
assertThat(Aspect.H.toString(), equalTo("H"));
}
}

0 comments on commit a24872a

Please sign in to comment.