Enum Class AnnotationRelationBasis

java.lang.Object
java.lang.Enum<AnnotationRelationBasis>
ubic.gemma.model.common.description.AnnotationRelationBasis
All Implemented Interfaces:
Serializable, Comparable<AnnotationRelationBasis>, Constable

public enum AnnotationRelationBasis extends Enum<AnnotationRelationBasis>
How an AnnotationRelation came to be known, ranked best first.

The ranking is the substance of the design, not bookkeeping: an assertion beats an attestation. Somebody stating that a genotype belongs to a disease is different in kind from our having noticed the two annotated together, and a reader that cannot tell them apart will treat a coincidence as a claim.

getRank() exists so precedence is a property of the basis rather than a switch statement each caller writes for itself — the same reason PublicationAssociationSource.getRank() does.

See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class Enum

    Enum.EnumDesc<E>
  • Enum Constant Summary

    Enum Constants
    Enum Constant
    Description
    Nobody asserts it; our own curation attests it by co-occurrence, and the specificity of that co-occurrence is measurable.
    A curator already wrote it, as a Statement on an annotation: 10,040 datasets carry a GENO_0000222 has_genotype statement, 1,829 an RO_0002573 has modifier, 469 a TGEMO_00171 induced by.
    A third-party resource asserts it: MGI's Disease Ontology report, Cellosaurus's disease-list / derived-from-site-list.
    A loaded ontology asserts it as an OWL restriction — CLO's derives from patient having disease and is disease model for, MONDO's in_taxon, CL's part_of into UBERON.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Higher wins.
    boolean
    Whether a relation resting on this basis alone is strong enough to report without corroboration from another.
    Returns the enum constant of this class with the specified name.
    Returns an array containing the constants of this enum class, in the order they are declared.

    Methods inherited from class Object

    getClass, notify, notifyAll, wait, wait, wait
  • Enum Constant Details

    • CURATED

      public static final AnnotationRelationBasis CURATED
      A curator already wrote it, as a Statement on an annotation: 10,040 datasets carry a GENO_0000222 has_genotype statement, 1,829 an RO_0002573 has modifier, 469 a TGEMO_00171 induced by.

      Nothing about these rows is inferred. The relation was recorded as disease model: left ventricular hypertrophy — induced by — aortic banding and has always been in CHARACTERISTIC.PREDICATE/OBJECT; what was missing is any way to ask the question from the other end, because the only index on it is per-experiment. Harvesting these is the highest-value half of this feature and the cheapest.

    • ONTOLOGY

      public static final AnnotationRelationBasis ONTOLOGY
      A loaded ontology asserts it as an OWL restriction — CLO's derives from patient having disease and is disease model for, MONDO's in_taxon, CL's part_of into UBERON.

      Weaker than CURATED only because it is a claim about the term in general rather than about anything Gemma holds, and ontologies disagree with each other. It is stronger than anything counted, and it is the basis that can cover terms our corpus has never seen.

    • EXTERNAL

      public static final AnnotationRelationBasis EXTERNAL
      A third-party resource asserts it: MGI's Disease Ontology report, Cellosaurus's disease-list / derived-from-site-list.

      Ranked below ONTOLOGY because these are gene-level and unranked where our question is value-level: MGI answers Sod1 with Down syndrome and Parkinson disease rather than ALS, and Trp53 with CHARGE syndrome ahead of any malignancy our corpus attests. Useful as corroboration and as a coverage estimate; never on its own as an input to a curation decision.

    • CORPUS

      public static final AnnotationRelationBasis CORPUS
      Nobody asserts it; our own curation attests it by co-occurrence, and the specificity of that co-occurrence is measurable.

      🛑 This is a weak link and must be corroborated. Co-occurrence cannot by itself separate Abca4 null → retinal degeneration (which the genotype really does account for) from C57BL/6J → obesity (diet-induced), CTCF knockdown → Burkitt lymphoma (the lymphoma belongs to the cell line) or FTY720 → EAE (the drug is what is being tested against an immunization-induced disease). Specificity — the fraction of a value's experiments one disease accounts for — demotes all three without a special case, but demoting is not disproving. A relation resting on this basis alone is reported as uncorroborated.

      🛑 And it is self-consuming. The co-occurrence exists because we were overtagging: a whole-experiment disease tag written beside a genotype that already implied it. When that redundant tag stops being written — precisely what the curation agents propose to do, on the grounds that it is inferable — the evidence stops accruing. This basis is a snapshot of past curation practice, so it gets weaker every time curation gets better, and nothing should be built to depend on it alone.

  • Method Details

    • values

      public static AnnotationRelationBasis[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static AnnotationRelationBasis valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • getRank

      public int getRank()
      Higher wins. Absolute values carry no meaning; only the order does, and the gaps leave room for a basis to be slotted in between two existing ones without renumbering.
    • isSelfSufficient

      public boolean isSelfSufficient()
      Whether a relation resting on this basis alone is strong enough to report without corroboration from another.

      Only CORPUS is not: everything else is somebody's claim, while co-occurrence is an observation about how two annotations happen to be distributed.