From f9bac2f6c82cd4dc795d67128baede25fa2cf29d Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Tue, 1 Aug 2023 19:11:01 +0000 Subject: [PATCH 01/19] add fulltext indexing to OntologyStore --- .../__snapshots__/index.test.ts.snap | 2120 +++++++++++++++++ .../OntologyStore/fulltext-indexing.ts | 29 + .../OntologyStore/fulltext-stopwords.ts | 130 + .../OntologyStore/index.test.ts | 37 +- .../OntologyManager/OntologyStore/index.ts | 50 +- .../OntologyStore/indexeddb-schema.ts | 3 + .../OntologyStore/indexeddb-storage.ts | 40 +- 7 files changed, 2364 insertions(+), 45 deletions(-) create mode 100644 packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts create mode 100644 packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap index c86f8f020..eea4ef260 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap @@ -3,6 +3,11 @@ exports[`OntologyStore SO clone_insert_end is among valid subparts of BAC_cloned_genomic_insert 1`] = ` [ { + "fullTextWords": [ + "clone", + "insert", + "end", + ], "id": "http://purl.obolibrary.org/obo/SO_0000103", "lbl": "clone_insert_end", "meta": { @@ -31,6 +36,11 @@ exports[`OntologyStore SO clone_insert_end is among valid subparts of BAC_cloned "type": "CLASS", }, { + "fullTextWords": [ + "clone", + "insert", + "start", + ], "id": "http://purl.obolibrary.org/obo/SO_0000179", "lbl": "clone_insert_start", "meta": { @@ -59,6 +69,10 @@ exports[`OntologyStore SO clone_insert_end is among valid subparts of BAC_cloned "type": "CLASS", }, { + "fullTextWords": [ + "cloned", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0000785", "lbl": "cloned_region", "meta": { @@ -91,6 +105,269 @@ exports[`OntologyStore can load goslim aspergillus 1`] = `187`; exports[`OntologyStore can load goslim generic 1`] = `248`; +exports[`OntologyStore can load goslim generic 2`] = ` +[ + [ + 3, + { + "fullTextWords": [ + "mitotic", + "nuclear", + "division", + ], + "id": "http://purl.obolibrary.org/obo/GO_0140014", + "lbl": "mitotic nuclear division", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://purl.obolibrary.org/obo/IAO_0000233", + "val": "https://github.com/geneontology/go-ontology/issues/19910", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#created_by", + "val": "pg", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#creation_date", + "val": "2017-03-23T14:44:23Z", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "biological_process", + }, + ], + "definition": { + "val": "A mitotic cell cycle process comprising the steps by which the nucleus of a eukaryotic cell divides; the process involves condensation of chromosomal DNA into a highly compacted form. Canonically, mitosis produces two daughter nuclei whose chromosome complement is identical to that of the mother cell.", + "xrefs": [ + "ISBN:0198547684", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_generic", + ], + "synonyms": [ + { + "pred": "hasExactSynonym", + "val": "mitosis", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 2, + { + "fullTextWords": [ + "meiotic", + "nuclear", + "division", + ], + "id": "http://purl.obolibrary.org/obo/GO_0140013", + "lbl": "meiotic nuclear division", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://purl.obolibrary.org/obo/IAO_0000233", + "val": "https://github.com/geneontology/go-ontology/issues/19910", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#created_by", + "val": "pg", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#creation_date", + "val": "2017-03-23T09:40:00Z", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "biological_process", + }, + ], + "definition": { + "val": "One of the two nuclear divisions that occur as part of the meiotic cell cycle.", + "xrefs": [ + "PMID:9334324", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_generic", + ], + "synonyms": [ + { + "pred": "hasExactSynonym", + "val": "meiosis", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 1, + { + "fullTextWords": [ + "mitotic", + "cell", + "cycle", + ], + "id": "http://purl.obolibrary.org/obo/GO_0000278", + "lbl": "mitotic cell cycle", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId", + "val": "GO:0007067", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "biological_process", + }, + ], + "comments": [ + "Note that this term should not be confused with 'GO:0140014 ; mitotic nuclear division'. 'GO:0000278 ; mitotic cell cycle represents the entire mitotic cell cycle, while 'GO:0140014 ; mitotic nuclear division' specifically represents the actual nuclear division step of the mitotic cell cycle.", + ], + "definition": { + "val": "Progression through the phases of the mitotic cell cycle, the most common eukaryotic cell cycle, which canonically comprises four successive phases called G1, S, G2, and M and includes replication of the genome and the subsequent segregation of chromosomes into daughter cells. In some variant cell cycles nuclear replication or nuclear division may not be followed by cell division, or G1 and G2 phases may be absent.", + "xrefs": [ + "GOC:mah", + "ISBN:0815316194", + "Reactome:69278", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_drosophila", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_yeast", + ], + "synonyms": [ + { + "pred": "hasRelatedSynonym", + "val": "mitosis", + }, + ], + "xrefs": [ + { + "val": "Wikipedia:Mitosis", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 1, + { + "fullTextWords": [ + "nuclear", + "chromosome", + ], + "id": "http://purl.obolibrary.org/obo/GO_0000228", + "lbl": "nuclear chromosome", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "cellular_component", + }, + ], + "definition": { + "val": "A chromosome that encodes the nuclear genome and is found in the nucleus of a eukaryotic cell during the cell cycle phases when the nucleus is intact.", + "xrefs": [ + "GOC:dph", + "GOC:mah", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_generic", + ], + "synonyms": [ + { + "pred": "hasNarrowSynonym", + "val": "nuclear interphase chromosome", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 1, + { + "fullTextWords": [ + "nuclear", + "envelope", + ], + "id": "http://purl.obolibrary.org/obo/GO_0005635", + "lbl": "nuclear envelope", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId", + "val": "GO:0005636", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "cellular_component", + }, + ], + "definition": { + "val": "The double lipid bilayer enclosing the nucleus and separating its contents from the rest of the cytoplasm; includes the intermembrane space, a gap of width 20-40 nm (also called the perinuclear space).", + "xrefs": [ + "ISBN:0198547684", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_plant", + ], + "xrefs": [ + { + "val": "Wikipedia:Nuclear_envelope", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 1, + { + "fullTextWords": [ + "results", + "division", + ], + "id": "http://purl.obolibrary.org/obo/GOREL_0001019", + "lbl": "results in division of", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "external", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#shorthand", + "val": "results_in_division_of", + }, + ], + "comments": [ + "use occurs_in", + ], + "xrefs": [ + { + "val": "GOREL:0001019", + }, + ], + }, + }, + ], +] +`; + exports[`OntologyStore can query SO 1`] = `2629`; exports[`OntologyStore can query SO features not part of something else 1`] = `1147`; @@ -98,6 +375,9 @@ exports[`OntologyStore can query SO features not part of something else 1`] = `1 exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` [ { + "fullTextWords": [ + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000704", "lbl": "gene", "meta": { @@ -134,6 +414,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "nuclear", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000087", "lbl": "nuclear_gene", "meta": { @@ -164,6 +448,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mt", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000088", "lbl": "mt_gene", "meta": { @@ -198,6 +486,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "plastid", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000090", "lbl": "plastid_gene", "meta": { @@ -223,6 +515,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "nucleomorph", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000097", "lbl": "nucleomorph_gene", "meta": { @@ -248,6 +544,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "plasmid", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000098", "lbl": "plasmid_gene", "meta": { @@ -273,6 +573,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "proviral", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000099", "lbl": "proviral_gene", "meta": { @@ -298,6 +602,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transposable", + "element", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000111", "lbl": "transposable_element_gene", "meta": { @@ -323,6 +632,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "silenced", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000127", "lbl": "silenced_gene", "meta": { @@ -348,6 +661,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "engineered", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000280", "lbl": "engineered_gene", "meta": { @@ -373,6 +690,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "foreign", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000285", "lbl": "foreign_gene", "meta": { @@ -398,6 +719,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "fusion", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000287", "lbl": "fusion_gene", "meta": { @@ -428,6 +753,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "recombinationally", + "rearranged", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000456", "lbl": "recombinationally_rearranged_gene", "meta": { @@ -453,6 +783,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "trans", + "spliced", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000459", "lbl": "gene_with_trans_spliced_transcript", "meta": { @@ -478,6 +814,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "polycistronic", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000690", "lbl": "gene_with_polycistronic_transcript", "meta": { @@ -503,6 +844,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rescue", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000816", "lbl": "rescue_gene", "meta": { @@ -528,6 +873,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "post", + "translationally", + "regulated", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000890", "lbl": "post_translationally_regulated_gene", "meta": { @@ -553,6 +904,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "negatively", + "autoregulated", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000891", "lbl": "negatively_autoregulated_gene", "meta": { @@ -578,6 +934,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "positively", + "autoregulated", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000892", "lbl": "positively_autoregulated_gene", "meta": { @@ -603,6 +964,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "translationally", + "regulated", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000896", "lbl": "translationally_regulated_gene", "meta": { @@ -628,6 +994,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "epigenetically", + "modified", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000898", "lbl": "epigenetically_modified_gene", "meta": { @@ -653,6 +1024,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transgene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000902", "lbl": "transgene", "meta": { @@ -677,6 +1051,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "predicted", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000996", "lbl": "predicted_gene", "meta": { @@ -699,6 +1077,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "protein", + "coding", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001217", "lbl": "protein_coding_gene", "meta": { @@ -718,6 +1101,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "retrogene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001219", "lbl": "retrogene", "meta": { @@ -731,6 +1117,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ncrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001263", "lbl": "ncRNA_gene", "meta": { @@ -757,6 +1147,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "cryptic", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001431", "lbl": "cryptic_gene", "meta": { @@ -782,6 +1176,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "non", + "canonical", + "start", + "codon", + ], "id": "http://purl.obolibrary.org/obo/SO_0001739", "lbl": "gene_with_non_canonical_start_codon", "meta": { @@ -818,6 +1219,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "candidate", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001867", "lbl": "candidate_gene", "meta": { @@ -858,6 +1263,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "vertebrate", + "immune", + "system", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002121", "lbl": "vertebrate_immune_system_gene", "meta": { @@ -895,6 +1306,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "cassette", + ], "id": "http://purl.obolibrary.org/obo/SO_0005853", "lbl": "gene_cassette", "meta": { @@ -928,6 +1343,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "kinetoplast", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000089", "lbl": "kinetoplast_gene", "meta": { @@ -953,6 +1372,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "apicoplast", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000091", "lbl": "apicoplast_gene", "meta": { @@ -978,6 +1401,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ct", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000092", "lbl": "ct_gene", "meta": { @@ -1007,6 +1434,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "chromoplast", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000093", "lbl": "chromoplast_gene", "meta": { @@ -1032,6 +1463,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "cyanelle", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000094", "lbl": "cyanelle_gene", "meta": { @@ -1057,6 +1492,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "leucoplast", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000095", "lbl": "leucoplast_gene", "meta": { @@ -1082,6 +1521,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "proplastid", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000096", "lbl": "proplastid_gene", "meta": { @@ -1107,6 +1550,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "endogenous", + "retroviral", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000100", "lbl": "endogenous_retroviral_gene", "meta": { @@ -1132,6 +1580,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "engineered", + "foreign", + "transposable", + "element", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000283", "lbl": "engineered_foreign_transposable_element_gene", "meta": { @@ -1157,6 +1612,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "silenced", + "dna", + "modification", + ], "id": "http://purl.obolibrary.org/obo/SO_0000128", "lbl": "gene_silenced_by_DNA_modification", "meta": { @@ -1182,6 +1643,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "silenced", + "rna", + "interference", + ], "id": "http://purl.obolibrary.org/obo/SO_0001224", "lbl": "gene_silenced_by_RNA_interference", "meta": { @@ -1215,6 +1682,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "silenced", + "histone", + "modification", + ], "id": "http://purl.obolibrary.org/obo/SO_0001225", "lbl": "gene_silenced_by_histone_modification", "meta": { @@ -1240,6 +1713,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "engineered", + "foreign", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000281", "lbl": "engineered_foreign_gene", "meta": { @@ -1265,6 +1743,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "engineered", + "fusion", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000288", "lbl": "engineered_fusion_gene", "meta": { @@ -1290,6 +1773,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "recombinationally", + "inverted", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000373", "lbl": "recombinationally_inverted_gene", "meta": { @@ -1315,6 +1803,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "recombinationally", + "rearranged", + "vertebrate", + "immune", + "system", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000941", "lbl": "recombinationally_rearranged_vertebrate_immune_system_gene", "meta": { @@ -1340,6 +1836,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "dicistronic", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000692", "lbl": "gene_with_dicistronic_transcript", "meta": { @@ -1365,6 +1866,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "wild", + "type", + "rescue", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000818", "lbl": "wild_type_rescue_gene", "meta": { @@ -1390,6 +1897,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "rearranged", + "dna", + "level", + ], "id": "http://purl.obolibrary.org/obo/SO_0000138", "lbl": "gene_rearranged_at_DNA_level", "meta": { @@ -1415,6 +1928,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "maternally", + "imprinted", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000888", "lbl": "maternally_imprinted_gene", "meta": { @@ -1440,6 +1958,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "paternally", + "imprinted", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000889", "lbl": "paternally_imprinted_gene", "meta": { @@ -1465,6 +1988,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "allelically", + "excluded", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000897", "lbl": "allelically_excluded_gene", "meta": { @@ -1490,6 +2018,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "floxed", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000363", "lbl": "floxed_gene", "meta": { @@ -1515,6 +2047,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "polyadenylated", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000451", "lbl": "gene_with_polyadenylated_mRNA", "meta": { @@ -1540,6 +2077,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "mrna", + "frameshift", + ], "id": "http://purl.obolibrary.org/obo/SO_0000455", "lbl": "gene_with_mRNA_with_frameshift", "meta": { @@ -1565,6 +2107,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "edited", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000548", "lbl": "gene_with_edited_transcript", "meta": { @@ -1590,6 +2137,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "recoded", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000693", "lbl": "gene_with_recoded_mRNA", "meta": { @@ -1615,6 +2167,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "grna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001264", "lbl": "gRNA_gene", "meta": { @@ -1634,6 +2190,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mirna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001265", "lbl": "miRNA_gene", "meta": { @@ -1665,6 +2225,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "scrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001266", "lbl": "scRNA_gene", "meta": { @@ -1684,6 +2248,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "snorna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001267", "lbl": "snoRNA_gene", "meta": { @@ -1703,6 +2271,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "snrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001268", "lbl": "snRNA_gene", "meta": { @@ -1732,6 +2304,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "srp", + "rna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001269", "lbl": "SRP_RNA_gene", "meta": { @@ -1751,6 +2328,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tmrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001271", "lbl": "tmRNA_gene", "meta": { @@ -1770,6 +2351,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "trna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001272", "lbl": "tRNA_gene", "meta": { @@ -1789,6 +2374,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001637", "lbl": "rRNA_gene", "meta": { @@ -1826,6 +2415,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pirna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001638", "lbl": "piRNA_gene", "meta": { @@ -1859,6 +2452,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rnase", + "p", + "rna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001639", "lbl": "RNase_P_RNA_gene", "meta": { @@ -1892,6 +2491,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rnase", + "mrp", + "rna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001640", "lbl": "RNase_MRP_RNA_gene", "meta": { @@ -1925,6 +2530,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "telomerase", + "rna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001643", "lbl": "telomerase_RNA_gene", "meta": { @@ -1971,6 +2581,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "lncrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002127", "lbl": "lncRNA_gene", "meta": { @@ -2015,6 +2629,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "enzymatic", + "rna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002180", "lbl": "enzymatic_RNA_gene", "meta": { @@ -2045,6 +2664,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "cryptogene", + ], "id": "http://purl.obolibrary.org/obo/SO_1001196", "lbl": "cryptogene", "meta": { @@ -2064,6 +2686,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "start", + "codon", + "cug", + ], "id": "http://purl.obolibrary.org/obo/SO_0001740", "lbl": "gene_with_start_codon_CUG", "meta": { @@ -2100,6 +2728,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "positional", + "candidate", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001868", "lbl": "positional_candidate_gene", "meta": { @@ -2140,6 +2773,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "functional", + "candidate", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001869", "lbl": "functional_candidate_gene", "meta": { @@ -2180,6 +2818,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "immunoglobulin", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002122", "lbl": "immunoglobulin_gene", "meta": { @@ -2220,6 +2862,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "cell", + "receptor", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002133", "lbl": "T_cell_receptor_gene", "meta": { @@ -2253,6 +2900,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "maxicircle", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000654", "lbl": "maxicircle_gene", "meta": { @@ -2282,6 +2933,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "minicircle", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0000975", "lbl": "minicircle_gene", "meta": { @@ -2301,6 +2956,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "silenced", + "dna", + "methylation", + ], "id": "http://purl.obolibrary.org/obo/SO_0000129", "lbl": "gene_silenced_by_DNA_methylation", "meta": { @@ -2330,6 +2991,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "silenced", + "histone", + "methylation", + ], "id": "http://purl.obolibrary.org/obo/SO_0001226", "lbl": "gene_silenced_by_histone_methylation", "meta": { @@ -2355,6 +3022,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "silenced", + "histone", + "deacetylation", + ], "id": "http://purl.obolibrary.org/obo/SO_0001227", "lbl": "gene_silenced_by_histone_deacetylation", "meta": { @@ -2380,6 +3053,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "dicistronic", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000721", "lbl": "gene_with_dicistronic_primary_transcript", "meta": { @@ -2408,6 +3087,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "dicistronic", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000722", "lbl": "gene_with_dicistronic_mRNA", "meta": { @@ -2440,6 +3124,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "stop", + "codon", + "read", + ], "id": "http://purl.obolibrary.org/obo/SO_0000697", "lbl": "gene_with_stop_codon_read_through", "meta": { @@ -2465,6 +3155,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "mrna", + "recoded", + "translational", + "bypass", + ], "id": "http://purl.obolibrary.org/obo/SO_0000711", "lbl": "gene_with_mRNA_recoded_by_translational_bypass", "meta": { @@ -2490,6 +3187,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "transcript", + "translational", + "frameshift", + ], "id": "http://purl.obolibrary.org/obo/SO_0000712", "lbl": "gene_with_transcript_with_translational_frameshift", "meta": { @@ -2515,6 +3218,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "lincrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0001641", "lbl": "lincRNA_gene", "meta": { @@ -2550,6 +3257,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "antisense", + "lncrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002182", "lbl": "antisense_lncRNA_gene", "meta": { @@ -2580,6 +3292,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "sense", + "overlap", + "ncrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002183", "lbl": "sense_overlap_ncRNA_gene", "meta": { @@ -2618,6 +3336,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "sense", + "intronic", + "ncrna", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002184", "lbl": "sense_intronic_ncRNA_gene", "meta": { @@ -2656,6 +3380,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "bidirectional", + "promoter", + "lncrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002185", "lbl": "bidirectional_promoter_lncRNA", "meta": { @@ -2689,6 +3418,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ribozyme", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002181", "lbl": "ribozyme_gene", "meta": { @@ -2719,6 +3452,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ig", + "c", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002123", "lbl": "IG_C_gene", "meta": { @@ -2764,6 +3502,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ig", + "d", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002124", "lbl": "IG_D_gene", "meta": { @@ -2809,6 +3552,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ig", + "j", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002125", "lbl": "IG_J_gene", "meta": { @@ -2854,6 +3602,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ig", + "v", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002126", "lbl": "IG_V_gene", "meta": { @@ -2899,6 +3652,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tr", + "c", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002134", "lbl": "TR_C_Gene", "meta": { @@ -2936,6 +3694,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tr", + "d", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002135", "lbl": "TR_D_Gene", "meta": { @@ -2973,6 +3736,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tr", + "j", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002136", "lbl": "TR_J_Gene", "meta": { @@ -3010,6 +3778,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tr", + "v", + "gene", + ], "id": "http://purl.obolibrary.org/obo/SO_0002137", "lbl": "TR_V_Gene", "meta": { @@ -3047,6 +3820,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "stop", + "codon", + "redefined", + "pyrrolysine", + ], "id": "http://purl.obolibrary.org/obo/SO_0000698", "lbl": "gene_with_stop_codon_redefined_as_pyrrolysine", "meta": { @@ -3072,6 +3852,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "stop", + "codon", + "redefined", + "selenocysteine", + ], "id": "http://purl.obolibrary.org/obo/SO_0000710", "lbl": "gene_with_stop_codon_redefined_as_selenocysteine", "meta": { @@ -3102,6 +3889,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` [ { + "fullTextWords": [ + "gene", + "member", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0000831", "lbl": "gene_member_region", "meta": { @@ -3133,6 +3925,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "component", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0000842", "lbl": "gene_component_region", "meta": { @@ -3155,6 +3952,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000673", "lbl": "transcript", "meta": { @@ -3188,6 +3988,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "functional", + "gene", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0002188", "lbl": "functional_gene_region", "meta": { @@ -3224,6 +4029,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0005836", "lbl": "regulatory_region", "meta": { @@ -3265,6 +4074,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "non", + "transcribed", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0000183", "lbl": "non_transcribed_region", "meta": { @@ -3305,6 +4119,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "fragment", + ], "id": "http://purl.obolibrary.org/obo/SO_0000997", "lbl": "gene_fragment", "meta": { @@ -3327,6 +4145,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tss", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001240", "lbl": "TSS_region", "meta": { @@ -3352,6 +4174,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "intein", + "encoding", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0002026", "lbl": "intein_encoding_region", "meta": { @@ -3382,6 +4209,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "segment", + ], "id": "http://purl.obolibrary.org/obo/SO_3000000", "lbl": "gene_segment", "meta": { @@ -3410,6 +4241,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "polycistronic", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000078", "lbl": "polycistronic_transcript", "meta": { @@ -3435,6 +4270,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transcript", + "translational", + "frameshift", + ], "id": "http://purl.obolibrary.org/obo/SO_0000118", "lbl": "transcript_with_translational_frameshift", "meta": { @@ -3460,6 +4300,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000185", "lbl": "primary_transcript", "meta": { @@ -3505,6 +4349,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mature", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000233", "lbl": "mature_transcript", "meta": { @@ -3541,6 +4389,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transcript", + "bound", + "nucleic", + "acid", + ], "id": "http://purl.obolibrary.org/obo/SO_0000278", "lbl": "transcript_bound_by_nucleic_acid", "meta": { @@ -3569,6 +4423,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transcript", + "bound", + "protein", + ], "id": "http://purl.obolibrary.org/obo/SO_0000279", "lbl": "transcript_bound_by_protein", "meta": { @@ -3597,6 +4456,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "enzymatic", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000372", "lbl": "enzymatic_RNA", "meta": { @@ -3628,6 +4491,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "trans", + "spliced", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000479", "lbl": "trans_spliced_transcript", "meta": { @@ -3665,6 +4533,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "monocistronic", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000665", "lbl": "monocistronic_transcript", "meta": { @@ -3690,6 +4562,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "aberrant", + "processed", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000681", "lbl": "aberrant_processed_transcript", "meta": { @@ -3715,6 +4592,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "edited", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000873", "lbl": "edited_transcript", "meta": { @@ -3740,6 +4621,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "processed", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0001503", "lbl": "processed_transcript", "meta": { @@ -3776,6 +4661,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "predicted", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002138", "lbl": "predicted_transcript", "meta": { @@ -3809,6 +4698,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "alternatively", + "spliced", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_1001187", "lbl": "alternatively_spliced_transcript", "meta": { @@ -3834,6 +4728,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transcription", + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001679", "lbl": "transcription_regulatory_region", "meta": { @@ -3870,6 +4769,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "translation", + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001680", "lbl": "translation_regulatory_region", "meta": { @@ -3903,6 +4807,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "recombination", + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001681", "lbl": "recombination_regulatory_region", "meta": { @@ -3936,6 +4845,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "replication", + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001682", "lbl": "replication_regulatory_region", "meta": { @@ -3977,6 +4891,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "imprinting", + "control", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0002191", "lbl": "imprinting_control_region", "meta": { @@ -4015,6 +4934,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pseudogenic", + "gene", + "segment", + ], "id": "http://purl.obolibrary.org/obo/SO_0001741", "lbl": "pseudogenic_gene_segment", "meta": { @@ -4048,6 +4972,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "dicistronic", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000079", "lbl": "dicistronic_transcript", "meta": { @@ -4073,6 +5001,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "polycistronic", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000631", "lbl": "polycistronic_primary_transcript", "meta": { @@ -4098,6 +5031,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "polycistronic", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000634", "lbl": "polycistronic_mRNA", "meta": { @@ -4132,6 +5069,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "protein", + "coding", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000120", "lbl": "protein_coding_primary_transcript", "meta": { @@ -4167,6 +5110,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "nc", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000483", "lbl": "nc_primary_transcript", "meta": { @@ -4199,6 +5147,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "monocistronic", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000632", "lbl": "monocistronic_primary_transcript", "meta": { @@ -4224,6 +5177,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mini", + "exon", + "donor", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000635", "lbl": "mini_exon_donor_RNA", "meta": { @@ -4253,6 +5212,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "antisense", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000645", "lbl": "antisense_primary_transcript", "meta": { @@ -4281,6 +5245,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "capped", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000861", "lbl": "capped_primary_transcript", "meta": { @@ -4306,6 +5275,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "regional", + "centromere", + "outer", + "repeat", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0001905", "lbl": "regional_centromere_outer_repeat_transcript", "meta": { @@ -4347,6 +5323,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pseudogenic", + "transcript", + "retained", + "intron", + ], "id": "http://purl.obolibrary.org/obo/SO_0002115", "lbl": "pseudogenic_transcript_with_retained_intron", "meta": { @@ -4383,6 +5365,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000234", "lbl": "mRNA", "meta": { @@ -4430,6 +5415,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ncrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000655", "lbl": "ncRNA", "meta": { @@ -4477,6 +5465,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "ribozyme", + ], "id": "http://purl.obolibrary.org/obo/SO_0000374", "lbl": "ribozyme", "meta": { @@ -4514,6 +5505,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "trans", + "spliced", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000872", "lbl": "trans_spliced_mRNA", "meta": { @@ -4539,6 +5535,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "monocistronic", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000633", "lbl": "monocistronic_mRNA", "meta": { @@ -4573,6 +5573,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "edited", + "transcript", + "substitution", + ], "id": "http://purl.obolibrary.org/obo/SO_0000874", "lbl": "edited_transcript_by_A_to_I_substitution", "meta": { @@ -4598,6 +5603,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "edited", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000929", "lbl": "edited_mRNA", "meta": { @@ -4623,6 +5632,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pseudogene", + "processed", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002111", "lbl": "pseudogene_processed_transcript", "meta": { @@ -4659,6 +5673,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "unconfirmed", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002139", "lbl": "unconfirmed_transcript", "meta": { @@ -4696,6 +5714,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "terminator", + ], "id": "http://purl.obolibrary.org/obo/SO_0000141", "lbl": "terminator", "meta": { @@ -4737,6 +5758,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tf", + "binding", + "site", + ], "id": "http://purl.obolibrary.org/obo/SO_0000235", "lbl": "TF_binding_site", "meta": { @@ -4769,6 +5795,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "polya", + "signal", + "sequence", + ], "id": "http://purl.obolibrary.org/obo/SO_0000551", "lbl": "polyA_signal_sequence", "meta": { @@ -4813,6 +5844,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "gene", + "group", + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0000752", "lbl": "gene_group_regulatory_region", "meta": { @@ -4835,6 +5872,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transcriptional", + "cis", + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001055", "lbl": "transcriptional_cis_regulatory_region", "meta": { @@ -4876,6 +5919,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "splicing", + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001056", "lbl": "splicing_regulatory_region", "meta": { @@ -4904,6 +5952,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "cis", + "regulatory", + "frameshift", + "element", + ], "id": "http://purl.obolibrary.org/obo/SO_0001427", "lbl": "cis_regulatory_frameshift_element", "meta": { @@ -4929,6 +5983,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "intronic", + "regulatory", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001492", "lbl": "intronic_regulatory_region", "meta": { @@ -4962,6 +6021,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "transcription", + "pause", + "site", + ], "id": "http://purl.obolibrary.org/obo/SO_0002047", "lbl": "transcription_pause_site", "meta": { @@ -4996,6 +6060,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "response", + "element", + ], "id": "http://purl.obolibrary.org/obo/SO_0002205", "lbl": "response_element", "meta": { @@ -5034,6 +6102,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "attenuator", + ], "id": "http://purl.obolibrary.org/obo/SO_0000140", "lbl": "attenuator", "meta": { @@ -5075,6 +6146,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "recombination", + "enhancer", + ], "id": "http://purl.obolibrary.org/obo/SO_0002059", "lbl": "recombination_enhancer", "meta": { @@ -5109,6 +6184,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "dicistronic", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000716", "lbl": "dicistronic_mRNA", "meta": { @@ -5138,6 +6217,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "dicistronic", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_1001197", "lbl": "dicistronic_primary_transcript", "meta": { @@ -5163,6 +6247,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pre", + "edited", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000932", "lbl": "pre_edited_mRNA", "meta": { @@ -5182,6 +6271,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "coding", + "transcript", + "retained", + "intron", + ], "id": "http://purl.obolibrary.org/obo/SO_0002112", "lbl": "coding_transcript_with_retained_intron", "meta": { @@ -5218,6 +6313,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "nmd", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002114", "lbl": "NMD_transcript", "meta": { @@ -5267,6 +6366,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "scrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000012", "lbl": "scRNA_primary_transcript", "meta": { @@ -5308,6 +6412,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000209", "lbl": "rRNA_primary_transcript", "meta": { @@ -5340,6 +6449,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000210", "lbl": "tRNA_primary_transcript", "meta": { @@ -5365,6 +6479,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "snrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000231", "lbl": "snRNA_primary_transcript", "meta": { @@ -5390,6 +6509,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "snorna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000232", "lbl": "snoRNA_primary_transcript", "meta": { @@ -5415,6 +6539,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tmrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000586", "lbl": "tmRNA_primary_transcript", "meta": { @@ -5448,6 +6577,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "srp", + "rna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000589", "lbl": "SRP_RNA_primary_transcript", "meta": { @@ -5473,6 +6608,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mirna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000647", "lbl": "miRNA_primary_transcript", "meta": { @@ -5518,6 +6658,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tasirna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0001801", "lbl": "tasiRNA_primary_transcript", "meta": { @@ -5551,6 +6696,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "lncrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002035", "lbl": "lncRNA_primary_transcript", "meta": { @@ -5584,6 +6734,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "shrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002038", "lbl": "shRNA_primary_transcript", "meta": { @@ -5617,6 +6772,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "vaultrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002040", "lbl": "vaultRNA_primary_transcript", "meta": { @@ -5650,6 +6810,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "y", + "rna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002042", "lbl": "Y_RNA_primary_transcript", "meta": { @@ -5683,6 +6849,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mrna", + "frameshift", + ], "id": "http://purl.obolibrary.org/obo/SO_0000108", "lbl": "mRNA_with_frameshift", "meta": { @@ -5712,6 +6882,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "exemplar", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000734", "lbl": "exemplar_mRNA", "meta": { @@ -5740,6 +6914,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "capped", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000862", "lbl": "capped_mRNA", "meta": { @@ -5765,6 +6943,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "polyadenylated", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000871", "lbl": "polyadenylated_mRNA", "meta": { @@ -5790,6 +6972,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "consensus", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000995", "lbl": "consensus_mRNA", "meta": { @@ -5812,6 +6998,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "nsd", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002130", "lbl": "NSD_transcript", "meta": { @@ -5845,6 +7035,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "recoded", + "mrna", + ], "id": "http://purl.obolibrary.org/obo/SO_1001261", "lbl": "recoded_mRNA", "meta": { @@ -5870,6 +7064,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "scrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000013", "lbl": "scRNA", "meta": { @@ -5906,6 +7103,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000252", "lbl": "rRNA", "meta": { @@ -5952,6 +7152,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000253", "lbl": "tRNA", "meta": { @@ -6001,6 +7204,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000274", "lbl": "snRNA", "meta": { @@ -6047,6 +7253,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "snorna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000275", "lbl": "snoRNA", "meta": { @@ -6088,6 +7297,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "small", + "regulatory", + "ncrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000370", "lbl": "small_regulatory_ncRNA", "meta": { @@ -6118,6 +7332,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rnase", + "mrp", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000385", "lbl": "RNase_MRP_RNA", "meta": { @@ -6154,6 +7373,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rnase", + "p", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000386", "lbl": "RNase_P_RNA", "meta": { @@ -6190,6 +7414,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "telomerase", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000390", "lbl": "telomerase_RNA", "meta": { @@ -6231,6 +7459,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "vault", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000404", "lbl": "vault_RNA", "meta": { @@ -6272,6 +7504,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "y", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000405", "lbl": "Y_RNA", "meta": { @@ -6313,6 +7549,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rasirna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000454", "lbl": "rasiRNA", "meta": { @@ -6354,6 +7593,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "srp", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000590", "lbl": "SRP_RNA", "meta": { @@ -6398,6 +7641,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "guide", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000602", "lbl": "guide_RNA", "meta": { @@ -6443,6 +7690,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "antisense", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000644", "lbl": "antisense_RNA", "meta": { @@ -6484,6 +7735,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "class", + "ii", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000989", "lbl": "class_II_RNA", "meta": { @@ -6509,6 +7765,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "class", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000990", "lbl": "class_I_RNA", "meta": { @@ -6537,6 +7797,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tasirna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001800", "lbl": "tasiRNA", "meta": { @@ -6570,6 +7833,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "enhancerrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001870", "lbl": "enhancerRNA", "meta": { @@ -6604,6 +7870,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "lnc", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001877", "lbl": "lnc_RNA", "meta": { @@ -6654,6 +7924,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "telomeric", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0001927", "lbl": "telomeric_transcript", "meta": { @@ -6687,6 +7961,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "prirna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002022", "lbl": "priRNA", "meta": { @@ -6722,6 +7999,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "shrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002031", "lbl": "shRNA", "meta": { @@ -6765,6 +8045,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "scarna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002095", "lbl": "scaRNA", "meta": { @@ -6808,6 +8091,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "three", + "prime", + "overlapping", + "ncrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002120", "lbl": "three_prime_overlapping_ncrna", "meta": { @@ -6852,6 +8141,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "cleavage", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0005843", "lbl": "rRNA_cleavage_RNA", "meta": { @@ -6877,6 +8171,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "polymorphic", + "pseudogene", + "processed", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002116", "lbl": "polymorphic_pseudogene_processed_transcript", "meta": { @@ -6913,6 +8213,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "bacterial", + "terminator", + ], "id": "http://purl.obolibrary.org/obo/SO_0000614", "lbl": "bacterial_terminator", "meta": { @@ -6938,6 +8242,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "eukaryotic", + "terminator", + ], "id": "http://purl.obolibrary.org/obo/SO_0000951", "lbl": "eukaryotic_terminator", "meta": { @@ -6957,6 +8265,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pheromone", + "response", + "element", + ], "id": "http://purl.obolibrary.org/obo/SO_0002045", "lbl": "pheromone_response_element", "meta": { @@ -6998,6 +8311,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "operator", + ], "id": "http://purl.obolibrary.org/obo/SO_0000057", "lbl": "operator", "meta": { @@ -7031,6 +8347,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "bacterial", + "rnapol", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0000613", "lbl": "bacterial_RNApol_promoter", "meta": { @@ -7056,6 +8377,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0000167", "lbl": "promoter", "meta": { @@ -7100,6 +8424,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "insulator", + ], "id": "http://purl.obolibrary.org/obo/SO_0000627", "lbl": "insulator", "meta": { @@ -7143,6 +8470,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "crm", + ], "id": "http://purl.obolibrary.org/obo/SO_0000727", "lbl": "CRM", "meta": { @@ -7183,6 +8513,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "promoter", + "targeting", + "sequence", + ], "id": "http://purl.obolibrary.org/obo/SO_0001058", "lbl": "promoter_targeting_sequence", "meta": { @@ -7208,6 +8543,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "isre", + ], "id": "http://purl.obolibrary.org/obo/SO_0001715", "lbl": "ISRE", "meta": { @@ -7244,6 +8582,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "promoter", + "flanking", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0001952", "lbl": "promoter_flanking_region", "meta": { @@ -7277,6 +8620,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "splice", + "enhancer", + ], "id": "http://purl.obolibrary.org/obo/SO_0000344", "lbl": "splice_enhancer", "meta": { @@ -7305,6 +8652,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "nmd", + "polymorphic", + "pseudogene", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002118", "lbl": "NMD_polymorphic_pseudogene_transcript", "meta": { @@ -7345,6 +8698,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "small", + "subunit", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000255", "lbl": "rRNA_small_subunit_primary_transcript", "meta": { @@ -7370,6 +8730,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "large", + "subunit", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000325", "lbl": "rRNA_large_subunit_primary_transcript", "meta": { @@ -7402,6 +8769,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "alanine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000211", "lbl": "alanine_tRNA_primary_transcript", "meta": { @@ -7427,6 +8800,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "arginine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000212", "lbl": "arginine_tRNA_primary_transcript", "meta": { @@ -7452,6 +8831,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "asparagine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000213", "lbl": "asparagine_tRNA_primary_transcript", "meta": { @@ -7477,6 +8862,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "aspartic", + "acid", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000214", "lbl": "aspartic_acid_tRNA_primary_transcript", "meta": { @@ -7502,6 +8894,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "cysteine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000215", "lbl": "cysteine_tRNA_primary_transcript", "meta": { @@ -7527,6 +8925,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "glutamic", + "acid", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000216", "lbl": "glutamic_acid_tRNA_primary_transcript", "meta": { @@ -7552,6 +8957,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "glutamine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000217", "lbl": "glutamine_tRNA_primary_transcript", "meta": { @@ -7577,6 +8988,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "glycine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000218", "lbl": "glycine_tRNA_primary_transcript", "meta": { @@ -7602,6 +9019,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "histidine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000219", "lbl": "histidine_tRNA_primary_transcript", "meta": { @@ -7627,6 +9050,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "isoleucine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000220", "lbl": "isoleucine_tRNA_primary_transcript", "meta": { @@ -7652,6 +9081,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "leucine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000221", "lbl": "leucine_tRNA_primary_transcript", "meta": { @@ -7677,6 +9112,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "lysine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000222", "lbl": "lysine_tRNA_primary_transcript", "meta": { @@ -7702,6 +9143,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "methionine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000223", "lbl": "methionine_tRNA_primary_transcript", "meta": { @@ -7727,6 +9174,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "phenylalanine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000224", "lbl": "phenylalanine_tRNA_primary_transcript", "meta": { @@ -7752,6 +9205,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "proline", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000225", "lbl": "proline_tRNA_primary_transcript", "meta": { @@ -7777,6 +9236,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "serine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000226", "lbl": "serine_tRNA_primary_transcript", "meta": { @@ -7802,6 +9267,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "threonine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000227", "lbl": "threonine_tRNA_primary_transcript", "meta": { @@ -7827,6 +9298,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tryptophan", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000228", "lbl": "tryptophan_tRNA_primary_transcript", "meta": { @@ -7852,6 +9329,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tyrosine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000229", "lbl": "tyrosine_tRNA_primary_transcript", "meta": { @@ -7877,6 +9360,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "valine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000230", "lbl": "valine_tRNA_primary_transcript", "meta": { @@ -7902,6 +9391,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pyrrolysine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0001178", "lbl": "pyrrolysine_tRNA_primary_transcript", "meta": { @@ -7927,6 +9422,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mir", + "encoding", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002037", "lbl": "miR_encoding_tRNA_primary_transcript", "meta": { @@ -7960,6 +9462,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "selenocysteine", + "trna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0005856", "lbl": "selenocysteine_tRNA_primary_transcript", "meta": { @@ -7985,6 +9493,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "methylation", + "guide", + "snorna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000580", "lbl": "methylation_guide_snoRNA_primary_transcript", "meta": { @@ -8010,6 +9525,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "cleavage", + "snorna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000582", "lbl": "rRNA_cleavage_snoRNA_primary_transcript", "meta": { @@ -8035,6 +9557,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "c", + "d", + "box", + "snorna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000595", "lbl": "C_D_box_snoRNA_primary_transcript", "meta": { @@ -8060,6 +9590,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "h", + "aca", + "box", + "snorna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0000596", "lbl": "H_ACA_box_snoRNA_primary_transcript", "meta": { @@ -8085,6 +9623,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mir", + "encoding", + "snorna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002034", "lbl": "miR_encoding_snoRNA_primary_transcript", "meta": { @@ -8118,6 +9663,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u14", + "snorna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0005837", "lbl": "U14_snoRNA_primary_transcript", "meta": { @@ -8147,6 +9698,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mir", + "encoding", + "lncrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002036", "lbl": "miR_encoding_lncRNA_primary_transcript", "meta": { @@ -8180,6 +9738,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "lncrna", + "retained", + "intron", + ], "id": "http://purl.obolibrary.org/obo/SO_0002113", "lbl": "lncRNA_with_retained_intron", "meta": { @@ -8220,6 +9783,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mir", + "encoding", + "shrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002039", "lbl": "miR_encoding_shRNA_primary_transcript", "meta": { @@ -8253,6 +9823,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mir", + "encoding", + "vaultrna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002041", "lbl": "miR_encoding_vaultRNA_primary_transcript", "meta": { @@ -8286,6 +9863,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mir", + "encoding", + "y", + "rna", + "primary", + "transcript", + ], "id": "http://purl.obolibrary.org/obo/SO_0002043", "lbl": "miR_encoding_Y_RNA_primary_transcript", "meta": { @@ -8319,6 +9904,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mrna", + "minus", + "1", + "frameshift", + ], "id": "http://purl.obolibrary.org/obo/SO_0000282", "lbl": "mRNA_with_minus_1_frameshift", "meta": { @@ -8344,6 +9935,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mrna", + "plus", + "1", + "frameshift", + ], "id": "http://purl.obolibrary.org/obo/SO_0000321", "lbl": "mRNA_with_plus_1_frameshift", "meta": { @@ -8369,6 +9966,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mrna", + "plus", + "2", + "frameshift", + ], "id": "http://purl.obolibrary.org/obo/SO_0000329", "lbl": "mRNA_with_plus_2_frameshift", "meta": { @@ -8394,6 +9997,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mrna", + "minus", + "2", + "frameshift", + ], "id": "http://purl.obolibrary.org/obo/SO_0000335", "lbl": "mRNA_with_minus_2_frameshift", "meta": { @@ -8419,6 +10028,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mrna", + "recoded", + "translational", + "bypass", + ], "id": "http://purl.obolibrary.org/obo/SO_1001264", "lbl": "mRNA_recoded_by_translational_bypass", "meta": { @@ -8444,6 +10059,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mrna", + "recoded", + "codon", + "redefinition", + ], "id": "http://purl.obolibrary.org/obo/SO_1001265", "lbl": "mRNA_recoded_by_codon_redefinition", "meta": { @@ -8469,6 +10090,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "small", + "subunit", + "rrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000650", "lbl": "small_subunit_rRNA", "meta": { @@ -8511,6 +10137,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "large", + "subunit", + "rrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000651", "lbl": "large_subunit_rRNA", "meta": { @@ -8553,6 +10184,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mt", + "rrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002128", "lbl": "mt_rRNA", "meta": { @@ -8590,6 +10225,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "alanyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000254", "lbl": "alanyl_tRNA", "meta": { @@ -8623,6 +10262,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "asparaginyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000256", "lbl": "asparaginyl_tRNA", "meta": { @@ -8656,6 +10299,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "aspartyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000257", "lbl": "aspartyl_tRNA", "meta": { @@ -8689,6 +10336,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "cysteinyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000258", "lbl": "cysteinyl_tRNA", "meta": { @@ -8722,6 +10373,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "glutaminyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000259", "lbl": "glutaminyl_tRNA", "meta": { @@ -8755,6 +10410,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "glutamyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000260", "lbl": "glutamyl_tRNA", "meta": { @@ -8788,6 +10447,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "glycyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000261", "lbl": "glycyl_tRNA", "meta": { @@ -8821,6 +10484,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "histidyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000262", "lbl": "histidyl_tRNA", "meta": { @@ -8854,6 +10521,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "isoleucyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000263", "lbl": "isoleucyl_tRNA", "meta": { @@ -8887,6 +10558,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "leucyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000264", "lbl": "leucyl_tRNA", "meta": { @@ -8920,6 +10595,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "lysyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000265", "lbl": "lysyl_tRNA", "meta": { @@ -8953,6 +10632,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "methionyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000266", "lbl": "methionyl_tRNA", "meta": { @@ -8986,6 +10669,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "phenylalanyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000267", "lbl": "phenylalanyl_tRNA", "meta": { @@ -9019,6 +10706,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "prolyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000268", "lbl": "prolyl_tRNA", "meta": { @@ -9052,6 +10743,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "seryl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000269", "lbl": "seryl_tRNA", "meta": { @@ -9085,6 +10780,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "threonyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000270", "lbl": "threonyl_tRNA", "meta": { @@ -9118,6 +10817,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tryptophanyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000271", "lbl": "tryptophanyl_tRNA", "meta": { @@ -9151,6 +10854,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tyrosyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000272", "lbl": "tyrosyl_tRNA", "meta": { @@ -9184,6 +10891,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "valyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000273", "lbl": "valyl_tRNA", "meta": { @@ -9217,6 +10928,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pyrrolysyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000766", "lbl": "pyrrolysyl_tRNA", "meta": { @@ -9250,6 +10965,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "arginyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001036", "lbl": "arginyl_tRNA", "meta": { @@ -9275,6 +10994,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mt", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002129", "lbl": "mt_tRNA", "meta": { @@ -9312,6 +11035,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "selenocysteinyl", + "trna", + ], "id": "http://purl.obolibrary.org/obo/SO_0005857", "lbl": "selenocysteinyl_tRNA", "meta": { @@ -9345,6 +11072,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u1", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000391", "lbl": "U1_snRNA", "meta": { @@ -9399,6 +11130,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u2", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000392", "lbl": "U2_snRNA", "meta": { @@ -9453,6 +11188,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u4", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000393", "lbl": "U4_snRNA", "meta": { @@ -9507,6 +11246,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u4atac", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000394", "lbl": "U4atac_snRNA", "meta": { @@ -9556,6 +11299,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u5", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000395", "lbl": "U5_snRNA", "meta": { @@ -9610,6 +11357,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u6", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000396", "lbl": "U6_snRNA", "meta": { @@ -9664,6 +11415,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u6atac", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000397", "lbl": "U6atac_snRNA", "meta": { @@ -9709,6 +11464,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u11", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000398", "lbl": "U11_snRNA", "meta": { @@ -9763,6 +11522,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "u12", + "snrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000399", "lbl": "U12_snRNA", "meta": { @@ -9817,6 +11580,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "c", + "d", + "box", + "snorna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000593", "lbl": "C_D_box_snoRNA", "meta": { @@ -9853,6 +11622,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "h", + "aca", + "box", + "snorna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000594", "lbl": "H_ACA_box_snoRNA", "meta": { @@ -9886,6 +11661,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mirna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000276", "lbl": "miRNA", "meta": { @@ -9947,6 +11725,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rna", + "6s", + ], "id": "http://purl.obolibrary.org/obo/SO_0000376", "lbl": "RNA_6S", "meta": { @@ -9981,6 +11763,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "csrb", + "rsmb", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000377", "lbl": "CsrB_RsmB_RNA", "meta": { @@ -10010,6 +11797,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "dsra", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000378", "lbl": "DsrA_RNA", "meta": { @@ -10040,6 +11831,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "oxys", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000384", "lbl": "OxyS_RNA", "meta": { @@ -10070,6 +11865,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rpra", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000387", "lbl": "RprA_RNA", "meta": { @@ -10100,6 +11899,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "rre", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000388", "lbl": "RRE_RNA", "meta": { @@ -10125,6 +11928,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "spot", + "42", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000389", "lbl": "spot_42_RNA", "meta": { @@ -10155,6 +11963,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "tmrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000584", "lbl": "tmRNA", "meta": { @@ -10193,6 +12004,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "sirna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000646", "lbl": "siRNA", "meta": { @@ -10234,6 +12048,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "pirna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001035", "lbl": "piRNA", "meta": { @@ -10272,6 +12089,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "type": "CLASS", }, { + "fullTextWords": [ + "mor", + ], "id": "http://purl.obolibrary.org/obo/SO_0002032", "lbl": "moR", "meta": { @@ -10309,6 +12129,9 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "lor", + ], "id": "http://purl.obolibrary.org/obo/SO_0002033", "lbl": "loR", "meta": { @@ -10346,6 +12169,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "micf", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000383", "lbl": "MicF_RNA", "meta": { @@ -10376,6 +12203,9 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "lincrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001463", "lbl": "lincRNA", "meta": { @@ -10412,6 +12242,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "antisense", + "lncrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001904", "lbl": "antisense_lncRNA", "meta": { @@ -10449,6 +12283,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "sense", + "intronic", + "ncrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002131", "lbl": "sense_intronic_ncRNA", "meta": { @@ -10498,6 +12337,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "sense", + "overlap", + "ncrna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002132", "lbl": "sense_overlap_ncRNA", "meta": { @@ -10539,6 +12383,9 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "terra", + ], "id": "http://purl.obolibrary.org/obo/SO_0001923", "lbl": "TERRA", "meta": { @@ -10575,6 +12422,9 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "arret", + ], "id": "http://purl.obolibrary.org/obo/SO_0001924", "lbl": "ARRET", "meta": { @@ -10605,6 +12455,9 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "aria", + ], "id": "http://purl.obolibrary.org/obo/SO_0001925", "lbl": "ARIA", "meta": { @@ -10635,6 +12488,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "anti", + "arret", + ], "id": "http://purl.obolibrary.org/obo/SO_0001926", "lbl": "anti_ARRET", "meta": { @@ -10671,6 +12528,12 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rho", + "dependent", + "bacterial", + "terminator", + ], "id": "http://purl.obolibrary.org/obo/SO_0000981", "lbl": "rho_dependent_bacterial_terminator", "meta": { @@ -10690,6 +12553,12 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rho", + "independent", + "bacterial", + "terminator", + ], "id": "http://purl.obolibrary.org/obo/SO_0000982", "lbl": "rho_independent_bacterial_terminator", "meta": { @@ -10709,6 +12578,14 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "terminator", + "type", + "2", + "rnapol", + "iii", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0000615", "lbl": "terminator_of_type_2_RNApol_III_promoter", "meta": { @@ -10734,6 +12611,13 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "bacterial", + "rnapol", + "promoter", + "sigma", + "70", + ], "id": "http://purl.obolibrary.org/obo/SO_0001671", "lbl": "bacterial_RNApol_promoter_sigma_70", "meta": { @@ -10761,6 +12645,12 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "bacterial", + "rnapol", + "promoter", + "sigma54", + ], "id": "http://purl.obolibrary.org/obo/SO_0001672", "lbl": "bacterial_RNApol_promoter_sigma54", "meta": { @@ -10788,6 +12678,13 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "bacterial", + "rnapol", + "promoter", + "sigma", + "ecf", + ], "id": "http://purl.obolibrary.org/obo/SO_0001913", "lbl": "bacterial_RNApol_promoter_sigma_ecf", "meta": { @@ -10824,6 +12721,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "bidirectional", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0000568", "lbl": "bidirectional_promoter", "meta": { @@ -10849,6 +12750,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rna", + "polymerase", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0001203", "lbl": "RNA_polymerase_promoter", "meta": { @@ -10874,6 +12780,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "constitutive", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0002050", "lbl": "constitutive_promoter", "meta": { @@ -10907,6 +12817,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "inducible", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0002051", "lbl": "inducible_promoter", "meta": { @@ -10940,6 +12854,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "boundary", + "element", + ], "id": "http://purl.obolibrary.org/obo/SO_0002020", "lbl": "boundary_element", "meta": { @@ -10980,6 +12898,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "enhancer", + "blocking", + "element", + ], "id": "http://purl.obolibrary.org/obo/SO_0002190", "lbl": "enhancer_blocking_element", "meta": { @@ -11028,6 +12951,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "locus", + "control", + "region", + ], "id": "http://purl.obolibrary.org/obo/SO_0000037", "lbl": "locus_control_region", "meta": { @@ -11074,6 +13002,9 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "enhancer", + ], "id": "http://purl.obolibrary.org/obo/SO_0000165", "lbl": "enhancer", "meta": { @@ -11114,6 +13045,9 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "silencer", + ], "id": "http://purl.obolibrary.org/obo/SO_0000625", "lbl": "silencer", "meta": { @@ -11151,6 +13085,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "intronic", + "splice", + "enhancer", + ], "id": "http://purl.obolibrary.org/obo/SO_0000320", "lbl": "intronic_splice_enhancer", "meta": { @@ -11176,6 +13115,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "exonic", + "splice", + "enhancer", + ], "id": "http://purl.obolibrary.org/obo/SO_0000683", "lbl": "exonic_splice_enhancer", "meta": { @@ -11201,6 +13145,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "18s", + ], "id": "http://purl.obolibrary.org/obo/SO_0000407", "lbl": "rRNA_18S", "meta": { @@ -11242,6 +13190,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "16s", + ], "id": "http://purl.obolibrary.org/obo/SO_0001000", "lbl": "rRNA_16S", "meta": { @@ -11287,6 +13239,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "5", + "8s", + ], "id": "http://purl.obolibrary.org/obo/SO_0000375", "lbl": "rRNA_5_8S", "meta": { @@ -11332,6 +13289,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "5s", + ], "id": "http://purl.obolibrary.org/obo/SO_0000652", "lbl": "rRNA_5S", "meta": { @@ -11377,6 +13338,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "28s", + ], "id": "http://purl.obolibrary.org/obo/SO_0000653", "lbl": "rRNA_28S", "meta": { @@ -11422,6 +13387,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "23s", + ], "id": "http://purl.obolibrary.org/obo/SO_0001001", "lbl": "rRNA_23S", "meta": { @@ -11462,6 +13431,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "25s", + ], "id": "http://purl.obolibrary.org/obo/SO_0001002", "lbl": "rRNA_25S", "meta": { @@ -11502,6 +13475,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rrna", + "21s", + ], "id": "http://purl.obolibrary.org/obo/SO_0001171", "lbl": "rRNA_21S", "meta": { @@ -11539,6 +13516,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "u14", + "snorna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000403", "lbl": "U14_snoRNA", "meta": { @@ -11587,6 +13568,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "u3", + "snorna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001179", "lbl": "U3_snoRNA", "meta": { @@ -11632,6 +13617,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "methylation", + "guide", + "snorna", + ], "id": "http://purl.obolibrary.org/obo/SO_0005841", "lbl": "methylation_guide_snoRNA", "meta": { @@ -11661,6 +13651,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "pseudouridylation", + "guide", + "snorna", + ], "id": "http://purl.obolibrary.org/obo/SO_0001187", "lbl": "pseudouridylation_guide_snoRNA", "meta": { @@ -11690,6 +13685,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "ref", + "mirna", + ], "id": "http://purl.obolibrary.org/obo/SO_0002166", "lbl": "ref_miRNA", "meta": { @@ -11731,6 +13730,9 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "isomir", + ], "id": "http://purl.obolibrary.org/obo/SO_0002167", "lbl": "isomiR", "meta": { @@ -11758,6 +13760,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "gcvb", + "rna", + ], "id": "http://purl.obolibrary.org/obo/SO_0000379", "lbl": "GcvB_RNA", "meta": { @@ -11788,6 +13794,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rnapol", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0000169", "lbl": "RNApol_I_promoter", "meta": { @@ -11825,6 +13835,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rnapol", + "ii", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0000170", "lbl": "RNApol_II_promoter", "meta": { @@ -11862,6 +13877,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rnapol", + "iii", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0000171", "lbl": "RNApol_III_promoter", "meta": { @@ -11899,6 +13919,12 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "phage", + "rna", + "polymerase", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0001204", "lbl": "Phage_RNA_Polymerase_Promoter", "meta": { @@ -11924,6 +13950,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "enhancer", + "bound", + "factor", + ], "id": "http://purl.obolibrary.org/obo/SO_0000166", "lbl": "enhancer_bound_by_factor", "meta": { @@ -11949,6 +13980,10 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "shadow", + "enhancer", + ], "id": "http://purl.obolibrary.org/obo/SO_0001482", "lbl": "shadow_enhancer", "meta": { @@ -11976,6 +14011,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "intronic", + "splicing", + "silencer", + ], "id": "http://purl.obolibrary.org/obo/SO_0002056", "lbl": "intronic_splicing_silencer", "meta": { @@ -12017,6 +14057,11 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "exonic", + "splicing", + "silencer", + ], "id": "http://purl.obolibrary.org/obo/SO_0002058", "lbl": "exonic_splicing_silencer", "meta": { @@ -12058,6 +14103,12 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rnapol", + "ii", + "core", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0001669", "lbl": "RNApol_II_core_promoter", "meta": { @@ -12091,6 +14142,13 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rnapol", + "iii", + "promoter", + "type", + "1", + ], "id": "http://purl.obolibrary.org/obo/SO_0000617", "lbl": "RNApol_III_promoter_type_1", "meta": { @@ -12110,6 +14168,13 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rnapol", + "iii", + "promoter", + "type", + "2", + ], "id": "http://purl.obolibrary.org/obo/SO_0000618", "lbl": "RNApol_III_promoter_type_2", "meta": { @@ -12133,6 +14198,13 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "rnapol", + "iii", + "promoter", + "type", + "3", + ], "id": "http://purl.obolibrary.org/obo/SO_0000621", "lbl": "RNApol_III_promoter_type_3", "meta": { @@ -12152,6 +14224,12 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "sp6", + "rna", + "polymerase", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0001205", "lbl": "SP6_RNA_Polymerase_Promoter", "meta": { @@ -12177,6 +14255,12 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "t3", + "rna", + "polymerase", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0001206", "lbl": "T3_RNA_Polymerase_Promoter", "meta": { @@ -12202,6 +14286,12 @@ Requested by Thomas Desvignes, Jan 2015.", "type": "CLASS", }, { + "fullTextWords": [ + "t7", + "rna", + "polymerase", + "promoter", + ], "id": "http://purl.obolibrary.org/obo/SO_0001207", "lbl": "T7_RNA_Polymerase_Promoter", "meta": { @@ -12228,3 +14318,33 @@ Requested by Thomas Desvignes, Jan 2015.", }, ] `; + +exports[`OntologyStore can query valid part_of for match 1`] = ` +[ + { + "fullTextWords": [ + "match", + ], + "id": "http://purl.obolibrary.org/obo/SO_0000343", + "lbl": "match", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "sequence", + }, + ], + "definition": { + "val": "A region of sequence, aligned to another sequence with some statistical significance, using an algorithm such as BLAST or SIM4.", + "xrefs": [ + "SO:ke", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/so#SOFA", + ], + }, + "type": "CLASS", + }, +] +`; diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts new file mode 100644 index 000000000..9f2f94aa6 --- /dev/null +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts @@ -0,0 +1,29 @@ +import { genericEnglishStopwords } from './fulltext-stopwords' +import { OntologyDBNode } from './indexeddb-schema' + +function getStringAt(obj: Record, path: string[]) { + let thing = obj + for (const key of path) { + thing = thing[key] as Record + } + return String(thing) +} + +export function stringToWords(text: string) { + return text.split(/[\W_]+/).filter((w) => Boolean(w)) +} + +/** @returns a Set of all the words at the given JSON paths that are not stopwords */ +export function getWords(node: OntologyDBNode, paths: string[][]) { + const wordSet = new Set() + for (const path of paths) { + const text = getStringAt(node, path) + stringToWords(text).forEach((word) => { + const lc = word.toLowerCase() + if (!genericEnglishStopwords.has(lc)) { + wordSet.add(lc) + } + }) + } + return wordSet +} diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts new file mode 100644 index 000000000..659b47c8e --- /dev/null +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts @@ -0,0 +1,130 @@ +/** set of words that should be ignored by fulltext indexing */ +export const genericEnglishStopwords = new Set([ + 'i', + 'me', + 'my', + 'myself', + 'we', + 'our', + 'ours', + 'ourselves', + 'you', + 'your', + 'yours', + 'yourself', + 'yourselves', + 'he', + 'him', + 'his', + 'himself', + 'she', + 'her', + 'hers', + 'herself', + 'it', + 'its', + 'itself', + 'they', + 'them', + 'their', + 'theirs', + 'themselves', + 'what', + 'which', + 'who', + 'whom', + 'this', + 'that', + 'these', + 'those', + 'am', + 'is', + 'are', + 'was', + 'were', + 'be', + 'been', + 'being', + 'have', + 'has', + 'had', + 'having', + 'do', + 'does', + 'did', + 'doing', + 'a', + 'an', + 'the', + 'and', + 'but', + 'if', + 'or', + 'because', + 'as', + 'until', + 'while', + 'of', + 'at', + 'by', + 'for', + 'with', + 'about', + 'against', + 'between', + 'into', + 'through', + 'during', + 'before', + 'after', + 'above', + 'below', + 'to', + 'from', + 'up', + 'down', + 'in', + 'out', + 'on', + 'off', + 'over', + 'under', + 'again', + 'further', + 'then', + 'once', + 'here', + 'there', + 'when', + 'where', + 'why', + 'how', + 'all', + 'any', + 'both', + 'each', + 'few', + 'more', + 'most', + 'other', + 'some', + 'such', + 'no', + 'nor', + 'not', + 'only', + 'own', + 'same', + 'so', + 'than', + 'too', + 'very', + 's', + 't', + 'can', + 'will', + 'just', + 'don', + 'should', + 'now', +]) diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.test.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.test.ts index b34e84d62..4d0dd03ae 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.test.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.test.ts @@ -33,6 +33,10 @@ describe('OntologyStore', () => { ) expect(await goslimGeneric.termCount()).toMatchSnapshot() + + expect( + await goslimGeneric.getTermsByFulltext('mitotic nuclear division'), + ).toMatchSnapshot() }) it('can query SO', async () => { @@ -72,11 +76,7 @@ describe('OntologyStore', () => { ex.push(node) } expect(ex.length).toBeGreaterThan(0) - expect(ex).toMatchInlineSnapshot(` - [ - "http://purl.obolibrary.org/obo/SO_0000039", - ] - `) + expect(ex).toEqual(['http://purl.obolibrary.org/obo/SO_0000039']) }) it('can query valid part_of for match', async () => { const parentTypeTerms = ( @@ -84,32 +84,7 @@ describe('OntologyStore', () => { includeSubclasses: false, }) ).filter(isOntologyClass) - expect(parentTypeTerms).toMatchInlineSnapshot(` - [ - { - "id": "http://purl.obolibrary.org/obo/SO_0000343", - "lbl": "match", - "meta": { - "basicPropertyValues": [ - { - "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", - "val": "sequence", - }, - ], - "definition": { - "val": "A region of sequence, aligned to another sequence with some statistical significance, using an algorithm such as BLAST or SIM4.", - "xrefs": [ - "SO:ke", - ], - }, - "subsets": [ - "http://purl.obolibrary.org/obo/so#SOFA", - ], - }, - "type": "CLASS", - }, - ] - `) + expect(parentTypeTerms).toMatchSnapshot() const subpartTerms = await so.getClassesThat('part_of', parentTypeTerms) expect(subpartTerms.length).toBeGreaterThan(0) }) diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts index 93df94c1d..0b6a0ecbf 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts @@ -6,6 +6,7 @@ import { } from '@jbrowse/core/util' import { IDBPTransaction, IndexNames, StoreNames } from 'idb/with-async-ittr' +import { stringToWords } from './fulltext-indexing' import { OntologyDB, OntologyDBEdge, isDeprecated } from './indexeddb-schema' import { isDatabaseCompletelyLoaded, @@ -59,18 +60,34 @@ async function arrayFromAsync(iter: AsyncIterable) { // ) // } +export interface OntologyStoreOptions { + textIndexing?: { + /** json paths of paths in the nodes to index as full text */ + indexPaths?: string[] + } +} + /** query interface for a specific ontology */ export default class OntologyStore { ontologyName: string ontologyVersion: string sourceLocation: SourceLocation db: ReturnType + options: OntologyStoreOptions + + loadOboGraphJson = loadOboGraphJson - constructor(name: string, version: string, source: SourceLocation) { + constructor( + name: string, + version: string, + source: SourceLocation, + options?: OntologyStoreOptions, + ) { this.ontologyName = name this.ontologyVersion = version this.sourceLocation = source this.db = this.prepareDatabase() + this.options = options ?? {} } /** @@ -136,7 +153,7 @@ export default class OntologyStore { const { sourceType } = this if (sourceType === 'obo-graph-json') { - await loadOboGraphJson(this, db) + await this.loadOboGraphJson(db) } else { throw new Error( `ontology source file ${JSON.stringify( @@ -474,4 +491,33 @@ export default class OntologyStore { const all = await myTx.objectStore('nodes').getAll() return all.filter((term) => !isDeprecated(term)) } + + /** + * @returns array of terms and a count of how many words they matched, as + * `[count, OntologyTerm][]`, sorted by count descending + **/ + async getTermsByFulltext(text: string, tx?: Transaction<['nodes']>) { + const myTx = tx ?? (await this.db).transaction(['nodes']) + const words = stringToWords(text) + const termsAndCounts = new Map() + await Promise.all( + words.map(async (word) => { + const wordResults = await myTx + .objectStore('nodes') + .index('full-text-words') + .getAll(word) + for (const term of wordResults) { + const curr = termsAndCounts.get(term.id) + if (curr) { + curr[0] += 1 + } else { + termsAndCounts.set(term.id, [1, term]) + } + } + }), + ) + + // sort the terms by the number of words they have + return Array.from(termsAndCounts.values()).sort((a, b) => b[0] - a[0]) + } } diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts index 2fb16a245..1b398d738 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts @@ -38,6 +38,7 @@ export interface Meta { export type OntologyDBNode = OboGraphNode & { id: string type: 'CLASS' | 'INDIVIDUAL' | 'PROPERTY' + fullTextWords: string[] } export function isOntologyDBNode(node: OboGraphNode): node is OntologyDBNode { return typeof node.id === 'string' @@ -74,6 +75,8 @@ export interface OntologyDB extends DBSchema { 'by-label': string 'by-type': string 'by-synonym': string + /** full-text index for fast searching by words */ + 'full-text-words': string } } edges: { diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts index c711061f7..97a213ad9 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts @@ -1,6 +1,7 @@ import { openLocation } from '@jbrowse/core/util/io' import { IDBPDatabase, IDBPTransaction, openDB } from 'idb/with-async-ittr' +import { getWords } from './fulltext-indexing' import { OntologyDB, isOntologyDBEdge, @@ -10,7 +11,7 @@ import { GraphDocument } from './obo-graph-json-schema' import OntologyStore from '.' /** schema version we are currently on, used for the IndexedDB schema open call */ -const schemaVersion = 1 +const schemaVersion = 2 export type Database = IDBPDatabase @@ -24,15 +25,21 @@ export async function openDatabase(dbName: string) { newVersion: number | null, transaction: IDBPTransaction< OntologyDB, - ArrayLike<'nodes' | 'edges'>, + ArrayLike<'nodes' | 'edges' | 'meta'>, 'versionchange' >, _event: IDBVersionChangeEvent, ): void { - if (schemaVersion !== 1) { - throw new Error( - 'now that the schemaVersion is past 1, you need to write some upgrade logic here', - ) + if (oldVersion < schemaVersion) { + if (database.objectStoreNames.contains('meta')) { + database.deleteObjectStore('meta') + } + if (database.objectStoreNames.contains('nodes')) { + database.deleteObjectStore('nodes') + } + if (database.objectStoreNames.contains('edges')) { + database.deleteObjectStore('edges') + } } if (!database.objectStoreNames.contains('meta')) { database.createObjectStore('meta') @@ -43,6 +50,9 @@ export async function openDatabase(dbName: string) { nodes.createIndex('by-label', 'lbl') nodes.createIndex('by-type', 'type') nodes.createIndex('by-synonym', ['meta', 'synonyms', 'val']) + nodes.createIndex('full-text-words', 'fullTextWords', { + multiEntry: true, + }) } if (!database.objectStoreNames.contains('edges')) { database.createObjectStore('edges', { autoIncrement: true }) @@ -56,14 +66,14 @@ export async function openDatabase(dbName: string) { } /** load a OBO Graph JSON file into a database */ -export async function loadOboGraphJson(store: OntologyStore, db: Database) { +export async function loadOboGraphJson(this: OntologyStore, db: Database) { const startTime = Date.now() // TODO: using file streaming along with an event-based json parser // instead of JSON.parse and .readFile could probably make this faster // and less memory intensive const oboGraph = JSON.parse( - await openLocation(store.sourceLocation).readFile('utf8'), + await openLocation(this.sourceLocation).readFile('utf8'), ) as GraphDocument const parseTime = Date.now() @@ -84,9 +94,15 @@ export async function loadOboGraphJson(store: OntologyStore, db: Database) { // load nodes const nodeStore = tx.objectStore('nodes') + const fullTextIndexPaths = this.options.textIndexing?.indexPaths + ? this.options.textIndexing?.indexPaths.map((p) => p.split('/')) + : [['lbl']] for (const node of graph.nodes ?? []) { if (isOntologyDBNode(node)) { - await nodeStore.add(node) + await nodeStore.add({ + ...node, + fullTextWords: Array.from(getWords(node, fullTextIndexPaths)), + }) } } @@ -105,9 +121,9 @@ export async function loadOboGraphJson(store: OntologyStore, db: Database) { await tx2.objectStore('meta').add( { ontologyRecord: { - name: store.ontologyName, - version: store.ontologyVersion, - sourceLocation: store.sourceLocation, + name: this.ontologyName, + version: this.ontologyVersion, + sourceLocation: this.sourceLocation, }, graphMeta: graph.meta, timestamp: String(new Date()), From fd17208d12611e5a6918b73af038f9c620b496f6 Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Tue, 1 Aug 2023 19:11:37 +0000 Subject: [PATCH 02/19] update tests to not use inline snapshots inline snapshots are not supported by jest with Prettier 3 and above --- packages/jbrowse-plugin-apollo/package.json | 2 +- .../ApolloSequenceAdapter.test.ts | 12 +- .../ApolloSequenceAdapter.test.ts.snap | 13 + yarn.lock | 1015 ++++++++++------- 4 files changed, 615 insertions(+), 427 deletions(-) create mode 100644 packages/jbrowse-plugin-apollo/src/ApolloSequenceAdapter/__snapshots__/ApolloSequenceAdapter.test.ts.snap diff --git a/packages/jbrowse-plugin-apollo/package.json b/packages/jbrowse-plugin-apollo/package.json index 3114a5eed..5f1b410c9 100644 --- a/packages/jbrowse-plugin-apollo/package.json +++ b/packages/jbrowse-plugin-apollo/package.json @@ -95,7 +95,7 @@ "@types/react-dom": "^18", "cypress": "^12.17.2", "fake-indexeddb": "^4.0.2", - "jest": "^29.0.3", + "jest": "^29.6.2", "jest-fetch-mock": "^3.0.3", "mobx": "^6.6.1", "mobx-react": "^7.2.1", diff --git a/packages/jbrowse-plugin-apollo/src/ApolloSequenceAdapter/ApolloSequenceAdapter.test.ts b/packages/jbrowse-plugin-apollo/src/ApolloSequenceAdapter/ApolloSequenceAdapter.test.ts index 82e3c4815..c693b870d 100644 --- a/packages/jbrowse-plugin-apollo/src/ApolloSequenceAdapter/ApolloSequenceAdapter.test.ts +++ b/packages/jbrowse-plugin-apollo/src/ApolloSequenceAdapter/ApolloSequenceAdapter.test.ts @@ -51,16 +51,6 @@ describe('ApolloSequenceAdapter', () => { {}, ) const featuresArray = await features.pipe(toArray()).toPromise() - expect(featuresArray).toMatchInlineSnapshot(` - [ - { - "end": 30, - "refName": "ctgA", - "seq": "GCGTGCAACAGACTTTCCATGATGCGAGCT", - "start": 0, - "uniqueId": "ctgA 0-30", - }, - ] - `) + expect(featuresArray).toMatchSnapshot() }) }) diff --git a/packages/jbrowse-plugin-apollo/src/ApolloSequenceAdapter/__snapshots__/ApolloSequenceAdapter.test.ts.snap b/packages/jbrowse-plugin-apollo/src/ApolloSequenceAdapter/__snapshots__/ApolloSequenceAdapter.test.ts.snap new file mode 100644 index 000000000..02d5614b0 --- /dev/null +++ b/packages/jbrowse-plugin-apollo/src/ApolloSequenceAdapter/__snapshots__/ApolloSequenceAdapter.test.ts.snap @@ -0,0 +1,13 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ApolloSequenceAdapter can get features 1`] = ` +[ + { + "end": 30, + "refName": "ctgA", + "seq": "GCGTGCAACAGACTTTCCATGATGCGAGCT", + "start": 0, + "uniqueId": "ctgA 0-30", + }, +] +`; diff --git a/yarn.lock b/yarn.lock index 1e752b476..4a812d666 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3197,31 +3197,31 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.0.3": - version: 29.0.3 - resolution: "@jest/console@npm:29.0.3" +"@jest/console@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/console@npm:29.6.1" dependencies: - "@jest/types": ^29.0.3 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.0.3 - jest-util: ^29.0.3 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 - checksum: 1c5f092082c45c5c35ea51e7c75f4ce06a9b4350e44e0d3aa6c586c469a687fb095ab2601f196f147cccd1c4b5cbf4adc885ae83c8af42dfeee5aa518fa0968e + checksum: d0ab23a00947bfb4bff8c0a7e5a7afd16519de16dde3fe7e77b9f13e794c6df7043ecf7fcdde66ac0d2b5fb3262e9cab3d92eaf61f89a12d3b8e3602e06a9902 languageName: node linkType: hard -"@jest/console@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/console@npm:29.6.1" +"@jest/console@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/console@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 + jest-message-util: ^29.6.2 + jest-util: ^29.6.2 slash: ^3.0.0 - checksum: d0ab23a00947bfb4bff8c0a7e5a7afd16519de16dde3fe7e77b9f13e794c6df7043ecf7fcdde66ac0d2b5fb3262e9cab3d92eaf61f89a12d3b8e3602e06a9902 + checksum: 1198667bda0430770c3e9b92681c0ee9f8346394574071c633f306192ac5f08e12972d6a5fdf03eb0d441051c8439bce0f6f9f355dc60d98777a35328331ba2e languageName: node linkType: hard @@ -3266,47 +3266,6 @@ __metadata: languageName: node linkType: hard -"@jest/core@npm:^29.0.3": - version: 29.0.3 - resolution: "@jest/core@npm:29.0.3" - dependencies: - "@jest/console": ^29.0.3 - "@jest/reporters": ^29.0.3 - "@jest/test-result": ^29.0.3 - "@jest/transform": ^29.0.3 - "@jest/types": ^29.0.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - ci-info: ^3.2.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-changed-files: ^29.0.0 - jest-config: ^29.0.3 - jest-haste-map: ^29.0.3 - jest-message-util: ^29.0.3 - jest-regex-util: ^29.0.0 - jest-resolve: ^29.0.3 - jest-resolve-dependencies: ^29.0.3 - jest-runner: ^29.0.3 - jest-runtime: ^29.0.3 - jest-snapshot: ^29.0.3 - jest-util: ^29.0.3 - jest-validate: ^29.0.3 - jest-watcher: ^29.0.3 - micromatch: ^4.0.4 - pretty-format: ^29.0.3 - slash: ^3.0.0 - strip-ansi: ^6.0.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 411a994ae0df96262c911c894b231a3148280ae39cf0a5d1132c126e708925a3aa89d3f75be628260916a5c38c6ee1ce27979cf78171a393f3c3bbac019149d9 - languageName: node - linkType: hard - "@jest/core@npm:^29.6.1": version: 29.6.1 resolution: "@jest/core@npm:29.6.1" @@ -3348,6 +3307,47 @@ __metadata: languageName: node linkType: hard +"@jest/core@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/core@npm:29.6.2" + dependencies: + "@jest/console": ^29.6.2 + "@jest/reporters": ^29.6.2 + "@jest/test-result": ^29.6.2 + "@jest/transform": ^29.6.2 + "@jest/types": ^29.6.1 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + ci-info: ^3.2.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-changed-files: ^29.5.0 + jest-config: ^29.6.2 + jest-haste-map: ^29.6.2 + jest-message-util: ^29.6.2 + jest-regex-util: ^29.4.3 + jest-resolve: ^29.6.2 + jest-resolve-dependencies: ^29.6.2 + jest-runner: ^29.6.2 + jest-runtime: ^29.6.2 + jest-snapshot: ^29.6.2 + jest-util: ^29.6.2 + jest-validate: ^29.6.2 + jest-watcher: ^29.6.2 + micromatch: ^4.0.4 + pretty-format: ^29.6.2 + slash: ^3.0.0 + strip-ansi: ^6.0.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 6bbb3886430248c0092f275b1b946a701406732f7442c04e63e4ee2297c2ec02d8ceeec508a202e08128197699b2bcddbae2c2f74adb2cf30f2f0d7d94a7c2dc + languageName: node + linkType: hard + "@jest/environment@npm:^27.5.1": version: 27.5.1 resolution: "@jest/environment@npm:27.5.1" @@ -3384,6 +3384,18 @@ __metadata: languageName: node linkType: hard +"@jest/environment@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/environment@npm:29.6.2" + dependencies: + "@jest/fake-timers": ^29.6.2 + "@jest/types": ^29.6.1 + "@types/node": "*" + jest-mock: ^29.6.2 + checksum: c7de0e4c0d9166e02d0eb166574e05ec460e1db3b69d6476e63244edd52d7c917e6876af55fe723ff3086f52c0b1869dec60654054735a7a48c9d4ac43af2a25 + languageName: node + linkType: hard + "@jest/expect-utils@npm:^29.0.3": version: 29.0.3 resolution: "@jest/expect-utils@npm:29.0.3" @@ -3402,6 +3414,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/expect-utils@npm:29.6.2" + dependencies: + jest-get-type: ^29.4.3 + checksum: 0decf2009aa3735f9df469e78ce1721c2815e4278439887e0cf0321ca8979541a22515d114a59b2445a6cd70a074b09dc9c00b5e7b3b3feac5174b9c4a78b2e1 + languageName: node + linkType: hard + "@jest/expect@npm:^29.0.3": version: 29.0.3 resolution: "@jest/expect@npm:29.0.3" @@ -3422,6 +3443,16 @@ __metadata: languageName: node linkType: hard +"@jest/expect@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/expect@npm:29.6.2" + dependencies: + expect: ^29.6.2 + jest-snapshot: ^29.6.2 + checksum: bd2d88a4e7c5420079c239afef341ec53dc7e353816cd13acbb42631a31fd321fe58677bb43a4dba851028f4c7e31da7980314e9094cd5b348896cb6cd3d42b2 + languageName: node + linkType: hard + "@jest/fake-timers@npm:^27.5.1": version: 27.5.1 resolution: "@jest/fake-timers@npm:27.5.1" @@ -3464,6 +3495,20 @@ __metadata: languageName: node linkType: hard +"@jest/fake-timers@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/fake-timers@npm:29.6.2" + dependencies: + "@jest/types": ^29.6.1 + "@sinonjs/fake-timers": ^10.0.2 + "@types/node": "*" + jest-message-util: ^29.6.2 + jest-mock: ^29.6.2 + jest-util: ^29.6.2 + checksum: 1abcda02f22d2ba32e178b7ab80a9180235a6c75ec9faef33324627b19a70dad64889a9ea49b8f07230e14a6e683b9120542c6d1d6b2ecaf937f4efde32dad88 + languageName: node + linkType: hard + "@jest/globals@npm:^27.5.1": version: 27.5.1 resolution: "@jest/globals@npm:27.5.1" @@ -3499,6 +3544,18 @@ __metadata: languageName: node linkType: hard +"@jest/globals@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/globals@npm:29.6.2" + dependencies: + "@jest/environment": ^29.6.2 + "@jest/expect": ^29.6.2 + "@jest/types": ^29.6.1 + jest-mock: ^29.6.2 + checksum: aa4a54f19cc025205bc696546940e1fe9c752c2d4d825852088aa76d44677ebba1ec66fabb78e615480cff23a06a70b5a3f893ab5163d901cdfa0d2267870b10 + languageName: node + linkType: hard + "@jest/reporters@npm:^27.5.1": version: 27.5.1 resolution: "@jest/reporters@npm:27.5.1" @@ -3537,16 +3594,16 @@ __metadata: languageName: node linkType: hard -"@jest/reporters@npm:^29.0.3": - version: 29.0.3 - resolution: "@jest/reporters@npm:29.0.3" +"@jest/reporters@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/reporters@npm:29.6.1" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.0.3 - "@jest/test-result": ^29.0.3 - "@jest/transform": ^29.0.3 - "@jest/types": ^29.0.3 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/console": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 @@ -3558,31 +3615,30 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.0.3 - jest-util: ^29.0.3 - jest-worker: ^29.0.3 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 - terminal-link: ^2.0.0 v8-to-istanbul: ^9.0.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - checksum: 43028a8823cb8d58c5219e0471990e0d7e9014ed9ef6f2853076bd9e49a490fc1bcfcf46a4d7b981725da0f31be1496725a4a0edb0149f7c7f54c5d2299dcae1 + checksum: b7dae415f3f6342b4db2671261bbee29af20a829f42135316c3dd548b9ef85290c9bb64a0e3aec4a55486596be1257ac8216a0f8d9794acd43f8b8fb686fc7e3 languageName: node linkType: hard -"@jest/reporters@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/reporters@npm:29.6.1" +"@jest/reporters@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/reporters@npm:29.6.2" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 + "@jest/console": ^29.6.2 + "@jest/test-result": ^29.6.2 + "@jest/transform": ^29.6.2 "@jest/types": ^29.6.1 "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" @@ -3596,9 +3652,9 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 - jest-worker: ^29.6.1 + jest-message-util: ^29.6.2 + jest-util: ^29.6.2 + jest-worker: ^29.6.2 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -3608,7 +3664,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: b7dae415f3f6342b4db2671261bbee29af20a829f42135316c3dd548b9ef85290c9bb64a0e3aec4a55486596be1257ac8216a0f8d9794acd43f8b8fb686fc7e3 + checksum: 7cf880d0730cee7d24ee96928003ef6946bf93423b0ae9a2edb53cae2c231b8ac50ec264f48a73744e3f11ca319cd414edacf99b2e7bf37cd72fe0b362090dd1 languageName: node linkType: hard @@ -3641,17 +3697,6 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^29.0.0": - version: 29.0.0 - resolution: "@jest/source-map@npm:29.0.0" - dependencies: - "@jridgewell/trace-mapping": ^0.3.15 - callsites: ^3.0.0 - graceful-fs: ^4.2.9 - checksum: dd97bc5826cf68d6eb5565383816332f800476232fd12800bd027a259cbf3ef216f1633405f3ad0861dde3b12a7886301798c078b334f6d3012044d43abcf4f6 - languageName: node - linkType: hard - "@jest/source-map@npm:^29.6.0": version: 29.6.0 resolution: "@jest/source-map@npm:29.6.0" @@ -3675,27 +3720,27 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:^29.0.3": - version: 29.0.3 - resolution: "@jest/test-result@npm:29.0.3" +"@jest/test-result@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-result@npm:29.6.1" dependencies: - "@jest/console": ^29.0.3 - "@jest/types": ^29.0.3 + "@jest/console": ^29.6.1 + "@jest/types": ^29.6.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 9cb76090b2b49cc19f95c51e3593085ab88b2d9539f9c15b1e7919f770aaee75376b453f30a14f2034a5cb25fa8e14f5fcc422f05954dbdb0873220576d9c9a0 + checksum: 9397a3a3410c5df564e79297b1be4fe33807a6157a017a1f74b54a6ef14de1530f12b922299e822e66a82c53269da16661772bffde3d883a78c5eefd2cd6d1cc languageName: node linkType: hard -"@jest/test-result@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/test-result@npm:29.6.1" +"@jest/test-result@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/test-result@npm:29.6.2" dependencies: - "@jest/console": ^29.6.1 + "@jest/console": ^29.6.2 "@jest/types": ^29.6.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 9397a3a3410c5df564e79297b1be4fe33807a6157a017a1f74b54a6ef14de1530f12b922299e822e66a82c53269da16661772bffde3d883a78c5eefd2cd6d1cc + checksum: 8aff37f18c8d2df4d9f453d57ec018a6479eb697fabcf74b1ca06e34553da1d7a2b85580a290408ba0b02e58543263244a2cb065c7c7180c8d8180cc78444fbd languageName: node linkType: hard @@ -3711,18 +3756,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.0.3": - version: 29.0.3 - resolution: "@jest/test-sequencer@npm:29.0.3" - dependencies: - "@jest/test-result": ^29.0.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.0.3 - slash: ^3.0.0 - checksum: c6868e29a36c2dd4f6aa71a7148fa7bf34fb845e97b29bc418cb6988245ad7f0cd820aa6dcf9389d0e5b4592b9df8a727a40b0b91eee0dad00f683c250b94a2c - languageName: node - linkType: hard - "@jest/test-sequencer@npm:^29.6.1": version: 29.6.1 resolution: "@jest/test-sequencer@npm:29.6.1" @@ -3735,6 +3768,18 @@ __metadata: languageName: node linkType: hard +"@jest/test-sequencer@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/test-sequencer@npm:29.6.2" + dependencies: + "@jest/test-result": ^29.6.2 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.6.2 + slash: ^3.0.0 + checksum: 12dc2577e45eeb98b85d1769846b7d6effa536907986ad3c4cbd014df9e24431a564cc8cd94603332e4b1f9bfb421371883efc6a5085b361a52425ffc2a52dc6 + languageName: node + linkType: hard + "@jest/transform@npm:^27.5.1": version: 27.5.1 resolution: "@jest/transform@npm:27.5.1" @@ -3804,6 +3849,29 @@ __metadata: languageName: node linkType: hard +"@jest/transform@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/transform@npm:29.6.2" + dependencies: + "@babel/core": ^7.11.6 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.6.2 + jest-regex-util: ^29.4.3 + jest-util: ^29.6.2 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + write-file-atomic: ^4.0.2 + checksum: ffb8c3c344cd48bedadec295d9c436737eccc39c1f0868aa9753b76397b33b2e5b121058af6f287ba6f2036181137e37df1212334bfa9d9a712986a4518cdc18 + languageName: node + linkType: hard + "@jest/types@npm:^27.5.1": version: 27.5.1 resolution: "@jest/types@npm:27.5.1" @@ -7029,28 +7097,28 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.0.3": - version: 29.0.3 - resolution: "babel-jest@npm:29.0.3" +"babel-jest@npm:^29.6.1": + version: 29.6.1 + resolution: "babel-jest@npm:29.6.1" dependencies: - "@jest/transform": ^29.0.3 + "@jest/transform": ^29.6.1 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.0.2 + babel-preset-jest: ^29.5.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 4670945691c204464f7694017d59148b97cdbd51ff91ef492340ef5d6bbc74c461fa698a5feb04a93515300632ed44a55e85500bb61206d8a7ff60afb5b6da48 + checksum: bc46cfba468edde91f34a8292501d4448a39fab72d80d7d95f4349feb114fa21becb01def007d6166de7933ab9633bf5b5e1b72ba6ffeaa991f7abf014a2f61d languageName: node linkType: hard -"babel-jest@npm:^29.6.1": - version: 29.6.1 - resolution: "babel-jest@npm:29.6.1" +"babel-jest@npm:^29.6.2": + version: 29.6.2 + resolution: "babel-jest@npm:29.6.2" dependencies: - "@jest/transform": ^29.6.1 + "@jest/transform": ^29.6.2 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 babel-preset-jest: ^29.5.0 @@ -7059,7 +7127,7 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: bc46cfba468edde91f34a8292501d4448a39fab72d80d7d95f4349feb114fa21becb01def007d6166de7933ab9633bf5b5e1b72ba6ffeaa991f7abf014a2f61d + checksum: 3936b5d6ed6f08670c830ed919e38a4a593d0643b8e30fdeb16f4588b262ea5255fb96fd1849c02fba0b082ecfa4e788ce9a128ad1b9e654d46aac09c3a55504 languageName: node linkType: hard @@ -7115,18 +7183,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.0.2": - version: 29.0.2 - resolution: "babel-plugin-jest-hoist@npm:29.0.2" - dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.1.14 - "@types/babel__traverse": ^7.0.6 - checksum: e02ab2c56b471940bc147d75808f6fb5d18b81382088beb36088d2fee8c5f9699b2a814a98884539191d43871d66770928e09c268c095ec39aad5766c3337f34 - languageName: node - linkType: hard - "babel-plugin-jest-hoist@npm:^29.5.0": version: 29.5.0 resolution: "babel-plugin-jest-hoist@npm:29.5.0" @@ -7249,18 +7305,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.0.2": - version: 29.0.2 - resolution: "babel-preset-jest@npm:29.0.2" - dependencies: - babel-plugin-jest-hoist: ^29.0.2 - babel-preset-current-node-syntax: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 485db525f4cd38c02c29edcd7240dd232e8d6dbcaef88bfa4765ad3057ed733512f1b7aad06f4bf9661afefeb0ada2c4e259d130113b0289d7db574f82bbd4f8 - languageName: node - linkType: hard - "babel-preset-jest@npm:^29.5.0": version: 29.5.0 resolution: "babel-preset-jest@npm:29.5.0" @@ -9000,6 +9044,18 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -9385,13 +9441,6 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.10.2": - version: 0.10.2 - resolution: "emittery@npm:0.10.2" - checksum: ee3e21788b043b90885b18ea756ec3105c1cedc50b29709c92b01e239c7e55345d4bb6d3aef4ddbaf528eef448a40b3bb831bad9ee0fc9c25cbf1367ab1ab5ac - languageName: node - linkType: hard - "emittery@npm:^0.13.1": version: 0.13.1 resolution: "emittery@npm:0.13.1" @@ -10305,6 +10354,20 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.6.2": + version: 29.6.2 + resolution: "expect@npm:29.6.2" + dependencies: + "@jest/expect-utils": ^29.6.2 + "@types/node": "*" + jest-get-type: ^29.4.3 + jest-matcher-utils: ^29.6.2 + jest-message-util: ^29.6.2 + jest-util: ^29.6.2 + checksum: 71f7b0c560e58bf6d27e0fded261d4bdb7ef81552a6bb4bd1ee09ce7a1f7dca67fbf83cf9b07a6645a88ef52e65085a0dcbe17f6c063b53ff7c2f0f3ea4ef69e + languageName: node + linkType: hard + "express-session@npm:^1.17.3": version: 1.17.3 resolution: "express-session@npm:1.17.3" @@ -12459,7 +12522,7 @@ __metadata: file-saver: ^2.0.5 http-proxy-middleware: ^2.0.6 idb: ^7.1.1 - jest: ^29.0.3 + jest: ^29.6.2 jest-fetch-mock: ^3.0.3 mobx: ^6.6.1 mobx-react: ^7.2.1 @@ -12507,16 +12570,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.0.0": - version: 29.0.0 - resolution: "jest-changed-files@npm:29.0.0" - dependencies: - execa: ^5.0.0 - p-limit: ^3.1.0 - checksum: 5642ace8cd1e7e4f9e3ee423b97d0b018b00ad85ea7e5864592b4657e8500ef56ec50d2189229b912223046bbf31c9196c8ef2442a917be9726a5911d40db1b2 - languageName: node - linkType: hard - "jest-changed-files@npm:^29.5.0": version: 29.5.0 resolution: "jest-changed-files@npm:29.5.0" @@ -12554,33 +12607,6 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-circus@npm:29.0.3" - dependencies: - "@jest/environment": ^29.0.3 - "@jest/expect": ^29.0.3 - "@jest/test-result": ^29.0.3 - "@jest/types": ^29.0.3 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - dedent: ^0.7.0 - is-generator-fn: ^2.0.0 - jest-each: ^29.0.3 - jest-matcher-utils: ^29.0.3 - jest-message-util: ^29.0.3 - jest-runtime: ^29.0.3 - jest-snapshot: ^29.0.3 - jest-util: ^29.0.3 - p-limit: ^3.1.0 - pretty-format: ^29.0.3 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 6ba495d4fb68ebb59f269b59029837f55009793d632ba2f29300992de80f7e3a37e619ea4e88676982cf74128416265a5929b3f9b77142fbf27c1dd0d6b6f98c - languageName: node - linkType: hard - "jest-circus@npm:^29.6.1": version: 29.6.1 resolution: "jest-circus@npm:29.6.1" @@ -12609,15 +12635,43 @@ __metadata: languageName: node linkType: hard -"jest-cli@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-cli@npm:27.5.1" +"jest-circus@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-circus@npm:29.6.2" dependencies: - "@jest/core": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/environment": ^29.6.2 + "@jest/expect": ^29.6.2 + "@jest/test-result": ^29.6.2 + "@jest/types": ^29.6.1 + "@types/node": "*" chalk: ^4.0.0 - exit: ^0.1.2 + co: ^4.6.0 + dedent: ^1.0.0 + is-generator-fn: ^2.0.0 + jest-each: ^29.6.2 + jest-matcher-utils: ^29.6.2 + jest-message-util: ^29.6.2 + jest-runtime: ^29.6.2 + jest-snapshot: ^29.6.2 + jest-util: ^29.6.2 + p-limit: ^3.1.0 + pretty-format: ^29.6.2 + pure-rand: ^6.0.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 4f5a96a68c3c808c3d5a9279a2f39a2937386e2cebba5096971f267d79562ce2133a13bc05356a39f8f1ba68fcfe1eb39c4572b3fb0f91affbd932950e89c1e3 + languageName: node + linkType: hard + +"jest-cli@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-cli@npm:27.5.1" + dependencies: + "@jest/core": ^27.5.1 + "@jest/test-result": ^27.5.1 + "@jest/types": ^27.5.1 + chalk: ^4.0.0 + exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 jest-config: ^27.5.1 @@ -12636,20 +12690,20 @@ __metadata: languageName: node linkType: hard -"jest-cli@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-cli@npm:29.0.3" +"jest-cli@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-cli@npm:29.6.1" dependencies: - "@jest/core": ^29.0.3 - "@jest/test-result": ^29.0.3 - "@jest/types": ^29.0.3 + "@jest/core": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.0.3 - jest-util: ^29.0.3 - jest-validate: ^29.0.3 + jest-config: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -12659,24 +12713,24 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 4cd6ed7effcf703c3275bb07231227e32bd2de2dfc84354f0bbd25a2a8b26395570c8902c7dc87b02bed4a57c304a6b48e21a60fa26025b89c1e4e61eae1ea38 + checksum: f5854ffea977b9a12520ea71f8d0cc8a626cbb93d7e1e6eea18a2a1f2b25f70f1b6b08a89f11b4dc7dd36a1776a9ac2cf8ec5c7998086f913ee690c06c07c949 languageName: node linkType: hard -"jest-cli@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-cli@npm:29.6.1" +"jest-cli@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-cli@npm:29.6.2" dependencies: - "@jest/core": ^29.6.1 - "@jest/test-result": ^29.6.1 + "@jest/core": ^29.6.2 + "@jest/test-result": ^29.6.2 "@jest/types": ^29.6.1 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.6.1 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 + jest-config: ^29.6.2 + jest-util: ^29.6.2 + jest-validate: ^29.6.2 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -12686,7 +12740,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: f5854ffea977b9a12520ea71f8d0cc8a626cbb93d7e1e6eea18a2a1f2b25f70f1b6b08a89f11b4dc7dd36a1776a9ac2cf8ec5c7998086f913ee690c06c07c949 + checksum: 0b7b09ae4bd327caf1981eac5a14679ddda3c5c836c9f8ea0ecfe1e5e10e9a39a5ed783fa38d25383604c4d3405595e74b391d955e99aea7e51acb41a59ea108 languageName: node linkType: hard @@ -12727,30 +12781,30 @@ __metadata: languageName: node linkType: hard -"jest-config@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-config@npm:29.0.3" +"jest-config@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-config@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.0.3 - "@jest/types": ^29.0.3 - babel-jest: ^29.0.3 + "@jest/test-sequencer": ^29.6.1 + "@jest/types": ^29.6.1 + babel-jest: ^29.6.1 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.0.3 - jest-environment-node: ^29.0.3 - jest-get-type: ^29.0.0 - jest-regex-util: ^29.0.0 - jest-resolve: ^29.0.3 - jest-runner: ^29.0.3 - jest-util: ^29.0.3 - jest-validate: ^29.0.3 + jest-circus: ^29.6.1 + jest-environment-node: ^29.6.1 + jest-get-type: ^29.4.3 + jest-regex-util: ^29.4.3 + jest-resolve: ^29.6.1 + jest-runner: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.0.3 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -12761,34 +12815,34 @@ __metadata: optional: true ts-node: optional: true - checksum: b2861ebf946e8c332c0526559de7f41d79bbe27731ee4de15add1a2ac8baec160ed572d22e66fd8dae6cde38dbedc9dd0987397021499f7aa44f558da651c65a + checksum: 3a30afeb28cc5658ef9cd95f2551ab8a29641bb6d377eb239cba8e7522eb4611c9a98cdcf173d87f5ad7b5e1ad242c3cd5434a260107bd3c7e8305d05023e05c languageName: node linkType: hard -"jest-config@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-config@npm:29.6.1" +"jest-config@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-config@npm:29.6.2" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.6.1 + "@jest/test-sequencer": ^29.6.2 "@jest/types": ^29.6.1 - babel-jest: ^29.6.1 + babel-jest: ^29.6.2 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.6.1 - jest-environment-node: ^29.6.1 + jest-circus: ^29.6.2 + jest-environment-node: ^29.6.2 jest-get-type: ^29.4.3 jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.1 - jest-runner: ^29.6.1 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 + jest-resolve: ^29.6.2 + jest-runner: ^29.6.2 + jest-util: ^29.6.2 + jest-validate: ^29.6.2 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.6.1 + pretty-format: ^29.6.2 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -12799,7 +12853,7 @@ __metadata: optional: true ts-node: optional: true - checksum: 3a30afeb28cc5658ef9cd95f2551ab8a29641bb6d377eb239cba8e7522eb4611c9a98cdcf173d87f5ad7b5e1ad242c3cd5434a260107bd3c7e8305d05023e05c + checksum: 3bd104a3ac2dd9d34986238142437606354169766dcf88359a7a12ac106d0dc17dcc6b627e4f20db97a58bac5b0502b5436c9cc4722b3629b2a114bba6da9128 languageName: node linkType: hard @@ -12839,21 +12893,24 @@ __metadata: languageName: node linkType: hard -"jest-docblock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-docblock@npm:27.5.1" +"jest-diff@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-diff@npm:29.6.2" dependencies: - detect-newline: ^3.0.0 - checksum: c0fed6d55b229d8bffdd8d03f121dd1a3be77c88f50552d374f9e1ea3bde57bf6bea017a0add04628d98abcb1bfb48b456438eeca8a74ef0053f4dae3b95d29c + chalk: ^4.0.0 + diff-sequences: ^29.4.3 + jest-get-type: ^29.4.3 + pretty-format: ^29.6.2 + checksum: 0effd66a0c23f8c139ebf7ca99ed30b479b86fff66f19ad4869f130aaf7ae6a24ca1533f697b7e4930cbe2ddffc85387723fcca673501c653fb77a38f538e959 languageName: node linkType: hard -"jest-docblock@npm:^29.0.0": - version: 29.0.0 - resolution: "jest-docblock@npm:29.0.0" +"jest-docblock@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-docblock@npm:27.5.1" dependencies: detect-newline: ^3.0.0 - checksum: b4f81426cc0dffb05b873d3cc373a1643040be62d72cce4dfed499fbcb57c55ac02c44af7aba5e7753915ff5e85b8d6030456981156eaea20be1cb57d2719904 + checksum: c0fed6d55b229d8bffdd8d03f121dd1a3be77c88f50552d374f9e1ea3bde57bf6bea017a0add04628d98abcb1bfb48b456438eeca8a74ef0053f4dae3b95d29c languageName: node linkType: hard @@ -12879,19 +12936,6 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-each@npm:29.0.3" - dependencies: - "@jest/types": ^29.0.3 - chalk: ^4.0.0 - jest-get-type: ^29.0.0 - jest-util: ^29.0.3 - pretty-format: ^29.0.3 - checksum: 80c1912eb573a2972e29d9731cfbfa773b010c1416998eca28a90bda4f50de393c60860a2cb1531a4d3e0a0d23698c561a64e8942d48a75023b683136de519cc - languageName: node - linkType: hard - "jest-each@npm:^29.6.1": version: 29.6.1 resolution: "jest-each@npm:29.6.1" @@ -12905,6 +12949,19 @@ __metadata: languageName: node linkType: hard +"jest-each@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-each@npm:29.6.2" + dependencies: + "@jest/types": ^29.6.1 + chalk: ^4.0.0 + jest-get-type: ^29.4.3 + jest-util: ^29.6.2 + pretty-format: ^29.6.2 + checksum: b64194f4ca27afc6070a42b7ecccbc68be0ded19a849f8cd8f91a2abb23fadae2d38d47559a315f4d1f576927761f3ea437a75ab6cf19206332abb8527d7c165 + languageName: node + linkType: hard + "jest-environment-jsdom@npm:^27.5.1": version: 27.5.1 resolution: "jest-environment-jsdom@npm:27.5.1" @@ -12934,20 +12991,6 @@ __metadata: languageName: node linkType: hard -"jest-environment-node@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-environment-node@npm:29.0.3" - dependencies: - "@jest/environment": ^29.0.3 - "@jest/fake-timers": ^29.0.3 - "@jest/types": ^29.0.3 - "@types/node": "*" - jest-mock: ^29.0.3 - jest-util: ^29.0.3 - checksum: 76cd5759cdb08d3a4619004a23cc45fb8d103004b4d3e95451a36b981540c5d56e4f2a5b3cafb8ecf144bf874633ea86118a202e08aec1f445a25caf4081d8bc - languageName: node - linkType: hard - "jest-environment-node@npm:^29.6.1": version: 29.6.1 resolution: "jest-environment-node@npm:29.6.1" @@ -12962,6 +13005,20 @@ __metadata: languageName: node linkType: hard +"jest-environment-node@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-environment-node@npm:29.6.2" + dependencies: + "@jest/environment": ^29.6.2 + "@jest/fake-timers": ^29.6.2 + "@jest/types": ^29.6.1 + "@types/node": "*" + jest-mock: ^29.6.2 + jest-util: ^29.6.2 + checksum: 0b754ac2d3bdb7ce5d6fc28595b9d1c64176f20506b6f773b18b0280ab0b396ed7d927c8519779d3c560fa2b13236ee7077092ccb19a13bea23d40dd30f06450 + languageName: node + linkType: hard + "jest-fetch-mock@npm:^3.0.3": version: 3.0.3 resolution: "jest-fetch-mock@npm:3.0.3" @@ -13063,6 +13120,29 @@ __metadata: languageName: node linkType: hard +"jest-haste-map@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-haste-map@npm:29.6.2" + dependencies: + "@jest/types": ^29.6.1 + "@types/graceful-fs": ^4.1.3 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^29.4.3 + jest-util: ^29.6.2 + jest-worker: ^29.6.2 + micromatch: ^4.0.4 + walker: ^1.0.8 + dependenciesMeta: + fsevents: + optional: true + checksum: 726233972030eb2e5bce6c9468e497310436b455c88b40e744bd053e20a6f3ff19aec340edcbd89537c629ed5cf8916506bc895d690cc39a0862c74dcd95b7b8 + languageName: node + linkType: hard + "jest-jasmine2@npm:^27.5.1": version: 27.5.1 resolution: "jest-jasmine2@npm:27.5.1" @@ -13098,16 +13178,6 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-leak-detector@npm:29.0.3" - dependencies: - jest-get-type: ^29.0.0 - pretty-format: ^29.0.3 - checksum: a1657dbb72f2c3b4a8af148daec491d42eabdadc4e27eb8ec325d5267c21ac958e82e5c8ee679861c2131afd2bdfed4139b806511de7624d93b9838c6fcf5b2e - languageName: node - linkType: hard - "jest-leak-detector@npm:^29.6.1": version: 29.6.1 resolution: "jest-leak-detector@npm:29.6.1" @@ -13118,6 +13188,16 @@ __metadata: languageName: node linkType: hard +"jest-leak-detector@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-leak-detector@npm:29.6.2" + dependencies: + jest-get-type: ^29.4.3 + pretty-format: ^29.6.2 + checksum: e00152acdba8aa8f9334775b77375947508051c34646fbeb702275da2b6ac6145f8cad6d5893112e76484d00fa8c0b4fd71b78ab0b4ef34950f5b6a84f37ae67 + languageName: node + linkType: hard + "jest-matcher-utils@npm:^27.0.0, jest-matcher-utils@npm:^27.5.1": version: 27.5.1 resolution: "jest-matcher-utils@npm:27.5.1" @@ -13154,6 +13234,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-matcher-utils@npm:29.6.2" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.6.2 + jest-get-type: ^29.4.3 + pretty-format: ^29.6.2 + checksum: 3e1b65dd30d05f75fe56dc45fbe4135aec2ff96a3d1e21afbf6a66f3a45a7e29cd0fd37cf80b9564e0381d6205833f77ccaf766c6f7e1aad6b7924d117be504e + languageName: node + linkType: hard + "jest-message-util@npm:^27.5.1": version: 27.5.1 resolution: "jest-message-util@npm:27.5.1" @@ -13205,6 +13297,23 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-message-util@npm:29.6.2" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.6.1 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.6.2 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: e8e3c8d2301e2ca4038ed6df8cbba7fedc6949d1ede4c0e3f1f44f53afb56d77eb35983fa460140d0eadeab99a5f3ae04b703fe77cd7b316b40b361228b5aa1a + languageName: node + linkType: hard + "jest-mock@npm:^27.5.1": version: 27.5.1 resolution: "jest-mock@npm:27.5.1" @@ -13236,6 +13345,17 @@ __metadata: languageName: node linkType: hard +"jest-mock@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-mock@npm:29.6.2" + dependencies: + "@jest/types": ^29.6.1 + "@types/node": "*" + jest-util: ^29.6.2 + checksum: 0bacb5d58441462c0e531ec4d2f7377eecbe21f664d8a460e72f94ba61d22635028931678e7a0f1c3e3f5894973db8e409432f7db4c01283456c8fdbd85f5b3b + languageName: node + linkType: hard + "jest-pnp-resolver@npm:^1.2.2": version: 1.2.2 resolution: "jest-pnp-resolver@npm:1.2.2" @@ -13280,16 +13400,6 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-resolve-dependencies@npm:29.0.3" - dependencies: - jest-regex-util: ^29.0.0 - jest-snapshot: ^29.0.3 - checksum: 43980c0c03a7f00459209315832f03c28d8289ca30ccd8bb6652c87a2c03275aacdba8789177cefc162ceb05218ba3db8bf5a1968920aa4e510cbbefd54f9793 - languageName: node - linkType: hard - "jest-resolve-dependencies@npm:^29.6.1": version: 29.6.1 resolution: "jest-resolve-dependencies@npm:29.6.1" @@ -13300,6 +13410,16 @@ __metadata: languageName: node linkType: hard +"jest-resolve-dependencies@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-resolve-dependencies@npm:29.6.2" + dependencies: + jest-regex-util: ^29.4.3 + jest-snapshot: ^29.6.2 + checksum: d40ee11af2c9d2ef0dbbcf9a5b7dda37c2b86cf4e5de1705795919fd8927907569115c502116ab56de0dca576d5faa31ec9b636240333b6830a568a63004da17 + languageName: node + linkType: hard + "jest-resolve@npm:^27.5.1": version: 27.5.1 resolution: "jest-resolve@npm:27.5.1" @@ -13318,37 +13438,37 @@ __metadata: languageName: node linkType: hard -"jest-resolve@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-resolve@npm:29.0.3" +"jest-resolve@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve@npm:29.6.1" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.0.3 + jest-haste-map: ^29.6.1 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.0.3 - jest-validate: ^29.0.3 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 resolve: ^1.20.0 - resolve.exports: ^1.1.0 + resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 9a774f78decbd9caa863e8c539d439aac76a780ea7acc54e90f2ad9c2000c03294e7f4f38816d16a8aa020ae0e3358845cc8f96fbab5f3e186b00e6e0462bf9b + checksum: 9ce979a0f4a751bea58caea76415112df2a3f4d58e294019872244728aadd001f0ec20c873a3c805dd8f7c762143b3c14d00f87d124ed87c9981fbf8723090ef languageName: node linkType: hard -"jest-resolve@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-resolve@npm:29.6.1" +"jest-resolve@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-resolve@npm:29.6.2" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 + jest-haste-map: ^29.6.2 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 + jest-util: ^29.6.2 + jest-validate: ^29.6.2 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 9ce979a0f4a751bea58caea76415112df2a3f4d58e294019872244728aadd001f0ec20c873a3c805dd8f7c762143b3c14d00f87d124ed87c9981fbf8723090ef + checksum: 01721957e61821a576b2ded043eeab8b392166e0e6d8d680f75657737e2ea7481ff29c2716b866ccd12e743f3a8da465504b1028e78b6a3c68b9561303de7ec8 languageName: node linkType: hard @@ -13381,35 +13501,6 @@ __metadata: languageName: node linkType: hard -"jest-runner@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-runner@npm:29.0.3" - dependencies: - "@jest/console": ^29.0.3 - "@jest/environment": ^29.0.3 - "@jest/test-result": ^29.0.3 - "@jest/transform": ^29.0.3 - "@jest/types": ^29.0.3 - "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.10.2 - graceful-fs: ^4.2.9 - jest-docblock: ^29.0.0 - jest-environment-node: ^29.0.3 - jest-haste-map: ^29.0.3 - jest-leak-detector: ^29.0.3 - jest-message-util: ^29.0.3 - jest-resolve: ^29.0.3 - jest-runtime: ^29.0.3 - jest-util: ^29.0.3 - jest-watcher: ^29.0.3 - jest-worker: ^29.0.3 - p-limit: ^3.1.0 - source-map-support: 0.5.13 - checksum: db62830d1635be5e376fd261e38d37a4855146c9a586ec616cfb64257ef6f79697bd947bbb9751377dc2302626e73d1b77036eafd78ef6f93e1e53ca89c23e3e - languageName: node - linkType: hard - "jest-runner@npm:^29.6.1": version: 29.6.1 resolution: "jest-runner@npm:29.6.1" @@ -13439,6 +13530,35 @@ __metadata: languageName: node linkType: hard +"jest-runner@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-runner@npm:29.6.2" + dependencies: + "@jest/console": ^29.6.2 + "@jest/environment": ^29.6.2 + "@jest/test-result": ^29.6.2 + "@jest/transform": ^29.6.2 + "@jest/types": ^29.6.1 + "@types/node": "*" + chalk: ^4.0.0 + emittery: ^0.13.1 + graceful-fs: ^4.2.9 + jest-docblock: ^29.4.3 + jest-environment-node: ^29.6.2 + jest-haste-map: ^29.6.2 + jest-leak-detector: ^29.6.2 + jest-message-util: ^29.6.2 + jest-resolve: ^29.6.2 + jest-runtime: ^29.6.2 + jest-util: ^29.6.2 + jest-watcher: ^29.6.2 + jest-worker: ^29.6.2 + p-limit: ^3.1.0 + source-map-support: 0.5.13 + checksum: 46bd506a08ddf79628a509aed4105ab74c0b03727a3e24c90bbc2915531860b3da99f7ace2fd9603194440553cffac9cfb1a3b7d0ce03d5fc9c5f2d5ffbb3d3f + languageName: node + linkType: hard + "jest-runtime@npm:^27.5.1": version: 27.5.1 resolution: "jest-runtime@npm:27.5.1" @@ -13469,36 +13589,6 @@ __metadata: languageName: node linkType: hard -"jest-runtime@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-runtime@npm:29.0.3" - dependencies: - "@jest/environment": ^29.0.3 - "@jest/fake-timers": ^29.0.3 - "@jest/globals": ^29.0.3 - "@jest/source-map": ^29.0.0 - "@jest/test-result": ^29.0.3 - "@jest/transform": ^29.0.3 - "@jest/types": ^29.0.3 - "@types/node": "*" - chalk: ^4.0.0 - cjs-module-lexer: ^1.0.0 - collect-v8-coverage: ^1.0.0 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.0.3 - jest-message-util: ^29.0.3 - jest-mock: ^29.0.3 - jest-regex-util: ^29.0.0 - jest-resolve: ^29.0.3 - jest-snapshot: ^29.0.3 - jest-util: ^29.0.3 - slash: ^3.0.0 - strip-bom: ^4.0.0 - checksum: e13bfadfe225e9c06a95809d34e209e1769723c0c3d5913d86e4e748a22777e2bec11a352f2d12ca790e04203a6defc6556f77a3050518ebf6600a454a56fd36 - languageName: node - linkType: hard - "jest-runtime@npm:^29.6.1": version: 29.6.1 resolution: "jest-runtime@npm:29.6.1" @@ -13529,6 +13619,36 @@ __metadata: languageName: node linkType: hard +"jest-runtime@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-runtime@npm:29.6.2" + dependencies: + "@jest/environment": ^29.6.2 + "@jest/fake-timers": ^29.6.2 + "@jest/globals": ^29.6.2 + "@jest/source-map": ^29.6.0 + "@jest/test-result": ^29.6.2 + "@jest/transform": ^29.6.2 + "@jest/types": ^29.6.1 + "@types/node": "*" + chalk: ^4.0.0 + cjs-module-lexer: ^1.0.0 + collect-v8-coverage: ^1.0.0 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.6.2 + jest-message-util: ^29.6.2 + jest-mock: ^29.6.2 + jest-regex-util: ^29.4.3 + jest-resolve: ^29.6.2 + jest-snapshot: ^29.6.2 + jest-util: ^29.6.2 + slash: ^3.0.0 + strip-bom: ^4.0.0 + checksum: 8e7e4486b23b01a9c407313681bed0def39680c2ae21cf01347f111983252ec3a024c56493c5411fed53633f02863eed0816099110cbe04b3889aa5babf1042d + languageName: node + linkType: hard + "jest-serializer@npm:^27.5.1": version: 27.5.1 resolution: "jest-serializer@npm:27.5.1" @@ -13630,6 +13750,34 @@ __metadata: languageName: node linkType: hard +"jest-snapshot@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-snapshot@npm:29.6.2" + dependencies: + "@babel/core": ^7.11.6 + "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 + "@babel/plugin-syntax-typescript": ^7.7.2 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.6.2 + "@jest/transform": ^29.6.2 + "@jest/types": ^29.6.1 + babel-preset-current-node-syntax: ^1.0.0 + chalk: ^4.0.0 + expect: ^29.6.2 + graceful-fs: ^4.2.9 + jest-diff: ^29.6.2 + jest-get-type: ^29.4.3 + jest-matcher-utils: ^29.6.2 + jest-message-util: ^29.6.2 + jest-util: ^29.6.2 + natural-compare: ^1.4.0 + pretty-format: ^29.6.2 + semver: ^7.5.3 + checksum: c1c70a9dbce7fca62ed73ac38234b4ee643e8b667acf71b4417ab67776c1188bb08b8ad450e56a2889ad182903ffd416386fa8082a477724ccf8d8c29a4c6906 + languageName: node + linkType: hard + "jest-util@npm:^27.0.0, jest-util@npm:^27.5.1": version: 27.5.1 resolution: "jest-util@npm:27.5.1" @@ -13672,6 +13820,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-util@npm:29.6.2" + dependencies: + "@jest/types": ^29.6.1 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: 8aedc0c80083d0cabd6c6c4f04dea1cbcac609fd7bc3b1fc05a3999291bd6e63dd52b0c806f9378d5cae28eff5a6191709a4987861001293f8d03e53984adca4 + languageName: node + linkType: hard + "jest-validate@npm:^27.5.1": version: 27.5.1 resolution: "jest-validate@npm:27.5.1" @@ -13686,31 +13848,31 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-validate@npm:29.0.3" +"jest-validate@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-validate@npm:29.6.1" dependencies: - "@jest/types": ^29.0.3 + "@jest/types": ^29.6.1 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^29.0.0 + jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.0.3 - checksum: 096df6a77837155d9b65cd7ff9198489317c53903eb74a7f207e053c0b56204c18b6a8047e168eced291eb550b792ef4ab322b05c7da348af76cd78ea3556b4e + pretty-format: ^29.6.1 + checksum: d2491f3f33d9bbc2dcaaa6acbff26f257b59c5eeceb65a52a9c1cec2f679b836ec2a4658b7004c0ef9d90cd0d9bd664e41d5ed6900f932bea742dd8e6b85e7f1 languageName: node linkType: hard -"jest-validate@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-validate@npm:29.6.1" +"jest-validate@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-validate@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.6.1 - checksum: d2491f3f33d9bbc2dcaaa6acbff26f257b59c5eeceb65a52a9c1cec2f679b836ec2a4658b7004c0ef9d90cd0d9bd664e41d5ed6900f932bea742dd8e6b85e7f1 + pretty-format: ^29.6.2 + checksum: 32648d002189c0ad8a958eace7c6b7d05ea1dc440a1b91e0f22dc1aef489899446ec80b2d527fd13713862d89dfb4606e24a3bf8a10c4ddac3c911e93b7f0374 languageName: node linkType: hard @@ -13729,35 +13891,35 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^29.0.3": - version: 29.0.3 - resolution: "jest-watcher@npm:29.0.3" +"jest-watcher@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-watcher@npm:29.6.1" dependencies: - "@jest/test-result": ^29.0.3 - "@jest/types": ^29.0.3 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - emittery: ^0.10.2 - jest-util: ^29.0.3 + emittery: ^0.13.1 + jest-util: ^29.6.1 string-length: ^4.0.1 - checksum: d585b9dda467d08946357c8ed1f971f15a302f958ccd3f6e2e59df5da245edca91cd4a72329d0126de8ac5793567965e4be1e555c4e40ecadb4f8f14306441bb + checksum: 69bd5a602284fdce6eba5486c5c57aca6b511d91cb0907c34c104d6dd931e18ce67baa7f8e280fa473e5d81ea3e7b9e7d94f712c37ab0b3b8cc2aec30676955d languageName: node linkType: hard -"jest-watcher@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-watcher@npm:29.6.1" +"jest-watcher@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-watcher@npm:29.6.2" dependencies: - "@jest/test-result": ^29.6.1 + "@jest/test-result": ^29.6.2 "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.6.1 + jest-util: ^29.6.2 string-length: ^4.0.1 - checksum: 69bd5a602284fdce6eba5486c5c57aca6b511d91cb0907c34c104d6dd931e18ce67baa7f8e280fa473e5d81ea3e7b9e7d94f712c37ab0b3b8cc2aec30676955d + checksum: 14624190fc8b5fbae466a2ec81458a88c15716d99f042bb4674d53e9623d305cb2905bc1dffeda05fd1a10a05c2a83efe5ac41942477e2b15eaebb08d0aaab32 languageName: node linkType: hard @@ -13806,6 +13968,18 @@ __metadata: languageName: node linkType: hard +"jest-worker@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-worker@npm:29.6.2" + dependencies: + "@types/node": "*" + jest-util: ^29.6.2 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 11035564534bf181ead80b25be138c2d42372bd5626151a3e705200d47a74fd9da3ca79f8a7b15806cdc325ad73c3d21d23acceeed99d50941589ff02915ed38 + languageName: node + linkType: hard + "jest@npm:^27.0.6": version: 27.5.1 resolution: "jest@npm:27.5.1" @@ -13824,14 +13998,14 @@ __metadata: languageName: node linkType: hard -"jest@npm:^29.0.3": - version: 29.0.3 - resolution: "jest@npm:29.0.3" +"jest@npm:^29.6.1": + version: 29.6.1 + resolution: "jest@npm:29.6.1" dependencies: - "@jest/core": ^29.0.3 - "@jest/types": ^29.0.3 + "@jest/core": ^29.6.1 + "@jest/types": ^29.6.1 import-local: ^3.0.2 - jest-cli: ^29.0.3 + jest-cli: ^29.6.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -13839,18 +14013,18 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 6bffa1ec703dbf64ce79aa7ef2887b586fdc96881cf2b83c8e86569237124a17aa001ddd4e7be7877202abe530ee5c04e9f0dd54e7320533b05b90709aca2607 + checksum: 7b8c0ca72f483e00ec19dcf9549f9a9af8ae468ab62925b148d714b58eb52d5fea9a082625193bc833d2d9b64cf65a11f3d37857636c5551af05c10aec4ce71b languageName: node linkType: hard -"jest@npm:^29.6.1": - version: 29.6.1 - resolution: "jest@npm:29.6.1" +"jest@npm:^29.6.2": + version: 29.6.2 + resolution: "jest@npm:29.6.2" dependencies: - "@jest/core": ^29.6.1 + "@jest/core": ^29.6.2 "@jest/types": ^29.6.1 import-local: ^3.0.2 - jest-cli: ^29.6.1 + jest-cli: ^29.6.2 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -13858,7 +14032,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 7b8c0ca72f483e00ec19dcf9549f9a9af8ae468ab62925b148d714b58eb52d5fea9a082625193bc833d2d9b64cf65a11f3d37857636c5551af05c10aec4ce71b + checksum: dd63facd4e6aefc35d2c42acd7e4c9fb0d8fe4705df4b3ccedd953605424d7aa89c88af8cf4c9951752709cac081d29c35b264e1794643d5688ea724ccc9a485 languageName: node linkType: hard @@ -16404,6 +16578,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^29.6.2": + version: 29.6.2 + resolution: "pretty-format@npm:29.6.2" + dependencies: + "@jest/schemas": ^29.6.0 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: a0f972a44f959023c0df9cdfe9eed7540264d7f7ddf74667db8a5294444d5aa153fd47d20327df10ae86964e2ceec10e46ea06b1a5c9c12e02348b78c952c9fc + languageName: node + linkType: hard + "process-es6@npm:^0.11.2, process-es6@npm:^0.11.6": version: 0.11.6 resolution: "process-es6@npm:0.11.6" From 7e68abee35b8de35895001e968fab8def97b0f51 Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Tue, 1 Aug 2023 20:15:39 +0000 Subject: [PATCH 03/19] add prefix matching to fulltext ontology query --- .../OntologyStore/fulltext-indexing.ts | 16 ++-- .../OntologyStore/fulltext-stopwords.ts | 6 ++ .../OntologyManager/OntologyStore/index.ts | 80 +++++++++++++++---- .../OntologyStore/indexeddb-schema.ts | 2 +- .../components/OntologyTermMultiSelect.tsx | 30 ++++--- 5 files changed, 102 insertions(+), 32 deletions(-) diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts index 9f2f94aa6..7750a1fb2 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts @@ -1,4 +1,4 @@ -import { genericEnglishStopwords } from './fulltext-stopwords' +import { stopwords } from './fulltext-stopwords' import { OntologyDBNode } from './indexeddb-schema' function getStringAt(obj: Record, path: string[]) { @@ -9,8 +9,15 @@ function getStringAt(obj: Record, path: string[]) { return String(thing) } +/** + * get the indexable words from a string of text. + * Lowercases the string and filters out stopwords + **/ export function stringToWords(text: string) { - return text.split(/[\W_]+/).filter((w) => Boolean(w)) + return text + .toLowerCase() + .split(/[\W_]+/) + .filter((w) => Boolean(w) && !stopwords.has(w)) } /** @returns a Set of all the words at the given JSON paths that are not stopwords */ @@ -19,10 +26,7 @@ export function getWords(node: OntologyDBNode, paths: string[][]) { for (const path of paths) { const text = getStringAt(node, path) stringToWords(text).forEach((word) => { - const lc = word.toLowerCase() - if (!genericEnglishStopwords.has(lc)) { - wordSet.add(lc) - } + wordSet.add(word) }) } return wordSet diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts index 659b47c8e..15461f21c 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts @@ -128,3 +128,9 @@ export const genericEnglishStopwords = new Set([ 'should', 'now', ]) + +/** + * The set of stopwords we use for fulltext indexing. Currently + * just generic English stopwords, but will likely be expanded over time. + */ +export const stopwords = genericEnglishStopwords diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts index 0b6a0ecbf..52ec6c3a0 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts @@ -2,11 +2,14 @@ import { BlobLocation, LocalPathLocation, UriLocation, + checkAbortSignal, isUriLocation, } from '@jbrowse/core/util' import { IDBPTransaction, IndexNames, StoreNames } from 'idb/with-async-ittr' +import { string } from 'prop-types' import { stringToWords } from './fulltext-indexing' +import { stopwords } from './fulltext-stopwords' import { OntologyDB, OntologyDBEdge, isDeprecated } from './indexeddb-schema' import { isDatabaseCompletelyLoaded, @@ -493,31 +496,78 @@ export default class OntologyStore { } /** - * @returns array of terms and a count of how many words they matched, as - * `[count, OntologyTerm][]`, sorted by count descending + * @returns array of terms and a match score, as + * `[score, OntologyTerm][]`, sorted by score descending **/ - async getTermsByFulltext(text: string, tx?: Transaction<['nodes']>) { + async getTermsByFulltext( + text: string, + tx?: Transaction<['nodes']>, + signal?: AbortSignal, + ) { const myTx = tx ?? (await this.db).transaction(['nodes']) - const words = stringToWords(text) - const termsAndCounts = new Map() - await Promise.all( - words.map(async (word) => { + const queryWords = stringToWords(text) + .map((w) => w.toLowerCase()) + .filter((w) => !stopwords.has(w)) + + const termsAndScores = new (class ScoreSheet extends Map< + string, + [number, OntologyTerm] + > { + incrementScore(term: OntologyTerm, amount: number) { + const curr = this.get(term.id) + if (curr) { + curr[0] += amount + } else { + termsAndScores.set(term.id, [amount, term]) + } + } + })() + + const queries: Promise[] = [] + // find matches of full words, worth 1 point + queries.push( + ...queryWords.map(async (queryWord) => { + checkAbortSignal(signal) const wordResults = await myTx .objectStore('nodes') .index('full-text-words') - .getAll(word) + .getAll(queryWord) for (const term of wordResults) { - const curr = termsAndCounts.get(term.id) - if (curr) { - curr[0] += 1 - } else { - termsAndCounts.set(term.id, [1, term]) + checkAbortSignal(signal) + termsAndScores.incrementScore(term, 1) + } + }), + ) + + // find matches of initial words, worth (match len)/(hit word length) + queries.push( + ...queryWords.map(async (queryWord) => { + checkAbortSignal(signal) + const idx = myTx.objectStore('nodes').index('full-text-words') + for await (const cursor of idx.iterate( + IDBKeyRange.bound(queryWord, `${queryWord}\uffff`, false, false), + )) { + checkAbortSignal(signal) + const term = cursor.value + const matchScores = term.fullTextWords + ?.filter((w) => w.startsWith(queryWord)) + .map((w) => queryWord.length / w.length) + + if (matchScores) { + termsAndScores.incrementScore(term, Math.max(...matchScores)) } } }), ) - // sort the terms by the number of words they have - return Array.from(termsAndCounts.values()).sort((a, b) => b[0] - a[0]) + await Promise.all(queries) + + const results = Array.from(termsAndScores.values()) + // normalize the scores by number of words + for (const result of results) { + result[0] /= queryWords.length + } + // sort the terms by score descending and return + return results.sort((a, b) => b[0] - a[0]) } } diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts index 1b398d738..e9a1cf64e 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts @@ -38,7 +38,7 @@ export interface Meta { export type OntologyDBNode = OboGraphNode & { id: string type: 'CLASS' | 'INDIVIDUAL' | 'PROPERTY' - fullTextWords: string[] + fullTextWords?: string[] } export function isOntologyDBNode(node: OboGraphNode): node is OntologyDBNode { return typeof node.id === 'string' diff --git a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx index 5b6734f00..6834bcd3c 100644 --- a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx +++ b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx @@ -1,4 +1,4 @@ -import { getSession } from '@jbrowse/core/util' +import { getSession, isAbortException } from '@jbrowse/core/util' import { Autocomplete, AutocompleteRenderGetTagProps, @@ -174,16 +174,26 @@ export function OntologyTermMultiSelect({ setLoading(true) - void getOntologyTerms({ input: inputValue, signal }, (results) => { - let newOptions: readonly OntologyTerm[] = [] - if (value.length) { - newOptions = value - } - if (results) { - newOptions = [...newOptions, ...results] - } - setOptions(newOptions) + if (!ontology) { + return undefined + } + const { dataStore } = ontology + if (!dataStore) { + return undefined + } + + ;(async () => { + const matches = await dataStore.getTermsByFulltext( + inputValue, + undefined, + signal, + ) + setOptions(matches.map((m) => m[1]).filter(isOntologyClass)) setLoading(false) + })().catch((error) => { + if (!isAbortException(error)) { + setErrorMessage(String(error)) + } }) return () => { From 4157e89c20b95757069db3ced3b8992f71f314e4 Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Tue, 1 Aug 2023 22:26:47 +0000 Subject: [PATCH 04/19] pay attention to word order in fulltext search --- .../__snapshots__/index.test.ts.snap | 72 ++++----- .../OntologyStore/fulltext-indexing.ts | 33 ---- .../OntologyManager/OntologyStore/fulltext.ts | 143 ++++++++++++++++++ .../OntologyManager/OntologyStore/index.ts | 87 +---------- .../OntologyStore/indexeddb-storage.ts | 2 +- 5 files changed, 186 insertions(+), 151 deletions(-) delete mode 100644 packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts create mode 100644 packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap index eea4ef260..f8d581a99 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap @@ -108,7 +108,7 @@ exports[`OntologyStore can load goslim generic 1`] = `248`; exports[`OntologyStore can load goslim generic 2`] = ` [ [ - 3, + 2.3333333333333335, { "fullTextWords": [ "mitotic", @@ -157,7 +157,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, ], [ - 2, + 1.3333333333333333, { "fullTextWords": [ "meiotic", @@ -205,7 +205,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, ], [ - 1, + 0.3333333333333333, { "fullTextWords": [ "mitotic", @@ -258,7 +258,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, ], [ - 1, + 0.3333333333333333, { "fullTextWords": [ "nuclear", @@ -295,7 +295,38 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, ], [ - 1, + 0.3333333333333333, + { + "fullTextWords": [ + "results", + "division", + ], + "id": "http://purl.obolibrary.org/obo/GOREL_0001019", + "lbl": "results in division of", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "external", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#shorthand", + "val": "results_in_division_of", + }, + ], + "comments": [ + "use occurs_in", + ], + "xrefs": [ + { + "val": "GOREL:0001019", + }, + ], + }, + }, + ], + [ + 0.3333333333333333, { "fullTextWords": [ "nuclear", @@ -334,37 +365,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "type": "CLASS", }, ], - [ - 1, - { - "fullTextWords": [ - "results", - "division", - ], - "id": "http://purl.obolibrary.org/obo/GOREL_0001019", - "lbl": "results in division of", - "meta": { - "basicPropertyValues": [ - { - "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", - "val": "external", - }, - { - "pred": "http://www.geneontology.org/formats/oboInOwl#shorthand", - "val": "results_in_division_of", - }, - ], - "comments": [ - "use occurs_in", - ], - "xrefs": [ - { - "val": "GOREL:0001019", - }, - ], - }, - }, - ], ] `; diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts deleted file mode 100644 index 7750a1fb2..000000000 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-indexing.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { stopwords } from './fulltext-stopwords' -import { OntologyDBNode } from './indexeddb-schema' - -function getStringAt(obj: Record, path: string[]) { - let thing = obj - for (const key of path) { - thing = thing[key] as Record - } - return String(thing) -} - -/** - * get the indexable words from a string of text. - * Lowercases the string and filters out stopwords - **/ -export function stringToWords(text: string) { - return text - .toLowerCase() - .split(/[\W_]+/) - .filter((w) => Boolean(w) && !stopwords.has(w)) -} - -/** @returns a Set of all the words at the given JSON paths that are not stopwords */ -export function getWords(node: OntologyDBNode, paths: string[][]) { - const wordSet = new Set() - for (const path of paths) { - const text = getStringAt(node, path) - stringToWords(text).forEach((word) => { - wordSet.add(word) - }) - } - return wordSet -} diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts new file mode 100644 index 000000000..1c65918df --- /dev/null +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts @@ -0,0 +1,143 @@ +import { checkAbortSignal } from '@jbrowse/core/util' + +import { stopwords } from './fulltext-stopwords' +import { OntologyDBNode } from './indexeddb-schema' +import OntologyStore, { Transaction } from '.' +import { OntologyTerm } from '..' + +function getStringAt(obj: Record, path: string[]) { + let thing = obj + for (const key of path) { + thing = thing[key] as Record + } + return String(thing) +} + +/** + * get the indexable words from a string of text. + * Lowercases the string and filters out stopwords + **/ +export function stringToWords(text: string) { + return text + .toLowerCase() + .split(/[\W_]+/) + .filter((w) => Boolean(w) && !stopwords.has(w)) +} + +/** @returns a Set of all the words at the given JSON paths that are not stopwords */ +export function getWords(node: OntologyDBNode, paths: string[][]) { + const wordSet = new Set() + for (const path of paths) { + const text = getStringAt(node, path) + stringToWords(text).forEach((word) => { + wordSet.add(word) + }) + } + return wordSet +} + +/** + * @returns array of terms and a match score, as + * `[score, OntologyTerm][]`, sorted by score descending + **/ +export async function getTermsByFulltext( + this: OntologyStore, + text: string, + tx?: Transaction<['nodes']>, + signal?: AbortSignal, +) { + const myTx = tx ?? (await this.db).transaction(['nodes']) + const queryWords = stringToWords(text) + .map((w) => w.toLowerCase()) + .filter((w) => !stopwords.has(w)) + + const termsAndScores = new (class ScoreSheet extends Map< + string, + [number, OntologyTerm] + > { + incrementScore(term: OntologyTerm, amount: number) { + const curr = this.get(term.id) + if (curr) { + curr[0] += amount + } else { + termsAndScores.set(term.id, [amount, term]) + } + } + })() + + const queries: Promise[] = [] + + // find startsWith and complete matches + queries.push( + ...queryWords.map(async (queryWord, queryWordIndex) => { + checkAbortSignal(signal) + const idx = myTx.objectStore('nodes').index('full-text-words') + for await (const cursor of idx.iterate( + IDBKeyRange.bound(queryWord, `${queryWord}\uffff`, false, false), + )) { + checkAbortSignal(signal) + const term = cursor.value + const termWords = term.fullTextWords ?? [] + // const matches = term.fullTextWords + // ?.filter((termWord) => termWord.startsWith(queryWord)) + // .map((termWord, te) => queryWord.length / termWord.length) + + type Match = [ + /** matching word index */ + number, + /** match score */ + number, + ] + const matches: Match[] = [] + for (let i = 0; i < termWords.length; i++) { + const termWord = termWords[i] + if (termWord.startsWith(queryWord)) { + const match: Match = [i, queryWord.length / termWord.length] + // check if the previous word also matches and count it 2X if so. + // this should surface matches with the correct word order + if (i > 0 && queryWordIndex > 0) { + const previousQueryWord = queryWords[queryWordIndex - 1] + for (let j = i - 1; j >= 0; j--) { + const previousTermWord = termWords[j] + if (previousTermWord.startsWith(previousQueryWord)) { + match[1] += + 2 * (previousQueryWord.length / previousTermWord.length) + // provide additional bonus if adjacent + if (i - j === 1) { + match[1] += 1 + } + break + } + } + } + matches.push(match) + } + } + + if (matches?.length) { + // score will be between 0 and 1 + termsAndScores.incrementScore( + term, + Math.max(...matches.map((m) => m[1])), + ) + } + } + }), + ) + + await Promise.all(queries) + + const results = Array.from(termsAndScores.values()) + // normalize the scores by number of words + for (const result of results) { + result[0] /= queryWords.length + } + // sort the terms by score descending + results.sort((a, b) => b[0] - a[0]) + + // truncate if necessary + return results.slice( + 0, + this.options.maxSearchResults ?? this.DEFAULT_MAX_SEARCH_RESULTS, + ) +} diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts index 52ec6c3a0..15f18f22a 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts @@ -2,14 +2,11 @@ import { BlobLocation, LocalPathLocation, UriLocation, - checkAbortSignal, isUriLocation, } from '@jbrowse/core/util' import { IDBPTransaction, IndexNames, StoreNames } from 'idb/with-async-ittr' -import { string } from 'prop-types' -import { stringToWords } from './fulltext-indexing' -import { stopwords } from './fulltext-stopwords' +import { getTermsByFulltext } from './fulltext' import { OntologyDB, OntologyDBEdge, isDeprecated } from './indexeddb-schema' import { isDatabaseCompletelyLoaded, @@ -27,7 +24,7 @@ import { export type SourceLocation = UriLocation | LocalPathLocation | BlobLocation /** type alias for a Transaction on this particular DB schema */ -type Transaction< +export type Transaction< TxStores extends ArrayLike> = ArrayLike< StoreNames >, @@ -68,6 +65,7 @@ export interface OntologyStoreOptions { /** json paths of paths in the nodes to index as full text */ indexPaths?: string[] } + maxSearchResults?: number } /** query interface for a specific ontology */ @@ -79,6 +77,9 @@ export default class OntologyStore { options: OntologyStoreOptions loadOboGraphJson = loadOboGraphJson + getTermsByFulltext = getTermsByFulltext + + readonly DEFAULT_MAX_SEARCH_RESULTS = 100 constructor( name: string, @@ -494,80 +495,4 @@ export default class OntologyStore { const all = await myTx.objectStore('nodes').getAll() return all.filter((term) => !isDeprecated(term)) } - - /** - * @returns array of terms and a match score, as - * `[score, OntologyTerm][]`, sorted by score descending - **/ - async getTermsByFulltext( - text: string, - tx?: Transaction<['nodes']>, - signal?: AbortSignal, - ) { - const myTx = tx ?? (await this.db).transaction(['nodes']) - const queryWords = stringToWords(text) - .map((w) => w.toLowerCase()) - .filter((w) => !stopwords.has(w)) - - const termsAndScores = new (class ScoreSheet extends Map< - string, - [number, OntologyTerm] - > { - incrementScore(term: OntologyTerm, amount: number) { - const curr = this.get(term.id) - if (curr) { - curr[0] += amount - } else { - termsAndScores.set(term.id, [amount, term]) - } - } - })() - - const queries: Promise[] = [] - // find matches of full words, worth 1 point - queries.push( - ...queryWords.map(async (queryWord) => { - checkAbortSignal(signal) - const wordResults = await myTx - .objectStore('nodes') - .index('full-text-words') - .getAll(queryWord) - for (const term of wordResults) { - checkAbortSignal(signal) - termsAndScores.incrementScore(term, 1) - } - }), - ) - - // find matches of initial words, worth (match len)/(hit word length) - queries.push( - ...queryWords.map(async (queryWord) => { - checkAbortSignal(signal) - const idx = myTx.objectStore('nodes').index('full-text-words') - for await (const cursor of idx.iterate( - IDBKeyRange.bound(queryWord, `${queryWord}\uffff`, false, false), - )) { - checkAbortSignal(signal) - const term = cursor.value - const matchScores = term.fullTextWords - ?.filter((w) => w.startsWith(queryWord)) - .map((w) => queryWord.length / w.length) - - if (matchScores) { - termsAndScores.incrementScore(term, Math.max(...matchScores)) - } - } - }), - ) - - await Promise.all(queries) - - const results = Array.from(termsAndScores.values()) - // normalize the scores by number of words - for (const result of results) { - result[0] /= queryWords.length - } - // sort the terms by score descending and return - return results.sort((a, b) => b[0] - a[0]) - } } diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts index 97a213ad9..5c068e677 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts @@ -1,7 +1,7 @@ import { openLocation } from '@jbrowse/core/util/io' import { IDBPDatabase, IDBPTransaction, openDB } from 'idb/with-async-ittr' -import { getWords } from './fulltext-indexing' +import { getWords } from './fulltext' import { OntologyDB, isOntologyDBEdge, From d33a4e163ebca856fd27e277b61aaf1bbf07158a Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Tue, 1 Aug 2023 23:39:29 +0000 Subject: [PATCH 05/19] make text indexing paths configurable, index definitions by default --- .../OntologyManager/OntologyStore/fulltext.ts | 14 ++++++++++---- .../OntologyStore/indexeddb-storage.ts | 2 +- .../src/OntologyManager/index.ts | 18 ++++++++++++++++-- .../src/components/OntologyTermMultiSelect.tsx | 1 + .../src/session/ClientDataStore.ts | 8 ++++++-- 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts index 1c65918df..d0c7cf670 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts @@ -8,7 +8,11 @@ import { OntologyTerm } from '..' function getStringAt(obj: Record, path: string[]) { let thing = obj for (const key of path) { - thing = thing[key] as Record + if (key in thing) { + thing = thing[key] as Record + } else { + return + } } return String(thing) } @@ -29,9 +33,11 @@ export function getWords(node: OntologyDBNode, paths: string[][]) { const wordSet = new Set() for (const path of paths) { const text = getStringAt(node, path) - stringToWords(text).forEach((word) => { - wordSet.add(word) - }) + if (text) { + stringToWords(text).forEach((word) => { + wordSet.add(word) + }) + } } return wordSet } diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts index 5c068e677..473567978 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts @@ -96,7 +96,7 @@ export async function loadOboGraphJson(this: OntologyStore, db: Database) { const nodeStore = tx.objectStore('nodes') const fullTextIndexPaths = this.options.textIndexing?.indexPaths ? this.options.textIndexing?.indexPaths.map((p) => p.split('/')) - : [['lbl']] + : [['lbl'], ['meta', 'definition', 'val']] for (const node of graph.nodes ?? []) { if (isOntologyDBNode(node)) { await nodeStore.add({ diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts index 63d38363f..5d41d7de0 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts @@ -7,7 +7,7 @@ import { import { autorun } from 'mobx' import { Instance, addDisposer, getSnapshot, types } from 'mobx-state-tree' -import OntologyStore from './OntologyStore' +import OntologyStore, { OntologyStoreOptions } from './OntologyStore' import { OntologyDBNode } from './OntologyStore/indexeddb-schema' export { isDeprecated } from './OntologyStore/indexeddb-schema' @@ -17,6 +17,7 @@ export const OntologyRecordType = types name: types.string, version: 'unversioned', source: types.union(LocalPathLocation, UriLocation, BlobLocation), + options: types.frozen(), }) .volatile((_self) => ({ dataStore: undefined as undefined | OntologyStore, @@ -31,6 +32,7 @@ export const OntologyRecordType = types self.name, self.version, getSnapshot(self.source), + self.options, ) }, afterCreate() { @@ -104,8 +106,14 @@ export const OntologyManagerType = types name: string, version: string, source: Instance | Instance, + options?: OntologyStoreOptions, ) { - const newlen = self.ontologies.push({ name, version, source }) + const newlen = self.ontologies.push({ + name, + version, + source, + options: options ?? {}, + }) // access it immediately to fire its lifecycle hooks // (see https://github.com/mobxjs/mobx-state-tree/issues/1665) self.ontologies[newlen - 1].ping() @@ -140,6 +148,12 @@ export const OntologyRecordConfiguration = ConfigurationSchema( uri: 'http://example.com/myontology.json', }, }, + textIndexingPaths: { + type: 'frozen', + description: + 'JSON paths for text fields that will be indexed for text searching', + defaultValue: ['lbl', 'meta/definition/val'], + }, }, ) diff --git a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx index 6834bcd3c..60d58b0de 100644 --- a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx +++ b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx @@ -249,6 +249,7 @@ export function OntologyTermMultiSelect({ const label = option.lbl ?? '(no label)' const matches = highlightMatch(label, inputValue, { insideWords: true, + findAllOccurrences: true, }) parts = highlightParse(label, matches) return ( diff --git a/packages/jbrowse-plugin-apollo/src/session/ClientDataStore.ts b/packages/jbrowse-plugin-apollo/src/session/ClientDataStore.ts index 71ec0e874..d6d8b5e6b 100644 --- a/packages/jbrowse-plugin-apollo/src/session/ClientDataStore.ts +++ b/packages/jbrowse-plugin-apollo/src/session/ClientDataStore.ts @@ -114,17 +114,21 @@ export function clientDataStoreFactory( >[] for (const ont of configuredOntologies || []) { - const [name, version, source] = [ + const [name, version, source, indexPaths] = [ readConfObject(ont, 'name') as string, readConfObject(ont, 'version') as string, readConfObject(ont, 'source') as | Instance | Instance, + readConfObject(ont, 'textIndexingPaths') as string[], ] if (!ontologyManager.findOntology(name)) { - ontologyManager.addOntology(name, version, source) + ontologyManager.addOntology(name, version, source, { + textIndexing: { indexPaths }, + }) } } + // TODO: add in any configured ontology prefixes that we don't already // have in the session (or hardcoded in the model) }, From 46ed7be29300c3315afbf92060b81534a1d4a699 Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Wed, 2 Aug 2023 00:00:39 +0000 Subject: [PATCH 06/19] update snaps --- .../__snapshots__/index.test.ts.snap | 3589 ++++++++++++++++- 1 file changed, 3573 insertions(+), 16 deletions(-) diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap index f8d581a99..f704153bf 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap @@ -108,12 +108,38 @@ exports[`OntologyStore can load goslim generic 1`] = `248`; exports[`OntologyStore can load goslim generic 2`] = ` [ [ - 2.3333333333333335, + 3, { "fullTextWords": [ "mitotic", "nuclear", "division", + "cell", + "cycle", + "process", + "comprising", + "steps", + "nucleus", + "eukaryotic", + "divides", + "involves", + "condensation", + "chromosomal", + "dna", + "highly", + "compacted", + "form", + "canonically", + "mitosis", + "produces", + "two", + "daughter", + "nuclei", + "whose", + "chromosome", + "complement", + "identical", + "mother", ], "id": "http://purl.obolibrary.org/obo/GO_0140014", "lbl": "mitotic nuclear division", @@ -157,12 +183,19 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, ], [ - 1.3333333333333333, + 3, { "fullTextWords": [ "meiotic", "nuclear", "division", + "one", + "two", + "divisions", + "occur", + "part", + "cell", + "cycle", ], "id": "http://purl.obolibrary.org/obo/GO_0140013", "lbl": "meiotic nuclear division", @@ -205,12 +238,39 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, ], [ - 0.3333333333333333, + 2.6666666666666665, { "fullTextWords": [ "mitotic", "cell", "cycle", + "progression", + "phases", + "common", + "eukaryotic", + "canonically", + "comprises", + "four", + "successive", + "called", + "g1", + "g2", + "m", + "includes", + "replication", + "genome", + "subsequent", + "segregation", + "chromosomes", + "daughter", + "cells", + "variant", + "cycles", + "nuclear", + "division", + "may", + "followed", + "absent", ], "id": "http://purl.obolibrary.org/obo/GO_0000278", "lbl": "mitotic cell cycle", @@ -263,6 +323,15 @@ exports[`OntologyStore can load goslim generic 2`] = ` "fullTextWords": [ "nuclear", "chromosome", + "encodes", + "genome", + "found", + "nucleus", + "eukaryotic", + "cell", + "cycle", + "phases", + "intact", ], "id": "http://purl.obolibrary.org/obo/GO_0000228", "lbl": "nuclear chromosome", @@ -331,6 +400,26 @@ exports[`OntologyStore can load goslim generic 2`] = ` "fullTextWords": [ "nuclear", "envelope", + "double", + "lipid", + "bilayer", + "enclosing", + "nucleus", + "separating", + "contents", + "rest", + "cytoplasm", + "includes", + "intermembrane", + "space", + "gap", + "width", + "20", + "40", + "nm", + "also", + "called", + "perinuclear", ], "id": "http://purl.obolibrary.org/obo/GO_0005635", "lbl": "nuclear envelope", @@ -365,6 +454,337 @@ exports[`OntologyStore can load goslim generic 2`] = ` "type": "CLASS", }, ], + [ + 0.3333333333333333, + { + "fullTextWords": [ + "cytokinesis", + "division", + "cytoplasm", + "plasma", + "membrane", + "cell", + "partitioning", + "two", + "daughter", + "cells", + ], + "id": "http://purl.obolibrary.org/obo/GO_0000910", + "lbl": "cytokinesis", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId", + "val": "GO:0007104", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId", + "val": "GO:0016288", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId", + "val": "GO:0033205", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "biological_process", + }, + ], + "comments": [ + "Note that this term should not be used for direct annotation. When annotating eukaryotic species, mitotic or meiotic cytokinesis should always be specified for manual annotation and for prokaryotic species use 'FtsZ-dependent cytokinesis ; GO:0043093' or Cdv-dependent cytokinesis ; GO:0061639. Also, note that cytokinesis does not necessarily result in physical separation and detachment of the two daughter cells from each other.", + ], + "definition": { + "val": "The division of the cytoplasm and the plasma membrane of a cell and its partitioning into two daughter cells.", + "xrefs": [ + "GOC:mtg_cell_cycle", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#gocheck_do_not_manually_annotate", + "http://purl.obolibrary.org/obo/go#goslim_candida", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_yeast", + "http://purl.obolibrary.org/obo/go#prokaryote_subset", + ], + "synonyms": [ + { + "pred": "hasExactSynonym", + "val": "cell cycle cytokinesis", + }, + { + "pred": "hasExactSynonym", + "val": "cytokinesis involved in cell cycle", + "xrefs": [ + "GOC:dph", + "GOC:tb", + ], + }, + ], + "xrefs": [ + { + "val": "Wikipedia:Cytokinesis", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 0.3333333333333333, + { + "fullTextWords": [ + "nucleoplasm", + "part", + "nuclear", + "content", + "chromosomes", + "nucleolus", + ], + "id": "http://purl.obolibrary.org/obo/GO_0005654", + "lbl": "nucleoplasm", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "cellular_component", + }, + ], + "definition": { + "val": "That part of the nuclear content other than the chromosomes or the nucleolus.", + "xrefs": [ + "GOC:ma", + "ISBN:0124325653", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_plant", + ], + "xrefs": [ + { + "val": "NIF_Subcellular:sao661522542", + }, + { + "val": "Wikipedia:Nucleoplasm", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 0.3333333333333333, + { + "fullTextWords": [ + "cytoskeleton", + "cellular", + "structure", + "forms", + "internal", + "framework", + "eukaryotic", + "prokaryotic", + "cells", + "includes", + "intermediate", + "filaments", + "microfilaments", + "microtubules", + "microtrabecular", + "lattice", + "structures", + "characterized", + "polymeric", + "filamentous", + "nature", + "long", + "range", + "order", + "within", + "cell", + "various", + "elements", + "serve", + "maintenance", + "shape", + "also", + "roles", + "functions", + "including", + "movement", + "division", + "endocytosis", + "organelles", + ], + "id": "http://purl.obolibrary.org/obo/GO_0005856", + "lbl": "cytoskeleton", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "cellular_component", + }, + ], + "definition": { + "val": "A cellular structure that forms the internal framework of eukaryotic and prokaryotic cells. The cytoskeleton includes intermediate filaments, microfilaments, microtubules, the microtrabecular lattice, and other structures characterized by a polymeric filamentous nature and long-range order within the cell. The various elements of the cytoskeleton not only serve in the maintenance of cellular shape but also have roles in other cellular functions, including cellular movement, cell division, endocytosis, and movement of organelles.", + "xrefs": [ + "GOC:mah", + "PMID:16959967", + "PMID:27419875", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_agr", + "http://purl.obolibrary.org/obo/go#goslim_candida", + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_drosophila", + "http://purl.obolibrary.org/obo/go#goslim_flybase_ribbon", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_mouse", + "http://purl.obolibrary.org/obo/go#goslim_pir", + "http://purl.obolibrary.org/obo/go#goslim_plant", + "http://purl.obolibrary.org/obo/go#goslim_yeast", + "http://purl.obolibrary.org/obo/go#prokaryote_subset", + ], + "xrefs": [ + { + "val": "Wikipedia:Cytoskeleton", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 0.3333333333333333, + { + "fullTextWords": [ + "snrna", + "metabolic", + "process", + "chemical", + "reactions", + "pathways", + "involving", + "small", + "nuclear", + "rna", + "various", + "low", + "molecular", + "mass", + "molecules", + "found", + "eukaryotic", + "nucleus", + "components", + "ribonucleoprotein", + ], + "id": "http://purl.obolibrary.org/obo/GO_0016073", + "lbl": "snRNA metabolic process", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "biological_process", + }, + ], + "definition": { + "val": "The chemical reactions and pathways involving snRNA, small nuclear RNA, any of various low-molecular-mass RNA molecules found in the eukaryotic nucleus as components of the small nuclear ribonucleoprotein.", + "xrefs": [ + "ISBN:0198506732", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_drosophila", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_pombe", + ], + "synonyms": [ + { + "pred": "hasExactSynonym", + "val": "snRNA metabolism", + }, + ], + }, + "type": "CLASS", + }, + ], + [ + 0.3333333333333333, + { + "fullTextWords": [ + "histone", + "binding", + "group", + "water", + "soluble", + "proteins", + "found", + "association", + "dna", + "eukaryotic", + "archaeal", + "chromosomes", + "involved", + "condensation", + "coiling", + "cell", + "division", + "also", + "implicated", + "gene", + "regulation", + "replication", + "may", + "chemically", + "modified", + "methylated", + "acetlyated", + "others", + "regulate", + "transcription", + ], + "id": "http://purl.obolibrary.org/obo/GO_0042393", + "lbl": "histone binding", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://purl.obolibrary.org/obo/IAO_0000233", + "val": "https://github.com/geneontology/go-ontology/issues/23106", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "molecular_function", + }, + ], + "definition": { + "val": "Binding to a histone, any of a group of water-soluble proteins found in association with the DNA of eukaryotic or archaeal chromosomes. They are involved in the condensation and coiling of chromosomes during cell division and have also been implicated in gene regulation and DNA replication. They may be chemically modified (methylated, acetlyated and others) to regulate gene transcription.", + "xrefs": [ + "GOC:jl", + "PMID:16209651", + "PMID:30212449", + "PMID:9305837", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_drosophila", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_yeast", + "http://purl.obolibrary.org/obo/go#prokaryote_subset", + ], + "synonyms": [ + { + "pred": "hasRelatedSynonym", + "val": "histone-specific chaperone activity", + }, + ], + }, + "type": "CLASS", + }, + ], ] `; @@ -377,6 +797,19 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` { "fullTextWords": [ "gene", + "region", + "regions", + "includes", + "sequence", + "elements", + "necessary", + "encode", + "functional", + "transcript", + "may", + "include", + "regulatory", + "transcribed", ], "id": "http://purl.obolibrary.org/obo/SO_0000704", "lbl": "gene", @@ -417,6 +850,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "nuclear", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000087", "lbl": "nuclear_gene", @@ -451,6 +885,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "mt", "gene", + "located", + "mitochondrial", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000088", "lbl": "mt_gene", @@ -489,6 +926,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "plastid", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000090", "lbl": "plastid_gene", @@ -518,6 +956,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "nucleomorph", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000097", "lbl": "nucleomorph_gene", @@ -547,6 +986,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "plasmid", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000098", "lbl": "plasmid_gene", @@ -576,6 +1016,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "proviral", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000099", "lbl": "proviral_gene", @@ -606,6 +1047,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "transposable", "element", "gene", + "encoded", + "within", + "example", + "gag", + "int", + "env", + "pol", + "genes", + "ty", + "yeast", ], "id": "http://purl.obolibrary.org/obo/SO_0000111", "lbl": "transposable_element_gene", @@ -818,6 +1269,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "gene", "polycistronic", "transcript", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0000690", "lbl": "gene_with_polycistronic_transcript", @@ -847,6 +1299,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "rescue", "gene", + "rescues", ], "id": "http://purl.obolibrary.org/obo/SO_0000816", "lbl": "rescue_gene", @@ -908,6 +1361,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "negatively", "autoregulated", "gene", + "autoreguated", ], "id": "http://purl.obolibrary.org/obo/SO_0000891", "lbl": "negatively_autoregulated_gene", @@ -1026,6 +1480,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` { "fullTextWords": [ "transgene", + "gene", + "transferred", + "naturally", + "number", + "genetic", + "engineering", + "techniques", + "one", + "organism", + "another", ], "id": "http://purl.obolibrary.org/obo/SO_0000902", "lbl": "transgene", @@ -1120,6 +1584,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "ncrna", "gene", + "encodes", + "non", + "coding", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001263", "lbl": "ncRNA_gene", @@ -1150,6 +1618,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "cryptic", "gene", + "transcribed", + "normal", + "conditions", + "critical", + "cellular", + "functioning", ], "id": "http://purl.obolibrary.org/obo/SO_0001431", "lbl": "cryptic_gene", @@ -1182,6 +1656,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "canonical", "start", "codon", + "aug", ], "id": "http://purl.obolibrary.org/obo/SO_0001739", "lbl": "gene_with_non_canonical_start_codon", @@ -1222,6 +1697,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "candidate", "gene", + "suspected", + "involved", + "expression", + "trait", ], "id": "http://purl.obolibrary.org/obo/SO_0001867", "lbl": "candidate_gene", @@ -1268,6 +1747,27 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "immune", "system", "gene", + "configuration", + "ig", + "tr", + "variable", + "v", + "diversity", + "d", + "joining", + "j", + "germline", + "genes", + "dna", + "rearrangements", + "without", + "constant", + "c", + "undefined", + "non", + "rearranged", + "regions", + "loci", ], "id": "http://purl.obolibrary.org/obo/SO_0002121", "lbl": "vertebrate_immune_system_gene", @@ -1309,6 +1809,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "gene", "cassette", + "substituted", + "related", + "different", + "site", + "genome", ], "id": "http://purl.obolibrary.org/obo/SO_0005853", "lbl": "gene_cassette", @@ -1346,6 +1851,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "kinetoplast", "gene", + "located", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000089", "lbl": "kinetoplast_gene", @@ -1375,6 +1882,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "apicoplast", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000091", "lbl": "apicoplast_gene", @@ -1404,6 +1912,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "ct", "gene", + "chloroplast", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000092", "lbl": "ct_gene", @@ -1437,6 +1947,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "chromoplast", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000093", "lbl": "chromoplast_gene", @@ -1466,6 +1977,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "cyanelle", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000094", "lbl": "cyanelle_gene", @@ -1495,6 +2007,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "leucoplast", "gene", + "plastid", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000095", "lbl": "leucoplast_gene", @@ -1524,6 +2038,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "proplastid", "gene", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000096", "lbl": "proplastid_gene", @@ -1554,6 +2069,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "endogenous", "retroviral", "gene", + "proviral", + "origin", + "retrovirus", ], "id": "http://purl.obolibrary.org/obo/SO_0000100", "lbl": "endogenous_retroviral_gene", @@ -1777,6 +2295,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "recombinationally", "inverted", "gene", + "rearranged", + "inversion", ], "id": "http://purl.obolibrary.org/obo/SO_0000373", "lbl": "recombinationally_inverted_gene", @@ -1840,6 +2360,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "gene", "dicistronic", "transcript", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0000692", "lbl": "gene_with_dicistronic_transcript", @@ -1871,6 +2392,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "type", "rescue", "gene", + "rescues", ], "id": "http://purl.obolibrary.org/obo/SO_0000818", "lbl": "wild_type_rescue_gene", @@ -1902,6 +2424,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "rearranged", "dna", "level", + "epigenetically", + "modified", ], "id": "http://purl.obolibrary.org/obo/SO_0000138", "lbl": "gene_rearranged_at_DNA_level", @@ -2021,6 +2545,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "floxed", "gene", + "transgene", ], "id": "http://purl.obolibrary.org/obo/SO_0000363", "lbl": "floxed_gene", @@ -2051,6 +2576,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "gene", "polyadenylated", "mrna", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0000451", "lbl": "gene_with_polyadenylated_mRNA", @@ -2081,6 +2607,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "gene", "mrna", "frameshift", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0000455", "lbl": "gene_with_mRNA_with_frameshift", @@ -2111,6 +2638,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "gene", "edited", "transcript", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0000548", "lbl": "gene_with_edited_transcript", @@ -2141,6 +2669,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "gene", "recoded", "mrna", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0000693", "lbl": "gene_with_recoded_mRNA", @@ -2274,6 +2803,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "snrna", "gene", + "encodes", + "small", + "nuclear", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001268", "lbl": "snRNA_gene", @@ -2377,6 +2910,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "rrna", "gene", + "encodes", + "ribosomal", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001637", "lbl": "rRNA_gene", @@ -2418,6 +2954,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "pirna", "gene", + "encodes", + "piwi", + "associated", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001638", "lbl": "piRNA_gene", @@ -2457,6 +2997,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "p", "rna", "gene", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0001639", "lbl": "RNase_P_RNA_gene", @@ -2496,6 +3037,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "mrp", "rna", "gene", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0001640", "lbl": "RNase_MRP_RNA_gene", @@ -2534,6 +3076,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "telomerase", "rna", "gene", + "non", + "coding", + "product", + "component", ], "id": "http://purl.obolibrary.org/obo/SO_0001643", "lbl": "telomerase_RNA_gene", @@ -2584,6 +3130,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "lncrna", "gene", + "encodes", + "long", + "non", + "coding", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002127", "lbl": "lncRNA_gene", @@ -2633,6 +3184,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "enzymatic", "rna", "gene", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0002180", "lbl": "enzymatic_RNA_gene", @@ -2666,6 +3218,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` { "fullTextWords": [ "cryptogene", + "maxicircle", + "gene", + "extensively", + "edited", + "cannot", + "matched", + "mrna", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_1001196", "lbl": "cryptogene", @@ -2691,6 +3251,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "start", "codon", "cug", + "translational", ], "id": "http://purl.obolibrary.org/obo/SO_0001740", "lbl": "gene_with_start_codon_CUG", @@ -2732,6 +3293,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "positional", "candidate", "gene", + "whose", + "association", + "trait", + "based", + "location", + "chromosome", ], "id": "http://purl.obolibrary.org/obo/SO_0001868", "lbl": "positional_candidate_gene", @@ -2777,6 +3344,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "functional", "candidate", "gene", + "whose", + "function", + "something", + "common", + "biologically", + "trait", + "investigation", ], "id": "http://purl.obolibrary.org/obo/SO_0001869", "lbl": "functional_candidate_gene", @@ -2821,6 +3395,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "immunoglobulin", "gene", + "germline", ], "id": "http://purl.obolibrary.org/obo/SO_0002122", "lbl": "immunoglobulin_gene", @@ -2866,6 +3441,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "cell", "receptor", "gene", + "germline", ], "id": "http://purl.obolibrary.org/obo/SO_0002133", "lbl": "T_cell_receptor_gene", @@ -2903,6 +3479,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "maxicircle", "gene", + "mitochondrial", + "located", ], "id": "http://purl.obolibrary.org/obo/SO_0000654", "lbl": "maxicircle_gene", @@ -3058,6 +3636,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "dicistronic", "primary", "transcript", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0000721", "lbl": "gene_with_dicistronic_primary_transcript", @@ -3091,6 +3670,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "gene", "dicistronic", "mrna", + "encodes", + "polycistronic", ], "id": "http://purl.obolibrary.org/obo/SO_0000722", "lbl": "gene_with_dicistronic_mRNA", @@ -3129,6 +3710,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "stop", "codon", "read", + "encodes", + "transcript", + "readthrough", ], "id": "http://purl.obolibrary.org/obo/SO_0000697", "lbl": "gene_with_stop_codon_read_through", @@ -3192,6 +3776,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "transcript", "translational", "frameshift", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0000712", "lbl": "gene_with_transcript_with_translational_frameshift", @@ -3221,6 +3806,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "lincrna", "gene", + "encodes", + "long", + "intervening", + "non", + "coding", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001641", "lbl": "lincRNA_gene", @@ -3261,6 +3852,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "antisense", "lncrna", "gene", + "encodes", + "long", + "non", + "coding", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002182", "lbl": "antisense_lncRNA_gene", @@ -3297,8 +3893,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "overlap", "ncrna", "gene", - ], - "id": "http://purl.obolibrary.org/obo/SO_0002183", + "encodes", + "long", + "non", + "coding", + "rna", + ], + "id": "http://purl.obolibrary.org/obo/SO_0002183", "lbl": "sense_overlap_ncRNA_gene", "meta": { "basicPropertyValues": [ @@ -3341,6 +3942,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "intronic", "ncrna", "gene", + "encodes", + "long", + "non", + "coding", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002184", "lbl": "sense_intronic_ncRNA_gene", @@ -3384,6 +3990,19 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "bidirectional", "promoter", "lncrna", + "non", + "coding", + "locus", + "originates", + "within", + "region", + "protein", + "gene", + "transcription", + "proceeding", + "opposite", + "direction", + "strand", ], "id": "http://purl.obolibrary.org/obo/SO_0002185", "lbl": "bidirectional_promoter_lncRNA", @@ -3421,6 +4040,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "ribozyme", "gene", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0002181", "lbl": "ribozyme_gene", @@ -3456,6 +4076,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "ig", "c", "gene", + "constant", + "codes", + "region", + "immunoglobulin", + "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002123", "lbl": "IG_C_gene", @@ -3506,6 +4131,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "ig", "d", "gene", + "rearranges", + "dna", + "level", + "codes", + "diversity", + "region", + "variable", + "domain", + "immunoglobuin", ], "id": "http://purl.obolibrary.org/obo/SO_0002124", "lbl": "IG_D_gene", @@ -3556,6 +4190,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "ig", "j", "gene", + "joining", + "rearranges", + "dna", + "level", + "codes", + "region", + "variable", + "domain", + "immunoglobulin", + "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002125", "lbl": "IG_J_gene", @@ -3606,6 +4250,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "ig", "v", "gene", + "variable", + "rearranges", + "dna", + "level", + "codes", + "region", + "domain", + "immunoglobulin", + "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002126", "lbl": "IG_V_gene", @@ -3656,6 +4309,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "tr", "c", "gene", + "constant", + "codes", + "region", + "cell", + "receptor", + "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002134", "lbl": "TR_C_Gene", @@ -3698,6 +4357,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "tr", "d", "gene", + "rearranges", + "dna", + "level", + "codes", + "diversity", + "region", + "variable", + "domain", + "cell", + "receptor", ], "id": "http://purl.obolibrary.org/obo/SO_0002135", "lbl": "TR_D_Gene", @@ -3740,6 +4409,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "tr", "j", "gene", + "joining", + "rearranges", + "dna", + "level", + "codes", + "region", + "variable", + "domain", + "cell", + "receptor", + "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002136", "lbl": "TR_J_Gene", @@ -3782,6 +4462,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "tr", "v", "gene", + "variable", + "rearranges", + "dna", + "level", + "codes", + "region", + "domain", + "cell", + "receptor", + "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002137", "lbl": "TR_V_Gene", @@ -3826,6 +4516,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "codon", "redefined", "pyrrolysine", + "encoding", + "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0000698", "lbl": "gene_with_stop_codon_redefined_as_pyrrolysine", @@ -3858,6 +4550,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "codon", "redefined", "selenocysteine", + "encoding", + "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0000710", "lbl": "gene_with_stop_codon_redefined_as_selenocysteine", @@ -3954,6 +4648,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "transcript", + "rna", + "synthesized", + "dna", + "template", + "polymerase", ], "id": "http://purl.obolibrary.org/obo/SO_0000673", "lbl": "transcript", @@ -3992,6 +4691,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "functional", "gene", "region", + "member", + "encodes", + "sequence", + "directly", + "contributes", + "molecular", + "function", + "product", ], "id": "http://purl.obolibrary.org/obo/SO_0002188", "lbl": "functional_gene_region", @@ -4032,6 +4739,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "regulatory", "region", + "sequence", + "involved", + "control", + "biological", + "process", ], "id": "http://purl.obolibrary.org/obo/SO_0005836", "lbl": "regulatory_region", @@ -4078,6 +4790,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "non", "transcribed", "region", + "gene", ], "id": "http://purl.obolibrary.org/obo/SO_0000183", "lbl": "non_transcribed_region", @@ -4148,6 +4861,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "tss", "region", + "gene", + "5", + "3", ], "id": "http://purl.obolibrary.org/obo/SO_0001240", "lbl": "TSS_region", @@ -4178,6 +4894,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "intein", "encoding", "region", + "nucleotide", + "sequence", + "encodes", + "portion", + "precursor", + "gene", ], "id": "http://purl.obolibrary.org/obo/SO_0002026", "lbl": "intein_encoding_region", @@ -4212,6 +4934,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "gene", "segment", + "component", + "region", + "acts", + "recombinational", + "unit", + "whose", + "functional", + "form", + "generated", + "somatic", + "recombination", ], "id": "http://purl.obolibrary.org/obo/SO_3000000", "lbl": "gene_segment", @@ -4303,6 +5036,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "primary", "transcript", + "initial", + "state", + "requires", + "modification", + "functional", ], "id": "http://purl.obolibrary.org/obo/SO_0000185", "lbl": "primary_transcript", @@ -4352,6 +5090,28 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "mature", "transcript", + "undergone", + "necessary", + "modifications", + "function", + "eukaryotes", + "includes", + "example", + "processing", + "introns", + "cleavage", + "base", + "modification", + "5", + "3", + "ends", + "addition", + "bases", + "bacteria", + "functional", + "mrnas", + "usually", + "modified", ], "id": "http://purl.obolibrary.org/obo/SO_0000233", "lbl": "mature_transcript", @@ -4459,6 +5219,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "enzymatic", "rna", + "sequence", + "catalytic", + "activity", + "without", + "associated", + "ribonucleoprotein", ], "id": "http://purl.obolibrary.org/obo/SO_0000372", "lbl": "enzymatic_RNA", @@ -4566,6 +5332,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "aberrant", "processed", "transcript", + "incorrectly", + "example", + "failure", + "splicing", + "one", + "exons", ], "id": "http://purl.obolibrary.org/obo/SO_0000681", "lbl": "aberrant_processed_transcript", @@ -4624,6 +5396,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "processed", "transcript", + "open", + "reading", + "frame", + "identified", + "function", + "determined", ], "id": "http://purl.obolibrary.org/obo/SO_0001503", "lbl": "processed_transcript", @@ -4664,6 +5442,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "predicted", "transcript", + "feature", + "yet", + "validated", ], "id": "http://purl.obolibrary.org/obo/SO_0002138", "lbl": "predicted_transcript", @@ -4732,6 +5513,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcription", "regulatory", "region", + "involved", + "control", + "process", ], "id": "http://purl.obolibrary.org/obo/SO_0001679", "lbl": "transcription_regulatory_region", @@ -4773,6 +5557,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "translation", "regulatory", "region", + "involved", + "control", + "process", ], "id": "http://purl.obolibrary.org/obo/SO_0001680", "lbl": "translation_regulatory_region", @@ -4811,6 +5598,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "recombination", "regulatory", "region", + "involved", + "control", + "process", ], "id": "http://purl.obolibrary.org/obo/SO_0001681", "lbl": "recombination_regulatory_region", @@ -4849,6 +5639,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "replication", "regulatory", "region", + "involved", + "control", + "process", + "nucleotide", ], "id": "http://purl.obolibrary.org/obo/SO_0001682", "lbl": "replication_regulatory_region", @@ -4895,6 +5689,28 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "imprinting", "control", "region", + "regulatory", + "controls", + "epigenetic", + "affects", + "expression", + "target", + "genes", + "allele", + "parent", + "origin", + "specific", + "manner", + "associated", + "elements", + "may", + "include", + "differentially", + "methylated", + "regions", + "non", + "coding", + "rnas", ], "id": "http://purl.obolibrary.org/obo/SO_0002191", "lbl": "imprinting_control_region", @@ -4938,6 +5754,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pseudogenic", "gene", "segment", + "incorporated", + "somatic", + "recombination", + "final", + "transcript", + "results", + "nonfunctional", + "product", ], "id": "http://purl.obolibrary.org/obo/SO_0001741", "lbl": "pseudogenic_gene_segment", @@ -5005,6 +5829,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "polycistronic", "primary", "transcript", + "encoding", + "one", + "gene", + "product", ], "id": "http://purl.obolibrary.org/obo/SO_0000631", "lbl": "polycistronic_primary_transcript", @@ -5034,6 +5862,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "polycistronic", "mrna", + "encodes", + "multiple", + "proteins", + "least", + "two", + "non", + "overlapping", + "regions", ], "id": "http://purl.obolibrary.org/obo/SO_0000634", "lbl": "polycistronic_mRNA", @@ -5074,6 +5910,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "coding", "primary", "transcript", + "least", + "part", + "encodes", + "one", + "proteins", ], "id": "http://purl.obolibrary.org/obo/SO_0000120", "lbl": "protein_coding_primary_transcript", @@ -5114,6 +5955,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "nc", "primary", "transcript", + "never", + "translated", + "protein", ], "id": "http://purl.obolibrary.org/obo/SO_0000483", "lbl": "nc_primary_transcript", @@ -5151,6 +5995,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "monocistronic", "primary", "transcript", + "encoding", + "one", + "gene", + "product", ], "id": "http://purl.obolibrary.org/obo/SO_0000632", "lbl": "monocistronic_primary_transcript", @@ -5182,6 +6030,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "exon", "donor", "rna", + "primary", + "transcript", + "donates", + "spliced", + "leader", + "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0000635", "lbl": "mini_exon_donor_RNA", @@ -5216,6 +6070,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "antisense", "primary", "transcript", + "reverse", + "complement", ], "id": "http://purl.obolibrary.org/obo/SO_0000645", "lbl": "antisense_primary_transcript", @@ -5281,6 +6137,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "outer", "repeat", "transcript", + "transcribed", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0001905", "lbl": "regional_centromere_outer_repeat_transcript", @@ -5328,6 +6186,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcript", "retained", "intron", + "supported", + "est", + "mrna", + "evidence", + "aligns", + "unambiguously", + "pseudogene", + "locus", + "intronic", + "sequence", + "compared", + "reference", ], "id": "http://purl.obolibrary.org/obo/SO_0002115", "lbl": "pseudogenic_transcript_with_retained_intron", @@ -5367,6 +6237,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "mrna", + "messenger", + "rna", + "intermediate", + "molecule", + "dna", + "protein", + "includes", + "utr", + "coding", + "sequences", + "contain", + "introns", ], "id": "http://purl.obolibrary.org/obo/SO_0000234", "lbl": "mRNA", @@ -5417,6 +6299,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "ncrna", + "rna", + "transcript", + "encode", + "protein", + "rather", + "molecule", + "gene", + "product", ], "id": "http://purl.obolibrary.org/obo/SO_0000655", "lbl": "ncRNA", @@ -5467,6 +6357,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "ribozyme", + "rna", + "catalytic", + "activity", ], "id": "http://purl.obolibrary.org/obo/SO_0000374", "lbl": "ribozyme", @@ -5538,6 +6431,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "monocistronic", "mrna", + "either", + "single", + "protein", + "product", + "regions", + "encoding", + "products", + "overlap", ], "id": "http://purl.obolibrary.org/obo/SO_0000633", "lbl": "monocistronic_mRNA", @@ -5636,6 +6537,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pseudogene", "processed", "transcript", + "supported", + "est", + "mrna", + "evidence", + "aligns", + "unambiguously", + "locus", + "e", + "alignment", + "clearly", + "better", + "parent", ], "id": "http://purl.obolibrary.org/obo/SO_0002111", "lbl": "pseudogene_processed_transcript", @@ -5676,6 +6589,43 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "unconfirmed", "transcript", + "used", + "non", + "spliced", + "est", + "clusters", + "polya", + "features", + "category", + "specifically", + "created", + "encode", + "project", + "highlight", + "regions", + "could", + "indicate", + "presence", + "protein", + "coding", + "genes", + "require", + "experimental", + "validation", + "either", + "5", + "race", + "rt", + "pcr", + "extend", + "transcripts", + "confirming", + "expression", + "putatively", + "encoded", + "peptide", + "specific", + "antibodies", ], "id": "http://purl.obolibrary.org/obo/SO_0002139", "lbl": "unconfirmed_transcript", @@ -5716,6 +6666,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "terminator", + "sequence", + "dna", + "located", + "either", + "end", + "transcript", + "causes", + "rna", + "polymerase", + "terminate", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0000141", "lbl": "terminator", @@ -5762,6 +6723,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "tf", "binding", "site", + "region", + "nucleotide", + "molecule", + "binds", + "transcription", + "factor", + "complex", + "go", + "0005667", ], "id": "http://purl.obolibrary.org/obo/SO_0000235", "lbl": "TF_binding_site", @@ -5799,6 +6769,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "polya", "signal", "sequence", + "recognition", + "necessary", + "endonuclease", + "cleavage", + "rna", + "transcript", + "followed", + "polyadenylation", + "consensus", + "aataaa", ], "id": "http://purl.obolibrary.org/obo/SO_0000551", "lbl": "polyA_signal_sequence", @@ -5877,6 +6857,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "cis", "regulatory", "region", + "modulates", + "transcription", + "gene", + "genes", ], "id": "http://purl.obolibrary.org/obo/SO_0001055", "lbl": "transcriptional_cis_regulatory_region", @@ -5923,6 +6907,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "splicing", "regulatory", "region", + "modulates", ], "id": "http://purl.obolibrary.org/obo/SO_0001056", "lbl": "splicing_regulatory_region", @@ -5957,6 +6942,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "regulatory", "frameshift", "element", + "structural", + "region", + "rna", + "molecule", + "promotes", + "ribosomal", + "frameshifting", + "coding", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0001427", "lbl": "cis_regulatory_frameshift_element", @@ -5987,6 +6981,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "intronic", "regulatory", "region", + "part", + "intron", ], "id": "http://purl.obolibrary.org/obo/SO_0001492", "lbl": "intronic_regulatory_region", @@ -6025,6 +7021,25 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcription", "pause", "site", + "sites", + "regions", + "gene", + "rna", + "polymerase", + "may", + "functional", + "role", + "pausing", + "facilitate", + "factor", + "recruitment", + "folding", + "synchronization", + "translation", + "consensus", + "observed", + "e", + "coli", ], "id": "http://purl.obolibrary.org/obo/SO_0002047", "lbl": "transcription_pause_site", @@ -6063,6 +7078,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "response", "element", + "regulatory", + "acts", + "stimulus", + "usually", + "via", + "transcription", + "factor", + "binding", ], "id": "http://purl.obolibrary.org/obo/SO_0002205", "lbl": "response_element", @@ -6104,6 +7127,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "attenuator", + "sequence", + "segment", + "located", + "within", + "five", + "prime", + "end", + "mrna", + "causes", + "premature", + "termination", + "translation", ], "id": "http://purl.obolibrary.org/obo/SO_0000140", "lbl": "attenuator", @@ -6149,6 +7184,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "recombination", "enhancer", + "regulatory", + "region", + "promotes", + "induces", + "process", ], "id": "http://purl.obolibrary.org/obo/SO_0002059", "lbl": "recombination_enhancer", @@ -6187,6 +7227,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "dicistronic", "mrna", + "quality", ], "id": "http://purl.obolibrary.org/obo/SO_0000716", "lbl": "dicistronic_mRNA", @@ -6221,6 +7262,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "dicistronic", "primary", "transcript", + "quality", ], "id": "http://purl.obolibrary.org/obo/SO_1001197", "lbl": "dicistronic_primary_transcript", @@ -6276,6 +7318,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcript", "retained", "intron", + "protein", + "containing", ], "id": "http://purl.obolibrary.org/obo/SO_0002112", "lbl": "coding_transcript_with_retained_intron", @@ -6316,6 +7360,22 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "nmd", "transcript", + "protein", + "coding", + "contains", + "cds", + "one", + "splice", + "junctions", + "50bp", + "downstream", + "stop", + "codon", + "making", + "susceptible", + "nonsense", + "mediated", + "decay", ], "id": "http://purl.obolibrary.org/obo/SO_0002114", "lbl": "NMD_transcript", @@ -6370,6 +7430,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "scrna", "primary", "transcript", + "one", + "several", + "small", + "cytoplasmic", + "rna", + "molecules", + "present", + "cytoplasm", + "sometimes", + "nucleus", + "eukaryote", ], "id": "http://purl.obolibrary.org/obo/SO_0000012", "lbl": "scRNA_primary_transcript", @@ -6416,6 +7487,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rrna", "primary", "transcript", + "encoding", + "ribosomal", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000209", "lbl": "rRNA_primary_transcript", @@ -6453,6 +7527,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "transfer", + "rna", + "0000253", ], "id": "http://purl.obolibrary.org/obo/SO_0000210", "lbl": "tRNA_primary_transcript", @@ -6483,6 +7561,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "snrna", "primary", "transcript", + "encoding", + "small", + "nuclear", + "rna", + "0000274", ], "id": "http://purl.obolibrary.org/obo/SO_0000231", "lbl": "snRNA_primary_transcript", @@ -6513,6 +7596,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "snorna", "primary", "transcript", + "encoding", + "small", + "nucleolar", + "mrna", + "0000275", ], "id": "http://purl.obolibrary.org/obo/SO_0000232", "lbl": "snoRNA_primary_transcript", @@ -6543,6 +7631,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "tmrna", "primary", "transcript", + "encoding", + "0000584", ], "id": "http://purl.obolibrary.org/obo/SO_0000586", "lbl": "tmRNA_primary_transcript", @@ -6582,6 +7672,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rna", "primary", "transcript", + "encoding", + "signal", + "recognition", + "particle", ], "id": "http://purl.obolibrary.org/obo/SO_0000589", "lbl": "SRP_RNA_primary_transcript", @@ -6612,6 +7706,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "mirna", "primary", "transcript", + "encoding", + "micro", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000647", "lbl": "miRNA_primary_transcript", @@ -6662,6 +7759,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "tasirna", "primary", "transcript", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0001801", "lbl": "tasiRNA_primary_transcript", @@ -6700,6 +7798,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "lncrna", "primary", "transcript", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0002035", "lbl": "lncRNA_primary_transcript", @@ -6738,6 +7837,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "shrna", "primary", "transcript", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0002038", "lbl": "shRNA_primary_transcript", @@ -6776,6 +7876,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "vaultrna", "primary", "transcript", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0002040", "lbl": "vaultRNA_primary_transcript", @@ -6815,6 +7916,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rna", "primary", "transcript", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0002042", "lbl": "Y_RNA_primary_transcript", @@ -6885,6 +7987,20 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "exemplar", "mrna", + "representative", + "cdna", + "sequence", + "gene", + "approach", + "method", + "usually", + "involves", + "initial", + "clustering", + "groups", + "subsequent", + "selection", + "group", ], "id": "http://purl.obolibrary.org/obo/SO_0000734", "lbl": "exemplar_mRNA", @@ -7001,6 +8117,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "nsd", "transcript", + "contains", + "cds", + "stop", + "codon", + "polya", + "site", + "reached", ], "id": "http://purl.obolibrary.org/obo/SO_0002130", "lbl": "NSD_transcript", @@ -7038,6 +8161,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "recoded", "mrna", + "sequence", + "mature", + "transcript", + "modified", + "translation", + "usually", + "special", + "cis", + "acting", + "signals", ], "id": "http://purl.obolibrary.org/obo/SO_1001261", "lbl": "recoded_mRNA", @@ -7066,6 +8199,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "scrna", + "small", + "non", + "coding", + "rna", + "sequence", + "present", + "cytoplasm", ], "id": "http://purl.obolibrary.org/obo/SO_0000013", "lbl": "scRNA", @@ -7105,6 +8245,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "rrna", + "rna", + "comprises", + "part", + "ribosome", + "provide", + "structural", + "scaffolding", + "catalytic", + "activity", ], "id": "http://purl.obolibrary.org/obo/SO_0000252", "lbl": "rRNA", @@ -7154,6 +8303,67 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "trna", + "transfer", + "rna", + "molecules", + "approximately", + "80", + "nucleotides", + "length", + "secondary", + "structure", + "includes", + "four", + "short", + "double", + "helical", + "elements", + "three", + "loops", + "d", + "anti", + "codon", + "hydrogen", + "bonds", + "mediate", + "characteristic", + "l", + "shaped", + "molecular", + "rnas", + "two", + "regions", + "fundamental", + "functional", + "importance", + "responsible", + "specific", + "mrna", + "recognition", + "3", + "end", + "corresponding", + "amino", + "acid", + "attached", + "aminoacyl", + "synthetases", + "cope", + "degeneracy", + "genetic", + "code", + "manners", + "one", + "particular", + "wobble", + "base", + "pairing", + "e", + "permitting", + "non", + "standard", + "3rd", + "position", ], "id": "http://purl.obolibrary.org/obo/SO_0000253", "lbl": "tRNA", @@ -7206,6 +8416,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "snrna", + "small", + "nuclear", + "rna", + "molecule", + "involved", + "pre", + "mrna", + "splicing", + "processing", ], "id": "http://purl.obolibrary.org/obo/SO_0000274", "lbl": "snRNA", @@ -7255,6 +8474,39 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "snorna", + "small", + "nucleolar", + "rna", + "one", + "class", + "rnas", + "associated", + "eukaryotic", + "nucleus", + "components", + "ribonucleoproteins", + "participate", + "processing", + "modifications", + "many", + "mostly", + "ribosomal", + "rrnas", + "though", + "snornas", + "also", + "known", + "target", + "classes", + "including", + "spliceosomal", + "trnas", + "mrnas", + "via", + "stretch", + "sequence", + "complementary", + "targeted", ], "id": "http://purl.obolibrary.org/obo/SO_0000275", "lbl": "snoRNA", @@ -7301,6 +8553,29 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "small", "regulatory", "ncrna", + "non", + "coding", + "rna", + "less", + "200", + "nucleotides", + "long", + "usually", + "specific", + "secondary", + "structure", + "acts", + "regulate", + "gene", + "expression", + "include", + "short", + "ncrnas", + "pirna", + "mirna", + "sirnas", + "among", + "others", ], "id": "http://purl.obolibrary.org/obo/SO_0000370", "lbl": "small_regulatory_ncRNA", @@ -7336,6 +8611,39 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rnase", "mrp", "rna", + "molecule", + "essential", + "catalytic", + "activity", + "enzymatically", + "active", + "ribonucleoprotein", + "two", + "distinct", + "roles", + "eukaryotes", + "mitochondria", + "plays", + "direct", + "role", + "initiation", + "mitochondrial", + "dna", + "replication", + "nucleus", + "involved", + "precursor", + "rrna", + "processing", + "cleaves", + "internal", + "transcribed", + "spacer", + "1", + "18s", + "5", + "8s", + "rrnas", ], "id": "http://purl.obolibrary.org/obo/SO_0000385", "lbl": "RNase_MRP_RNA", @@ -7377,14 +8685,84 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rnase", "p", "rna", - ], - "id": "http://purl.obolibrary.org/obo/SO_0000386", - "lbl": "RNase_P_RNA", - "meta": { - "basicPropertyValues": [ - { - "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", - "val": "sequence", + "component", + "ribonuclease", + "ubiquitous", + "endoribonuclease", + "found", + "archaea", + "bacteria", + "eukarya", + "well", + "chloroplasts", + "mitochondria", + "best", + "characterized", + "activity", + "generation", + "mature", + "5", + "prime", + "ends", + "trnas", + "cleaving", + "leader", + "elements", + "precursor", + "cellular", + "ps", + "ribonucleoproteins", + "bacterial", + "retains", + "catalytic", + "absence", + "protein", + "subunit", + "e", + "ribozyme", + "isolated", + "eukaryotic", + "archaeal", + "shown", + "retain", + "function", + "still", + "essential", + "holoenzyme", + "although", + "holoenzymes", + "much", + "greater", + "content", + "ones", + "cores", + "three", + "lineages", + "homologous", + "helices", + "corresponding", + "p1", + "p2", + "p3", + "p4", + "p10", + "11", + "common", + "rnas", + "yet", + "considerable", + "sequence", + "variation", + "particularly", + "among", + ], + "id": "http://purl.obolibrary.org/obo/SO_0000386", + "lbl": "RNase_P_RNA", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "sequence", }, ], "definition": { @@ -7417,6 +8795,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "telomerase", "rna", + "component", + "reverse", + "transcriptase", + "synthesizes", + "telomeric", + "dna", ], "id": "http://purl.obolibrary.org/obo/SO_0000390", "lbl": "telomerase_RNA", @@ -7462,6 +8846,30 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "vault", "rna", + "family", + "rnas", + "found", + "part", + "enigmatic", + "ribonucleoprotein", + "complex", + "consists", + "major", + "protein", + "mvp", + "two", + "minor", + "proteins", + "vparp", + "tep1", + "several", + "small", + "untranslated", + "molecules", + "suggested", + "involved", + "drug", + "resistance", ], "id": "http://purl.obolibrary.org/obo/SO_0000404", "lbl": "vault_RNA", @@ -7507,6 +8915,41 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "y", "rna", + "rnas", + "components", + "ro", + "ribonucleoprotein", + "particle", + "rnp", + "association", + "ro60", + "la", + "proteins", + "well", + "conserved", + "function", + "known", + "humans", + "component", + "one", + "four", + "small", + "hy1", + "hy3", + "hy4", + "hy5", + "predicted", + "fold", + "secondary", + "structure", + "containing", + "three", + "stem", + "structures", + "largest", + "contains", + "additional", + "hairpin", ], "id": "http://purl.obolibrary.org/obo/SO_0000405", "lbl": "Y_RNA", @@ -7551,6 +8994,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "rasirna", + "17", + "28", + "nt", + "small", + "interfering", + "rna", + "derived", + "transcripts", + "repetitive", + "elements", ], "id": "http://purl.obolibrary.org/obo/SO_0000454", "lbl": "rasiRNA", @@ -7596,6 +9049,92 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "srp", "rna", + "signal", + "recognition", + "particle", + "universally", + "conserved", + "ribonucleoprotein", + "involved", + "co", + "translational", + "targeting", + "proteins", + "membranes", + "eukaryotic", + "consists", + "300", + "nucleotide", + "7s", + "six", + "srps", + "72", + "68", + "54", + "19", + "14", + "9", + "archaeal", + "homologues", + "srp19", + "srp54", + "eubacteria", + "4", + "5s", + "ffh", + "protein", + "homologue", + "rnas", + "similar", + "secondary", + "structures", + "eight", + "helical", + "elements", + "fold", + "alu", + "domains", + "separated", + "long", + "linker", + "region", + "eubacterial", + "generally", + "simpler", + "structure", + "m", + "domain", + "bound", + "corresponds", + "helix", + "8", + "gram", + "positive", + "bacteria", + "e", + "g", + "bacillus", + "subtilis", + "however", + "larger", + "also", + "thought", + "mediate", + "peptide", + "chain", + "elongation", + "retardation", + "function", + "interacts", + "mediates", + "sequence", + "eukaryotes", + "archaea", + "6", + "complex", + "assembly", + "stabilizes", + "binding", ], "id": "http://purl.obolibrary.org/obo/SO_0000590", "lbl": "SRP_RNA", @@ -7644,6 +9183,23 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "guide", "rna", + "short", + "3", + "uridylated", + "form", + "duplex", + "except", + "post", + "transcriptionally", + "added", + "oligo", + "u", + "tail", + "0000609", + "stretch", + "mature", + "edited", + "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0000602", "lbl": "guide_RNA", @@ -7693,6 +9249,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "antisense", "rna", + "transcribed", + "coding", + "rather", + "template", + "strand", + "dna", + "therefore", + "complementary", + "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0000644", "lbl": "antisense_RNA", @@ -7739,6 +9304,30 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "class", "ii", "rna", + "small", + "non", + "coding", + "59", + "60", + "nt", + "long", + "containing", + "5", + "3", + "ends", + "predicted", + "come", + "together", + "form", + "stem", + "structure", + "identified", + "social", + "amoeba", + "dictyostelium", + "discoideum", + "localized", + "cytoplasm", ], "id": "http://purl.obolibrary.org/obo/SO_0000989", "lbl": "class_II_RNA", @@ -7768,6 +9357,35 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "class", "rna", + "small", + "non", + "coding", + "55", + "65", + "nt", + "long", + "containing", + "highly", + "conserved", + "5", + "3", + "ends", + "16", + "8", + "respectively", + "predicted", + "come", + "together", + "form", + "stem", + "structure", + "identified", + "social", + "amoeba", + "dictyostelium", + "discoideum", + "localized", + "cytoplasm", ], "id": "http://purl.obolibrary.org/obo/SO_0000990", "lbl": "class_I_RNA", @@ -7799,6 +9417,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "tasirna", + "sequence", + "21", + "nucleotide", + "double", + "stranded", + "polyadenylated", + "non", + "coding", + "rna", + "transcribed", + "tas", + "gene", ], "id": "http://purl.obolibrary.org/obo/SO_0001800", "lbl": "tasiRNA", @@ -7835,6 +9465,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "enhancerrna", + "short", + "ncrna", + "transcribed", + "enhancer", + "may", + "regulatory", + "function", ], "id": "http://purl.obolibrary.org/obo/SO_0001870", "lbl": "enhancerRNA", @@ -7873,6 +9510,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "lnc", "rna", + "non", + "coding", + "200nucleotides", + "length", ], "id": "http://purl.obolibrary.org/obo/SO_0001877", "lbl": "lnc_RNA", @@ -7927,6 +9568,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "telomeric", "transcript", + "non", + "coding", + "derived", + "telomere", ], "id": "http://purl.obolibrary.org/obo/SO_0001927", "lbl": "telomeric_transcript", @@ -7963,6 +9608,42 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "prirna", + "small", + "rna", + "molecule", + "22", + "23", + "nt", + "size", + "product", + "longer", + "production", + "prirnas", + "independent", + "dicer", + "involves", + "binding", + "argonaute", + "trimming", + "triman", + "fission", + "yeast", + "trigger", + "establishment", + "heterochromatin", + "primarily", + "generated", + "centromeric", + "transcripts", + "dg", + "dh", + "repeats", + "may", + "also", + "produced", + "degradation", + "products", + "primary", ], "id": "http://purl.obolibrary.org/obo/SO_0002022", "lbl": "priRNA", @@ -8001,6 +9682,20 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "shrna", + "short", + "hairpin", + "rna", + "transcript", + "makes", + "tight", + "turn", + "used", + "silence", + "target", + "gene", + "expression", + "via", + "interference", ], "id": "http://purl.obolibrary.org/obo/SO_0002031", "lbl": "shRNA", @@ -8047,6 +9742,34 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "scarna", + "ncrna", + "specific", + "cajal", + "body", + "demonstrated", + "function", + "guide", + "rna", + "site", + "synthesis", + "2", + "o", + "ribose", + "methylated", + "nucleotides", + "pseudouridines", + "polymerase", + "ii", + "transcribed", + "u1", + "u2", + "u4", + "u5", + "spliceosomal", + "small", + "nuclear", + "rnas", + "snrnas", ], "id": "http://purl.obolibrary.org/obo/SO_0002095", "lbl": "scaRNA", @@ -8096,6 +9819,25 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "prime", "overlapping", "ncrna", + "transcript", + "ditag", + "digital", + "gene", + "expression", + "profiling", + "published", + "experimental", + "data", + "strongly", + "supports", + "existence", + "short", + "non", + "coding", + "transcripts", + "transcribed", + "3", + "utr", ], "id": "http://purl.obolibrary.org/obo/SO_0002120", "lbl": "three_prime_overlapping_ncrna", @@ -8145,6 +9887,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rrna", "cleavage", "rna", + "ncrna", + "part", + "ribonucleoprotein", + "cleaves", + "primary", + "pre", + "transcript", + "process", + "producing", + "mature", + "molecules", ], "id": "http://purl.obolibrary.org/obo/SO_0005843", "lbl": "rRNA_cleavage_RNA", @@ -8176,6 +9929,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pseudogene", "processed", "transcript", + "contain", + "cds", + "fullfills", + "annotation", + "criteria", + "necessarily", + "functionally", + "non", + "coding", ], "id": "http://purl.obolibrary.org/obo/SO_0002116", "lbl": "polymorphic_pseudogene_processed_transcript", @@ -8216,6 +9978,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "bacterial", "terminator", + "signal", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0000614", "lbl": "bacterial_terminator", @@ -8269,6 +10033,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pheromone", "response", "element", + "pre", + "yeast", + "tfbs", + "consensus", + "site", + "tgaaac", + "g", ], "id": "http://purl.obolibrary.org/obo/SO_0002045", "lbl": "pheromone_response_element", @@ -8313,6 +10084,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "operator", + "regulatory", + "element", + "operon", + "activators", + "repressors", + "bind", + "thereby", + "effecting", + "translation", + "genes", ], "id": "http://purl.obolibrary.org/obo/SO_0000057", "lbl": "operator", @@ -8351,6 +10132,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "bacterial", "rnapol", "promoter", + "dna", + "sequence", + "rna", + "polymerase", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0000613", "lbl": "bacterial_RNApol_promoter", @@ -8379,6 +10167,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "promoter", + "regulatory", + "region", + "composed", + "tss", + "binding", + "sites", + "tf", + "complexes", + "basal", + "transcription", + "machinery", ], "id": "http://purl.obolibrary.org/obo/SO_0000167", "lbl": "promoter", @@ -8426,6 +10225,28 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "insulator", + "regulatory", + "region", + "1", + "located", + "cm", + "gene", + "promoter", + "prevents", + "crm", + "modulating", + "genes", + "expression", + "2", + "acts", + "chromatin", + "boundary", + "element", + "barrier", + "block", + "encroachment", + "condensed", + "adjacent", ], "id": "http://purl.obolibrary.org/obo/SO_0000627", "lbl": "insulator", @@ -8472,6 +10293,50 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "crm", + "regulatory", + "region", + "transcription", + "factor", + "binding", + "sites", + "clustered", + "regulate", + "various", + "aspects", + "activities", + "crms", + "located", + "kb", + "hundred", + "upstream", + "basal", + "promoter", + "coding", + "sequence", + "within", + "introns", + "downstream", + "3", + "utr", + "sequences", + "well", + "different", + "chromosome", + "single", + "gene", + "regulated", + "multiple", + "give", + "precise", + "control", + "spatial", + "temporal", + "expression", + "function", + "nodes", + "large", + "intertwined", + "network", ], "id": "http://purl.obolibrary.org/obo/SO_0000727", "lbl": "CRM", @@ -8517,6 +10382,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "promoter", "targeting", "sequence", + "transcriptional", + "cis", + "regulatory", + "region", + "restricts", + "activity", + "crm", + "single", + "functions", + "insulator", + "located", ], "id": "http://purl.obolibrary.org/obo/SO_0001058", "lbl": "promoter_targeting_sequence", @@ -8545,6 +10421,20 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "isre", + "transcriptional", + "cis", + "regulatory", + "region", + "containing", + "consensus", + "yagtttc", + "ytttycc", + "responsible", + "increased", + "transcription", + "via", + "interferon", + "binding", ], "id": "http://purl.obolibrary.org/obo/SO_0001715", "lbl": "ISRE", @@ -8586,6 +10476,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "promoter", "flanking", "region", + "immediately", + "adjacent", + "may", + "contain", + "transcription", + "factor", + "binding", + "sites", ], "id": "http://purl.obolibrary.org/obo/SO_0001952", "lbl": "promoter_flanking_region", @@ -8623,6 +10521,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "splice", "enhancer", + "region", + "transcript", + "regulates", + "splicing", ], "id": "http://purl.obolibrary.org/obo/SO_0000344", "lbl": "splice_enhancer", @@ -8657,6 +10559,28 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "polymorphic", "pseudogene", "transcript", + "contains", + "cds", + "one", + "splice", + "junctions", + "50bp", + "downstream", + "stop", + "codon", + "premature", + "introduced", + "directly", + "indirectly", + "result", + "variation", + "e", + "must", + "present", + "protein", + "coding", + "pseudogenic", + "alleles", ], "id": "http://purl.obolibrary.org/obo/SO_0002118", "lbl": "NMD_polymorphic_pseudogene_transcript", @@ -8704,6 +10628,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "subunit", "primary", "transcript", + "encoding", + "ribosomal", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000255", "lbl": "rRNA_small_subunit_primary_transcript", @@ -8736,6 +10663,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "subunit", "primary", "transcript", + "encoding", + "ribosomal", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000325", "lbl": "rRNA_large_subunit_primary_transcript", @@ -8774,6 +10704,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "alanyl", ], "id": "http://purl.obolibrary.org/obo/SO_0000211", "lbl": "alanine_tRNA_primary_transcript", @@ -8805,6 +10737,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "arginyl", + "0000255", ], "id": "http://purl.obolibrary.org/obo/SO_0000212", "lbl": "arginine_tRNA_primary_transcript", @@ -8836,6 +10771,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "asparaginyl", + "0000256", ], "id": "http://purl.obolibrary.org/obo/SO_0000213", "lbl": "asparagine_tRNA_primary_transcript", @@ -8868,6 +10806,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "aspartyl", + "0000257", ], "id": "http://purl.obolibrary.org/obo/SO_0000214", "lbl": "aspartic_acid_tRNA_primary_transcript", @@ -8899,6 +10840,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "cysteinyl", + "0000258", ], "id": "http://purl.obolibrary.org/obo/SO_0000215", "lbl": "cysteine_tRNA_primary_transcript", @@ -8931,6 +10875,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "glutaminyl", + "0000260", ], "id": "http://purl.obolibrary.org/obo/SO_0000216", "lbl": "glutamic_acid_tRNA_primary_transcript", @@ -8962,6 +10909,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "glutamyl", + "0000260", ], "id": "http://purl.obolibrary.org/obo/SO_0000217", "lbl": "glutamine_tRNA_primary_transcript", @@ -8993,6 +10943,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "glycyl", + "0000263", ], "id": "http://purl.obolibrary.org/obo/SO_0000218", "lbl": "glycine_tRNA_primary_transcript", @@ -9024,6 +10977,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "histidyl", + "0000262", ], "id": "http://purl.obolibrary.org/obo/SO_0000219", "lbl": "histidine_tRNA_primary_transcript", @@ -9055,6 +11011,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "isoleucyl", + "0000263", ], "id": "http://purl.obolibrary.org/obo/SO_0000220", "lbl": "isoleucine_tRNA_primary_transcript", @@ -9086,6 +11045,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "leucyl", + "0000264", ], "id": "http://purl.obolibrary.org/obo/SO_0000221", "lbl": "leucine_tRNA_primary_transcript", @@ -9117,6 +11079,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "lysyl", + "0000265", ], "id": "http://purl.obolibrary.org/obo/SO_0000222", "lbl": "lysine_tRNA_primary_transcript", @@ -9148,6 +11113,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "methionyl", + "0000266", ], "id": "http://purl.obolibrary.org/obo/SO_0000223", "lbl": "methionine_tRNA_primary_transcript", @@ -9179,6 +11147,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "phenylalanyl", + "0000267", ], "id": "http://purl.obolibrary.org/obo/SO_0000224", "lbl": "phenylalanine_tRNA_primary_transcript", @@ -9210,6 +11181,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "prolyl", + "0000268", ], "id": "http://purl.obolibrary.org/obo/SO_0000225", "lbl": "proline_tRNA_primary_transcript", @@ -9241,6 +11215,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "seryl", + "000269", ], "id": "http://purl.obolibrary.org/obo/SO_0000226", "lbl": "serine_tRNA_primary_transcript", @@ -9272,6 +11249,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "threonyl", + "000270", ], "id": "http://purl.obolibrary.org/obo/SO_0000227", "lbl": "threonine_tRNA_primary_transcript", @@ -9303,6 +11283,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "tryptophanyl", + "000271", ], "id": "http://purl.obolibrary.org/obo/SO_0000228", "lbl": "tryptophan_tRNA_primary_transcript", @@ -9334,6 +11317,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "tyrosyl", + "000272", ], "id": "http://purl.obolibrary.org/obo/SO_0000229", "lbl": "tyrosine_tRNA_primary_transcript", @@ -9365,6 +11351,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "valyl", + "000273", ], "id": "http://purl.obolibrary.org/obo/SO_0000230", "lbl": "valine_tRNA_primary_transcript", @@ -9396,6 +11385,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "pyrrolysyl", + "0000766", ], "id": "http://purl.obolibrary.org/obo/SO_0001178", "lbl": "pyrrolysine_tRNA_primary_transcript", @@ -9428,6 +11420,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "also", + "encodes", + "pre", + "sequence", + "processed", + "form", + "functionally", + "active", + "mirna", ], "id": "http://purl.obolibrary.org/obo/SO_0002037", "lbl": "miR_encoding_tRNA_primary_transcript", @@ -9467,6 +11468,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trna", "primary", "transcript", + "encoding", + "seryl", + "000269", ], "id": "http://purl.obolibrary.org/obo/SO_0005856", "lbl": "selenocysteine_tRNA_primary_transcript", @@ -9499,6 +11503,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "snorna", "primary", "transcript", + "encoding", + "small", + "nucleolar", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000580", "lbl": "methylation_guide_snoRNA_primary_transcript", @@ -9531,6 +11539,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "snorna", "primary", "transcript", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0000582", "lbl": "rRNA_cleavage_snoRNA_primary_transcript", @@ -9564,6 +11573,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "snorna", "primary", "transcript", + "encoding", + "small", + "nucleolar", + "rna", + "family", ], "id": "http://purl.obolibrary.org/obo/SO_0000595", "lbl": "C_D_box_snoRNA_primary_transcript", @@ -9597,6 +11611,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "snorna", "primary", "transcript", + "encoding", + "small", + "nucleolar", + "rna", + "family", ], "id": "http://purl.obolibrary.org/obo/SO_0000596", "lbl": "H_ACA_box_snoRNA_primary_transcript", @@ -9629,6 +11648,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "snorna", "primary", "transcript", + "also", + "encodes", + "pre", + "sequence", + "processed", + "form", + "functionally", + "active", + "mirna", ], "id": "http://purl.obolibrary.org/obo/SO_0002034", "lbl": "miR_encoding_snoRNA_primary_transcript", @@ -9668,6 +11696,20 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "snorna", "primary", "transcript", + "evolutionarily", + "conserved", + "eukaryotic", + "low", + "molecular", + "weight", + "rna", + "capable", + "intermolecular", + "hybridization", + "homologous", + "heterologous", + "18s", + "rrna", ], "id": "http://purl.obolibrary.org/obo/SO_0005837", "lbl": "U14_snoRNA_primary_transcript", @@ -9704,6 +11746,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "lncrna", "primary", "transcript", + "also", + "encodes", + "pre", + "sequence", + "processed", + "form", + "functionally", + "active", + "mirna", ], "id": "http://purl.obolibrary.org/obo/SO_0002036", "lbl": "miR_encoding_lncRNA_primary_transcript", @@ -9742,6 +11793,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "lncrna", "retained", "intron", + "transcript", + "containing", ], "id": "http://purl.obolibrary.org/obo/SO_0002113", "lbl": "lncRNA_with_retained_intron", @@ -9789,9 +11842,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "shrna", "primary", "transcript", - ], - "id": "http://purl.obolibrary.org/obo/SO_0002039", - "lbl": "miR_encoding_shRNA_primary_transcript", + "also", + "encodes", + "pre", + "sequence", + "processed", + "form", + "functionally", + "active", + "mirna", + ], + "id": "http://purl.obolibrary.org/obo/SO_0002039", + "lbl": "miR_encoding_shRNA_primary_transcript", "meta": { "basicPropertyValues": [ { @@ -9829,6 +11891,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "vaultrna", "primary", "transcript", + "also", + "encodes", + "pre", + "sequence", + "processed", + "form", + "functionally", + "active", + "mirna", ], "id": "http://purl.obolibrary.org/obo/SO_0002041", "lbl": "miR_encoding_vaultRNA_primary_transcript", @@ -9870,6 +11941,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rna", "primary", "transcript", + "also", + "encodes", + "pre", + "sequence", + "processed", + "form", + "functionally", + "active", + "mirna", ], "id": "http://purl.obolibrary.org/obo/SO_0002043", "lbl": "miR_encoding_Y_RNA_primary_transcript", @@ -10033,6 +12113,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "recoded", "translational", "bypass", + "translation", + "suspended", + "particular", + "codon", + "resumed", + "non", + "overlapping", + "downstream", ], "id": "http://purl.obolibrary.org/obo/SO_1001264", "lbl": "mRNA_recoded_by_translational_bypass", @@ -10064,6 +12152,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "recoded", "codon", "redefinition", + "modified", + "alteration", + "meaning", ], "id": "http://purl.obolibrary.org/obo/SO_1001265", "lbl": "mRNA_recoded_by_codon_redefinition", @@ -10094,6 +12185,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "small", "subunit", "rrna", + "ribosomal", + "rna", + "transcript", + "structures", + "ribosome", ], "id": "http://purl.obolibrary.org/obo/SO_0000650", "lbl": "small_subunit_rRNA", @@ -10141,6 +12237,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "large", "subunit", "rrna", + "ribosomal", + "rna", + "transcript", + "structures", + "ribosome", ], "id": "http://purl.obolibrary.org/obo/SO_0000651", "lbl": "large_subunit_rRNA", @@ -10187,6 +12288,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "mt", "rrna", + "mitochondrial", + "ribosomal", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002128", "lbl": "mt_rRNA", @@ -10228,6 +12332,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "alanyl", "trna", + "sequence", + "alanine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000254", "lbl": "alanyl_tRNA", @@ -10265,6 +12375,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "asparaginyl", "trna", + "sequence", + "asparagine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000256", "lbl": "asparaginyl_tRNA", @@ -10302,6 +12418,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "aspartyl", "trna", + "sequence", + "aspartic", + "acid", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000257", "lbl": "aspartyl_tRNA", @@ -10339,6 +12462,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "cysteinyl", "trna", + "sequence", + "cysteine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000258", "lbl": "cysteinyl_tRNA", @@ -10376,6 +12505,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "glutaminyl", "trna", + "sequence", + "glutamine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000259", "lbl": "glutaminyl_tRNA", @@ -10413,6 +12548,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "glutamyl", "trna", + "sequence", + "glutamic", + "acid", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000260", "lbl": "glutamyl_tRNA", @@ -10450,6 +12592,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "glycyl", "trna", + "sequence", + "glycine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000261", "lbl": "glycyl_tRNA", @@ -10487,6 +12635,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "histidyl", "trna", + "sequence", + "histidine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000262", "lbl": "histidyl_tRNA", @@ -10524,6 +12678,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "isoleucyl", "trna", + "sequence", + "isoleucine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000263", "lbl": "isoleucyl_tRNA", @@ -10561,6 +12721,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "leucyl", "trna", + "sequence", + "leucine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000264", "lbl": "leucyl_tRNA", @@ -10598,6 +12764,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "lysyl", "trna", + "sequence", + "lysine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000265", "lbl": "lysyl_tRNA", @@ -10635,6 +12807,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "methionyl", "trna", + "sequence", + "methionine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000266", "lbl": "methionyl_tRNA", @@ -10672,6 +12850,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "phenylalanyl", "trna", + "sequence", + "phenylalanine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000267", "lbl": "phenylalanyl_tRNA", @@ -10709,6 +12893,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "prolyl", "trna", + "sequence", + "proline", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000268", "lbl": "prolyl_tRNA", @@ -10746,6 +12936,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "seryl", "trna", + "sequence", + "serine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000269", "lbl": "seryl_tRNA", @@ -10783,6 +12979,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "threonyl", "trna", + "sequence", + "threonine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000270", "lbl": "threonyl_tRNA", @@ -10820,6 +13022,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "tryptophanyl", "trna", + "sequence", + "tryptophan", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000271", "lbl": "tryptophanyl_tRNA", @@ -10857,6 +13065,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "tyrosyl", "trna", + "sequence", + "tyrosine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000272", "lbl": "tyrosyl_tRNA", @@ -10894,6 +13108,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "valyl", "trna", + "sequence", + "valine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000273", "lbl": "valyl_tRNA", @@ -10931,6 +13151,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "pyrrolysyl", "trna", + "sequence", + "pyrrolysine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0000766", "lbl": "pyrrolysyl_tRNA", @@ -10968,6 +13194,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "arginyl", "trna", + "sequence", + "arginine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0001036", "lbl": "arginyl_tRNA", @@ -10997,6 +13229,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "mt", "trna", + "mitochondrial", + "transfer", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002129", "lbl": "mt_tRNA", @@ -11038,6 +13273,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "selenocysteinyl", "trna", + "sequence", + "selenocysteine", + "anticodon", + "3", + "binding", + "region", ], "id": "http://purl.obolibrary.org/obo/SO_0005857", "lbl": "selenocysteinyl_tRNA", @@ -11075,6 +13316,57 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u1", "snrna", + "small", + "nuclear", + "rna", + "component", + "spliceosome", + "involved", + "pre", + "mrna", + "splicing", + "5", + "end", + "forms", + "complementary", + "base", + "pairs", + "splice", + "junction", + "thus", + "defining", + "donor", + "site", + "intron", + "significant", + "differences", + "sequence", + "secondary", + "structure", + "metazoan", + "yeast", + "snrnas", + "latter", + "much", + "longer", + "568", + "nucleotides", + "compared", + "164", + "human", + "nevertheless", + "predictions", + "suggest", + "share", + "common", + "core", + "consisting", + "helices", + "ii", + "proximal", + "region", + "iii", + "iv", ], "id": "http://purl.obolibrary.org/obo/SO_0000391", "lbl": "U1_snRNA", @@ -11133,6 +13425,45 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u2", "snrna", + "small", + "nuclear", + "rna", + "component", + "spliceosome", + "involved", + "pre", + "mrna", + "splicing", + "complementary", + "binding", + "area", + "lying", + "towards", + "5", + "end", + "3", + "hairpin", + "branchpoint", + "sequence", + "bps", + "intron", + "results", + "bulging", + "unpaired", + "adenine", + "initiates", + "nucleophilic", + "attack", + "intronic", + "splice", + "site", + "thus", + "starting", + "first", + "two", + "transesterification", + "reactions", + "mediate", ], "id": "http://purl.obolibrary.org/obo/SO_0000392", "lbl": "U2_snRNA", @@ -11191,6 +13522,35 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u4", "snrna", + "small", + "nuclear", + "rna", + "component", + "major", + "u2", + "dependent", + "spliceosome", + "forms", + "duplex", + "u6", + "splicing", + "round", + "displaced", + "atp", + "manner", + "allowing", + "refold", + "create", + "active", + "site", + "catalysis", + "recycling", + "process", + "involving", + "protein", + "prp24", + "re", + "anneals", ], "id": "http://purl.obolibrary.org/obo/SO_0000393", "lbl": "U4_snRNA", @@ -11249,6 +13609,21 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u4atac", "snrna", + "required", + "splicing", + "minor", + "u12", + "dependent", + "class", + "eukaryotic", + "nuclear", + "introns", + "forms", + "base", + "paired", + "complex", + "u6atac", + "0000397", ], "id": "http://purl.obolibrary.org/obo/SO_0000394", "lbl": "U4atac_snRNA", @@ -11302,6 +13677,31 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u5", "snrna", + "rna", + "component", + "types", + "known", + "spliceosome", + "precise", + "function", + "molecule", + "unknown", + "though", + "5", + "loop", + "required", + "splice", + "site", + "selection", + "p220", + "binding", + "3", + "stem", + "sm", + "important", + "protein", + "cap", + "methylation", ], "id": "http://purl.obolibrary.org/obo/SO_0000395", "lbl": "U5_snRNA", @@ -11360,6 +13760,29 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u6", "snrna", + "component", + "spliceosome", + "involved", + "splicing", + "pre", + "mrna", + "putative", + "secondary", + "structure", + "consensus", + "base", + "pairing", + "confined", + "short", + "5", + "stem", + "loop", + "thought", + "form", + "extensive", + "pair", + "interactions", + "u4", ], "id": "http://purl.obolibrary.org/obo/SO_0000396", "lbl": "U6_snRNA", @@ -11418,6 +13841,21 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u6atac", "snrna", + "required", + "splicing", + "minor", + "u12", + "dependent", + "class", + "eukaryotic", + "nuclear", + "introns", + "forms", + "base", + "paired", + "complex", + "u4atac", + "0000394", ], "id": "http://purl.obolibrary.org/obo/SO_0000397", "lbl": "U6atac_snRNA", @@ -11467,6 +13905,27 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u11", "snrna", + "plays", + "role", + "splicing", + "minor", + "u12", + "dependent", + "class", + "eukaryotic", + "nuclear", + "introns", + "similar", + "u1", + "major", + "spliceosome", + "base", + "pairs", + "conserved", + "5", + "splice", + "site", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000398", "lbl": "U11_snRNA", @@ -11525,6 +13984,26 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "u12", "snrna", + "small", + "nuclear", + "together", + "u4atac", + "u6atac", + "u5", + "u11", + "snrnas", + "associated", + "proteins", + "forms", + "spliceosome", + "cleaves", + "divergent", + "class", + "low", + "abundance", + "pre", + "mrna", + "introns", ], "id": "http://purl.obolibrary.org/obo/SO_0000399", "lbl": "U12_snRNA", @@ -11585,6 +14064,51 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "d", "box", "snorna", + "snornas", + "also", + "contain", + "long", + "10", + "nt", + "sequences", + "complementary", + "rrna", + "boxes", + "well", + "usually", + "located", + "close", + "proximity", + "form", + "structure", + "known", + "motif", + "important", + "stability", + "processing", + "nucleolar", + "targeting", + "function", + "small", + "number", + "involved", + "however", + "predicted", + "serve", + "guide", + "rnas", + "ribose", + "methylation", + "involves", + "direct", + "base", + "pairing", + "site", + "modified", + "selection", + "nucleotide", + "fixed", + "distance", ], "id": "http://purl.obolibrary.org/obo/SO_0000593", "lbl": "C_D_box_snoRNA", @@ -11627,6 +14151,48 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "aca", "box", "snorna", + "members", + "family", + "contain", + "triplet", + "exactly", + "3", + "nt", + "upstream", + "end", + "hinge", + "region", + "links", + "two", + "structurally", + "similar", + "functional", + "domains", + "molecule", + "boxes", + "important", + "biosynthesis", + "function", + "snornas", + "involved", + "rrna", + "processing", + "others", + "known", + "predicted", + "participate", + "selection", + "uridine", + "nucleosides", + "converted", + "pseudouridines", + "site", + "mediated", + "direct", + "base", + "pairing", + "one", + "targeting", ], "id": "http://purl.obolibrary.org/obo/SO_0000594", "lbl": "H_ACA_box_snoRNA", @@ -11663,6 +14229,45 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "mirna", + "small", + "22", + "nt", + "rna", + "molecule", + "endogenous", + "transcript", + "gene", + "product", + "non", + "coding", + "genes", + "micro", + "rnas", + "produced", + "precursor", + "molecules", + "0000647", + "form", + "local", + "hairpin", + "structures", + "ordinarily", + "processed", + "usually", + "via", + "dicer", + "pathway", + "single", + "accumulates", + "one", + "arm", + "may", + "trigger", + "cleavage", + "target", + "act", + "translational", + "repressors", ], "id": "http://purl.obolibrary.org/obo/SO_0000276", "lbl": "miRNA", @@ -11728,6 +14333,27 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "rna", "6s", + "small", + "184", + "nt", + "e", + "coli", + "forms", + "hairpin", + "type", + "structure", + "associates", + "polymerase", + "highly", + "specific", + "manner", + "represses", + "expression", + "sigma70", + "dependent", + "promoter", + "stationary", + "phase", ], "id": "http://purl.obolibrary.org/obo/SO_0000376", "lbl": "RNA_6S", @@ -11767,6 +14393,46 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "csrb", "rsmb", "rna", + "enterobacterial", + "binds", + "csra", + "protein", + "rnas", + "contain", + "conserved", + "motif", + "caggxxg", + "found", + "18", + "copies", + "suggested", + "bind", + "csr", + "regulatory", + "system", + "strong", + "negative", + "effect", + "glycogen", + "biosynthesis", + "glyconeogenesis", + "catabolism", + "positive", + "glycolysis", + "bacteria", + "erwinia", + "caratovara", + "rsma", + "shown", + "regulate", + "production", + "virulence", + "determinants", + "extracellular", + "enzymes", + "also", + "member", + "family", ], "id": "http://purl.obolibrary.org/obo/SO_0000377", "lbl": "CsrB_RsmB_RNA", @@ -11800,6 +14466,64 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "dsra", "rna", + "regulates", + "transcription", + "overcoming", + "transcriptional", + "silencing", + "nucleoid", + "associated", + "h", + "ns", + "protein", + "translation", + "promoting", + "efficient", + "stress", + "sigma", + "factor", + "rpos", + "two", + "activities", + "separated", + "mutation", + "first", + "three", + "stem", + "loops", + "85", + "nucleotide", + "necessary", + "anti", + "action", + "second", + "loop", + "essential", + "antisilencing", + "less", + "critical", + "third", + "behaves", + "terminator", + "substituted", + "trp", + "without", + "loss", + "either", + "function", + "sequence", + "complementary", + "upstream", + "leader", + "portion", + "messenger", + "suggesting", + "pairing", + "message", + "might", + "important", + "translational", + "regulation", ], "id": "http://purl.obolibrary.org/obo/SO_0000378", "lbl": "DsrA_RNA", @@ -11834,6 +14558,39 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "oxys", "rna", + "small", + "untranslated", + "induced", + "response", + "oxidative", + "stress", + "escherichia", + "coli", + "acts", + "global", + "regulator", + "activate", + "repress", + "expression", + "many", + "40", + "genes", + "including", + "fhla", + "encoded", + "transcriptional", + "activator", + "rpos", + "sigma", + "subunit", + "polymerase", + "bound", + "hfq", + "protein", + "increases", + "interaction", + "target", + "messages", ], "id": "http://purl.obolibrary.org/obo/SO_0000384", "lbl": "OxyS_RNA", @@ -11868,6 +14625,60 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "rpra", "rna", + "translational", + "regulation", + "stationary", + "phase", + "sigma", + "factor", + "rpos", + "mediated", + "formation", + "double", + "stranded", + "stem", + "loop", + "structure", + "upstream", + "region", + "messenger", + "occluding", + "translation", + "initiation", + "site", + "clones", + "carrying", + "regulator", + "increased", + "gene", + "encodes", + "106", + "nucleotide", + "regulatory", + "dsra", + "rfam", + "rf00014", + "predicted", + "form", + "three", + "loops", + "thus", + "least", + "two", + "small", + "rnas", + "participate", + "positive", + "unlike", + "extensive", + "complementarity", + "leader", + "leaving", + "mechanism", + "action", + "unclear", + "non", + "essential", ], "id": "http://purl.obolibrary.org/obo/SO_0000387", "lbl": "RprA_RNA", @@ -11902,6 +14713,32 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "rre", "rna", + "rev", + "response", + "element", + "encoded", + "within", + "hiv", + "env", + "gene", + "essential", + "regulatory", + "protein", + "binds", + "internal", + "loop", + "leading", + "encouraging", + "binding", + "rnp", + "complex", + "critical", + "mrna", + "export", + "hence", + "expression", + "structural", + "proteins", ], "id": "http://purl.obolibrary.org/obo/SO_0000388", "lbl": "RRE_RNA", @@ -11932,6 +14769,21 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "spot", "42", "rna", + "109", + "nucleotide", + "e", + "coli", + "seems", + "regulatory", + "role", + "galactose", + "operon", + "changes", + "levels", + "implicated", + "affecting", + "dna", + "polymerase", ], "id": "http://purl.obolibrary.org/obo/SO_0000389", "lbl": "spot_42_RNA", @@ -11965,6 +14817,47 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "tmrna", + "liberates", + "mrna", + "stalled", + "ribosome", + "accomplish", + "part", + "used", + "reading", + "frame", + "ends", + "translation", + "stop", + "signal", + "broken", + "replaced", + "leads", + "addition", + "proteolysis", + "tag", + "incomplete", + "protein", + "enabling", + "recognition", + "protease", + "recently", + "number", + "permuted", + "tmrnas", + "genes", + "found", + "encoded", + "two", + "parts", + "identified", + "eubacteria", + "chloroplasts", + "absent", + "archeal", + "eukaryote", + "nuclear", + "genomes", ], "id": "http://purl.obolibrary.org/obo/SO_0000584", "lbl": "tmRNA", @@ -12006,6 +14899,32 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "sirna", + "small", + "rna", + "molecule", + "product", + "longer", + "exogenous", + "endogenous", + "dsrna", + "either", + "bimolecular", + "duplex", + "long", + "hairpin", + "processed", + "via", + "dicer", + "pathway", + "numerous", + "sirnas", + "accumulate", + "strands", + "srnas", + "trigger", + "cleavage", + "target", + "molecules", ], "id": "http://purl.obolibrary.org/obo/SO_0000646", "lbl": "siRNA", @@ -12050,6 +14969,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "pirna", + "small", + "non", + "coding", + "rna", + "part", + "silencing", + "system", + "prevents", + "spreading", + "selfish", + "genetic", + "elements", ], "id": "http://purl.obolibrary.org/obo/SO_0001035", "lbl": "piRNA", @@ -12091,6 +15022,21 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` { "fullTextWords": [ "mor", + "non", + "coding", + "transcript", + "encoded", + "sequences", + "adjacent", + "ends", + "5", + "3", + "mir", + "encoding", + "abut", + "loop", + "precursor", + "mirna", ], "id": "http://purl.obolibrary.org/obo/SO_0002032", "lbl": "moR", @@ -12131,6 +15077,16 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "lor", + "short", + "non", + "coding", + "transcript", + "loop", + "derived", + "sequences", + "encoded", + "precursor", + "mirna", ], "id": "http://purl.obolibrary.org/obo/SO_0002033", "lbl": "loR", @@ -12172,6 +15128,22 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "micf", "rna", + "non", + "translated", + "93", + "nt", + "antisense", + "binds", + "target", + "ompf", + "mrna", + "regulates", + "expression", + "inhibiting", + "translation", + "inducing", + "degradation", + "message", ], "id": "http://purl.obolibrary.org/obo/SO_0000383", "lbl": "MicF_RNA", @@ -12205,6 +15177,22 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "lincrna", + "long", + "intervening", + "non", + "coding", + "rna", + "transcript", + "overlap", + "within", + "start", + "end", + "genomic", + "coordinates", + "gene", + "pseudogene", + "either", + "strand", ], "id": "http://purl.obolibrary.org/obo/SO_0001463", "lbl": "lincRNA", @@ -12245,6 +15233,18 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "antisense", "lncrna", + "non", + "coding", + "rna", + "transcribed", + "opposite", + "dna", + "strand", + "compared", + "transcripts", + "overlap", + "part", + "sense", ], "id": "http://purl.obolibrary.org/obo/SO_0001904", "lbl": "antisense_lncRNA", @@ -12287,6 +15287,17 @@ Requested by Thomas Desvignes, Jan 2015.", "sense", "intronic", "ncrna", + "long", + "non", + "coding", + "transcript", + "found", + "within", + "intron", + "gene", + "overlap", + "exonic", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0002131", "lbl": "sense_intronic_ncRNA", @@ -12341,6 +15352,18 @@ Requested by Thomas Desvignes, Jan 2015.", "sense", "overlap", "ncrna", + "long", + "non", + "coding", + "transcript", + "contains", + "protein", + "gene", + "within", + "intronic", + "sequence", + "strand", + "exonic", ], "id": "http://purl.obolibrary.org/obo/SO_0002132", "lbl": "sense_overlap_ncRNA", @@ -12385,6 +15408,28 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "terra", + "non", + "coding", + "rna", + "transcript", + "derived", + "transcription", + "telomere", + "transcripts", + "contain", + "g", + "rich", + "telomeric", + "repeats", + "tracts", + "corresponding", + "adjacent", + "subtelomeric", + "sequences", + "100", + "9000", + "bases", + "long", ], "id": "http://purl.obolibrary.org/obo/SO_0001923", "lbl": "TERRA", @@ -12424,6 +15469,16 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "arret", + "non", + "coding", + "rna", + "transcript", + "complementary", + "subtelomeric", + "tract", + "terra", + "devoid", + "repeats", ], "id": "http://purl.obolibrary.org/obo/SO_0001924", "lbl": "ARRET", @@ -12457,6 +15512,18 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "aria", + "non", + "coding", + "rna", + "transcript", + "derived", + "transcription", + "telomere", + "transcripts", + "consist", + "c", + "rich", + "repeats", ], "id": "http://purl.obolibrary.org/obo/SO_0001925", "lbl": "ARIA", @@ -12491,6 +15558,15 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "anti", "arret", + "non", + "coding", + "rna", + "transcript", + "derived", + "transcription", + "telomere", + "transcripts", + "antisense", ], "id": "http://purl.obolibrary.org/obo/SO_0001926", "lbl": "anti_ARRET", @@ -12585,6 +15661,10 @@ Requested by Thomas Desvignes, Jan 2015.", "rnapol", "iii", "promoter", + "signal", + "rna", + "polymerase", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0000615", "lbl": "terminator_of_type_2_RNApol_III_promoter", @@ -12684,6 +15764,26 @@ Requested by Thomas Desvignes, Jan 2015.", "promoter", "sigma", "ecf", + "factor", + "binding", + "dependency", + "type", + "promoters", + "requires", + "bind", + "identified", + "10", + "35", + "sequence", + "regions", + "order", + "mediate", + "rna", + "polymerase", + "region", + "part", + "transcription", + "initiation", ], "id": "http://purl.obolibrary.org/obo/SO_0001913", "lbl": "bacterial_RNApol_promoter_sigma_ecf", @@ -12724,6 +15824,10 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "bidirectional", "promoter", + "unregulated", + "allows", + "continuous", + "expression", ], "id": "http://purl.obolibrary.org/obo/SO_0000568", "lbl": "bidirectional_promoter", @@ -12754,6 +15858,11 @@ Requested by Thomas Desvignes, Jan 2015.", "rna", "polymerase", "promoter", + "region", + "dna", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0001203", "lbl": "RNA_polymerase_promoter", @@ -12783,6 +15892,10 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "constitutive", "promoter", + "allows", + "continual", + "transcription", + "gene", ], "id": "http://purl.obolibrary.org/obo/SO_0002050", "lbl": "constitutive_promoter", @@ -12820,6 +15933,14 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "inducible", "promoter", + "whereby", + "activity", + "induced", + "presence", + "absence", + "biotic", + "abiotic", + "factors", ], "id": "http://purl.obolibrary.org/obo/SO_0002051", "lbl": "inducible_promoter", @@ -12857,6 +15978,15 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "boundary", "element", + "elements", + "dna", + "motifs", + "prevent", + "heterochromatin", + "spreading", + "neighboring", + "euchromatic", + "regions", ], "id": "http://purl.obolibrary.org/obo/SO_0002020", "lbl": "boundary_element", @@ -12902,6 +16032,23 @@ Requested by Thomas Desvignes, Jan 2015.", "enhancer", "blocking", "element", + "transcriptional", + "cis", + "regulatory", + "region", + "located", + "gene", + "promoter", + "prevents", + "modulating", + "expression", + "sometimes", + "referred", + "insulator", + "may", + "include", + "barrier", + "function", ], "id": "http://purl.obolibrary.org/obo/SO_0002190", "lbl": "enhancer_blocking_element", @@ -12955,6 +16102,23 @@ Requested by Thomas Desvignes, Jan 2015.", "locus", "control", "region", + "dna", + "includes", + "dnase", + "hypersensitive", + "sites", + "located", + "5", + "gene", + "confers", + "high", + "level", + "position", + "independent", + "copy", + "number", + "dependent", + "expression", ], "id": "http://purl.obolibrary.org/obo/SO_0000037", "lbl": "locus_control_region", @@ -13004,6 +16168,21 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "enhancer", + "cis", + "acting", + "sequence", + "increases", + "utilization", + "eukaryotic", + "promoters", + "function", + "either", + "orientation", + "location", + "upstream", + "downstream", + "relative", + "promoter", ], "id": "http://purl.obolibrary.org/obo/SO_0000165", "lbl": "enhancer", @@ -13047,6 +16226,16 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "silencer", + "regulatory", + "region", + "upon", + "binding", + "transcription", + "factors", + "suppress", + "gene", + "genes", + "control", ], "id": "http://purl.obolibrary.org/obo/SO_0000625", "lbl": "silencer", @@ -13089,6 +16278,13 @@ Requested by Thomas Desvignes, Jan 2015.", "intronic", "splice", "enhancer", + "sequences", + "within", + "intron", + "modulate", + "site", + "selection", + "introns", ], "id": "http://purl.obolibrary.org/obo/SO_0000320", "lbl": "intronic_splice_enhancer", @@ -13119,6 +16315,17 @@ Requested by Thomas Desvignes, Jan 2015.", "exonic", "splice", "enhancer", + "splicing", + "enhancers", + "eses", + "facilitate", + "exon", + "definition", + "assisting", + "recruitment", + "factors", + "adjacent", + "intron", ], "id": "http://purl.obolibrary.org/obo/SO_0000683", "lbl": "exonic_splice_enhancer", @@ -13148,6 +16355,13 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "rrna", "18s", + "large", + "polynucleotide", + "eukaryotes", + "functions", + "small", + "subunit", + "ribosome", ], "id": "http://purl.obolibrary.org/obo/SO_0000407", "lbl": "rRNA_18S", @@ -13193,6 +16407,14 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "rrna", "16s", + "large", + "polynucleotide", + "bacteria", + "archaea", + "functions", + "small", + "subunit", + "ribosome", ], "id": "http://purl.obolibrary.org/obo/SO_0001000", "lbl": "rRNA_16S", @@ -13243,6 +16465,37 @@ Requested by Thomas Desvignes, Jan 2015.", "rrna", "5", "8s", + "ribosomal", + "rna", + "component", + "large", + "subunit", + "eukaryotic", + "ribosome", + "transcribed", + "polymerase", + "part", + "45s", + "precursor", + "also", + "contains", + "18s", + "28s", + "functionally", + "thought", + "may", + "involved", + "translocation", + "known", + "form", + "covalent", + "linkage", + "p53", + "tumour", + "suppressor", + "protein", + "found", + "archaea", ], "id": "http://purl.obolibrary.org/obo/SO_0000375", "lbl": "rRNA_5_8S", @@ -13292,6 +16545,43 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "rrna", "5s", + "ribosomal", + "rna", + "component", + "large", + "subunit", + "prokaryotes", + "eukaryotes", + "synthesised", + "polymerase", + "iii", + "eukaryotic", + "rrnas", + "cleaved", + "45s", + "precursor", + "xenopus", + "oocytes", + "shown", + "fingers", + "4", + "7", + "nine", + "zinc", + "finger", + "transcription", + "factor", + "tfiiia", + "bind", + "central", + "region", + "thus", + "addition", + "positively", + "regulating", + "also", + "stabilizes", + "required", ], "id": "http://purl.obolibrary.org/obo/SO_0000652", "lbl": "rRNA_5S", @@ -13341,6 +16631,10 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "rrna", "28s", + "component", + "large", + "ribosomal", + "subunit", ], "id": "http://purl.obolibrary.org/obo/SO_0000653", "lbl": "rRNA_28S", @@ -13390,6 +16684,13 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "rrna", "23s", + "large", + "polynucleotide", + "bacteria", + "archaea", + "functions", + "subunit", + "ribosome", ], "id": "http://purl.obolibrary.org/obo/SO_0001001", "lbl": "rRNA_23S", @@ -13434,6 +16735,13 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "rrna", "25s", + "large", + "polynucleotide", + "functions", + "part", + "subunit", + "ribosome", + "eukaryotes", ], "id": "http://purl.obolibrary.org/obo/SO_0001002", "lbl": "rRNA_25S", @@ -13478,6 +16786,11 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "rrna", "21s", + "component", + "large", + "ribosomal", + "subunit", + "mitochondrial", ], "id": "http://purl.obolibrary.org/obo/SO_0001171", "lbl": "rRNA_21S", @@ -13519,6 +16832,35 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "u14", "snorna", + "small", + "nucleolar", + "rna", + "required", + "early", + "cleavages", + "eukaryotic", + "precursor", + "rrnas", + "yeasts", + "molecule", + "possess", + "stem", + "loop", + "region", + "known", + "y", + "domain", + "essential", + "function", + "similar", + "structure", + "different", + "consensus", + "sequence", + "found", + "plants", + "absent", + "vertebrates", ], "id": "http://purl.obolibrary.org/obo/SO_0000403", "lbl": "U14_snoRNA", @@ -13571,6 +16913,60 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "u3", "snorna", + "member", + "box", + "c", + "d", + "class", + "small", + "nucleolar", + "rnas", + "secondary", + "structure", + "characterised", + "5", + "domain", + "boxes", + "larger", + "3", + "b", + "two", + "domains", + "linked", + "single", + "stranded", + "hinge", + "form", + "motif", + "appears", + "exclusive", + "snornas", + "latter", + "functionally", + "similar", + "motifs", + "found", + "region", + "act", + "pre", + "rrna", + "binding", + "conserved", + "protein", + "sites", + "sufficient", + "nuclear", + "retention", + "also", + "necessary", + "localization", + "stability", + "hypermethylation", + "involved", + "specific", + "interactions", + "processing", + "functions", ], "id": "http://purl.obolibrary.org/obo/SO_0001179", "lbl": "U3_snoRNA", @@ -13621,6 +17017,20 @@ Requested by Thomas Desvignes, Jan 2015.", "methylation", "guide", "snorna", + "specifies", + "site", + "2", + "o", + "ribose", + "rna", + "molecule", + "base", + "pairing", + "short", + "sequence", + "around", + "target", + "residue", ], "id": "http://purl.obolibrary.org/obo/SO_0005841", "lbl": "methylation_guide_snoRNA", @@ -13655,6 +17065,17 @@ Requested by Thomas Desvignes, Jan 2015.", "pseudouridylation", "guide", "snorna", + "specifies", + "site", + "rna", + "molecule", + "base", + "pairing", + "short", + "sequence", + "around", + "target", + "residue", ], "id": "http://purl.obolibrary.org/obo/SO_0001187", "lbl": "pseudouridylation_guide_snoRNA", @@ -13688,6 +17109,29 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "ref", "mirna", + "refseq", + "sequence", + "assigned", + "creation", + "new", + "mature", + "entry", + "database", + "designation", + "remains", + "unchanged", + "even", + "different", + "isomir", + "later", + "shown", + "expressed", + "higher", + "level", + "produced", + "one", + "multiple", + "pre", ], "id": "http://purl.obolibrary.org/obo/SO_0002166", "lbl": "ref_miRNA", @@ -13732,6 +17176,20 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "isomir", + "isomirs", + "bona", + "fide", + "variants", + "mature", + "product", + "connected", + "ref", + "mirna", + "likely", + "variant", + "variations", + "one", + "multiple", ], "id": "http://purl.obolibrary.org/obo/SO_0002167", "lbl": "isomiR", @@ -13763,6 +17221,16 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "gcvb", "rna", + "small", + "untranslated", + "involved", + "expression", + "dipeptide", + "oligopeptide", + "transport", + "systems", + "escherichia", + "coli", ], "id": "http://purl.obolibrary.org/obo/SO_0000379", "lbl": "GcvB_RNA", @@ -13797,6 +17265,14 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "rnapol", "promoter", + "dna", + "sequence", + "eukaryotic", + "rna", + "polymerase", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0000169", "lbl": "RNApol_I_promoter", @@ -13839,6 +17315,14 @@ Requested by Thomas Desvignes, Jan 2015.", "rnapol", "ii", "promoter", + "dna", + "sequence", + "eukaryotic", + "rna", + "polymerase", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0000170", "lbl": "RNApol_II_promoter", @@ -13881,6 +17365,14 @@ Requested by Thomas Desvignes, Jan 2015.", "rnapol", "iii", "promoter", + "dna", + "sequence", + "eukaryotic", + "rna", + "polymerase", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0000171", "lbl": "RNApol_III_promoter", @@ -13924,6 +17416,12 @@ Requested by Thomas Desvignes, Jan 2015.", "rna", "polymerase", "promoter", + "region", + "dna", + "bacteriophage", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0001204", "lbl": "Phage_RNA_Polymerase_Promoter", @@ -14015,6 +17513,18 @@ Requested by Thomas Desvignes, Jan 2015.", "intronic", "splicing", "silencer", + "regulatory", + "element", + "functions", + "recruit", + "trans", + "acting", + "factors", + "suppress", + "transcription", + "gene", + "genes", + "control", ], "id": "http://purl.obolibrary.org/obo/SO_0002056", "lbl": "intronic_splicing_silencer", @@ -14061,6 +17571,18 @@ Requested by Thomas Desvignes, Jan 2015.", "exonic", "splicing", "silencer", + "regulatory", + "element", + "functions", + "recruit", + "trans", + "acting", + "factors", + "suppress", + "transcription", + "gene", + "genes", + "control", ], "id": "http://purl.obolibrary.org/obo/SO_0002058", "lbl": "exonic_splicing_silencer", @@ -14108,6 +17630,16 @@ Requested by Thomas Desvignes, Jan 2015.", "ii", "core", "promoter", + "minimal", + "portion", + "required", + "properly", + "initiate", + "transcription", + "rna", + "polymerase", + "transcribed", + "genes", ], "id": "http://purl.obolibrary.org/obo/SO_0001669", "lbl": "RNApol_II_core_promoter", @@ -14229,6 +17761,11 @@ Requested by Thomas Desvignes, Jan 2015.", "rna", "polymerase", "promoter", + "region", + "dna", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0001205", "lbl": "SP6_RNA_Polymerase_Promoter", @@ -14260,6 +17797,11 @@ Requested by Thomas Desvignes, Jan 2015.", "rna", "polymerase", "promoter", + "dna", + "sequence", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0001206", "lbl": "T3_RNA_Polymerase_Promoter", @@ -14291,6 +17833,11 @@ Requested by Thomas Desvignes, Jan 2015.", "rna", "polymerase", "promoter", + "region", + "dna", + "binds", + "begin", + "transcription", ], "id": "http://purl.obolibrary.org/obo/SO_0001207", "lbl": "T7_RNA_Polymerase_Promoter", @@ -14324,6 +17871,16 @@ exports[`OntologyStore can query valid part_of for match 1`] = ` { "fullTextWords": [ "match", + "region", + "sequence", + "aligned", + "another", + "statistical", + "significance", + "using", + "algorithm", + "blast", + "sim4", ], "id": "http://purl.obolibrary.org/obo/SO_0000343", "lbl": "match", From b42bc0d5c5d1f738e3bfda74ac412cbbd8a9bd31 Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Thu, 3 Aug 2023 19:19:08 +0000 Subject: [PATCH 07/19] migrate AddFeature dialog to use ontology manager --- .../src/TabularEditor/HybridGrid/Feature.tsx | 24 ++++ .../src/components/AddFeature.tsx | 105 ++++++++++-------- .../components/OntologyTermAutocomplete.tsx | 70 ++++++------ .../components/OntologyTermMultiSelect.tsx | 2 +- 4 files changed, 116 insertions(+), 85 deletions(-) diff --git a/packages/jbrowse-plugin-apollo/src/TabularEditor/HybridGrid/Feature.tsx b/packages/jbrowse-plugin-apollo/src/TabularEditor/HybridGrid/Feature.tsx index ced157736..f32331966 100644 --- a/packages/jbrowse-plugin-apollo/src/TabularEditor/HybridGrid/Feature.tsx +++ b/packages/jbrowse-plugin-apollo/src/TabularEditor/HybridGrid/Feature.tsx @@ -52,6 +52,13 @@ const useStyles = makeStyles()((theme) => ({ hoveredFeature: { backgroundColor: theme.palette.grey[300], }, + typeInputElement: { + border: 'none', + background: 'none', + }, + typeErrorMessage: { + color: 'red', + }, })) function makeContextMenuItems( @@ -166,6 +173,23 @@ export const Feature = observer(function Feature({ value={feature.type} filterTerms={isOntologyClass} fetchValidTerms={fetchValidTypeTerms.bind(null, feature)} + renderInput={(params) => { + return ( +
+ + {params.error ? ( +
+ {params.errorMessage ?? 'unknown error'} +
+ ) : null} +
+ ) + }} onChange={(oldValue, newValue) => { if (newValue) { handleFeatureTypeChange( diff --git a/packages/jbrowse-plugin-apollo/src/components/AddFeature.tsx b/packages/jbrowse-plugin-apollo/src/components/AddFeature.tsx index cba1c90be..e5ed7eba5 100644 --- a/packages/jbrowse-plugin-apollo/src/components/AddFeature.tsx +++ b/packages/jbrowse-plugin-apollo/src/components/AddFeature.tsx @@ -16,11 +16,12 @@ import { import { AnnotationFeatureI } from 'apollo-mst' import { AddFeatureChange } from 'apollo-shared' import ObjectID from 'bson-objectid' -import React, { useEffect, useState } from 'react' +import React, { useState } from 'react' -import { ApolloInternetAccountModel } from '../ApolloInternetAccount/model' import { ChangeManager } from '../ChangeManager' -import { createFetchErrorMessage } from '../util' +import { isOntologyClass } from '../OntologyManager' +import OntologyStore from '../OntologyManager/OntologyStore' +import { OntologyTermAutocomplete } from './OntologyTermAutocomplete' interface AddFeatureProps { session: AbstractSessionModel @@ -28,7 +29,6 @@ interface AddFeatureProps { sourceFeature: AnnotationFeatureI sourceAssemblyId: string changeManager: ChangeManager - internetAccount: ApolloInternetAccountModel } enum PhaseEnum { @@ -37,13 +37,36 @@ enum PhaseEnum { two = 2, } +async function fetchValidDescendantTerms( + parentFeature: AnnotationFeatureI | undefined, + ontologyStore: OntologyStore, + _signal: AbortSignal, +) { + if (parentFeature) { + // since this is a child of an existing feature, restrict the autocomplete choices to valid + // parts of that feature + const parentTypeTerms = ( + await ontologyStore.getTermsWithLabelOrSynonym(parentFeature.type, { + includeSubclasses: false, + }) + ).filter(isOntologyClass) + if (parentTypeTerms.length) { + const subpartTerms = await ontologyStore.getClassesThat( + 'part_of', + parentTypeTerms, + ) + return subpartTerms + } + } + return undefined +} + export function AddFeature({ session, handleClose, sourceFeature, sourceAssemblyId, changeManager, - internetAccount, }: AddFeatureProps) { const { notify } = session const [end, setEnd] = useState(String(sourceFeature.end)) @@ -52,42 +75,9 @@ export function AddFeature({ const [phase, setPhase] = useState('') const [phaseAsNumber, setPhaseAsNumber] = useState() const [showPhase, setShowPhase] = useState(false) - const [possibleChildTypes, setPossibleChildTypes] = useState() - const { baseURL } = internetAccount const [errorMessage, setErrorMessage] = useState('') - useEffect(() => { - async function getTypes() { - const parentType = sourceFeature.type - const url = `/ontologies/descendants/${parentType}` - const uri = new URL(url, baseURL).href - const apolloFetch = internetAccount?.getFetcher({ - locationType: 'UriLocation', - uri, - }) - const response = await apolloFetch(uri, { - method: 'GET', - }) - if (!response.ok) { - const newErrorMessage = await createFetchErrorMessage( - response, - 'Error when retrieving ontologies from server', - ) - setErrorMessage(newErrorMessage) - return - } - const data = (await response.json()) as string[] - if (data.length < 1) { - setErrorMessage( - `Feature type "${parentType}" cannot have a child feature`, - ) - } - setPossibleChildTypes(data) - } - getTypes().catch((e) => setErrorMessage(String(e))) - }, [baseURL, internetAccount, sourceFeature.type]) - async function onSubmit(event: React.FormEvent) { event.preventDefault() setErrorMessage('') @@ -115,10 +105,10 @@ export function AddFeature({ handleClose() event.preventDefault() } - async function handleChangeType(e: SelectChangeEvent) { + function handleChangeType(newType: string) { setErrorMessage('') - setType(e.target.value) - if (e.target.value.startsWith('CDS')) { + setType(newType) + if (newType.startsWith('CDS')) { setShowPhase(true) setPhase('') } else { @@ -146,7 +136,7 @@ export function AddFeature({ const error = Number(end) <= Number(start) return ( - Add new feature + Add new child feature
- - Type - {(possibleChildTypes ?? []).map((option) => ( {option} ))} - - + */} + ( + + )} + onChange={(oldValue, newValue) => { + if (newValue) { + handleChangeType(newValue) + } + }} + /> {showPhase ? ( Phase diff --git a/packages/jbrowse-plugin-apollo/src/components/OntologyTermAutocomplete.tsx b/packages/jbrowse-plugin-apollo/src/components/OntologyTermAutocomplete.tsx index 9b925d012..4b217930d 100644 --- a/packages/jbrowse-plugin-apollo/src/components/OntologyTermAutocomplete.tsx +++ b/packages/jbrowse-plugin-apollo/src/components/OntologyTermAutocomplete.tsx @@ -1,33 +1,33 @@ import { getSession, isAbortException } from '@jbrowse/core/util' -import { Autocomplete } from '@mui/material' +import { + Autocomplete, + AutocompleteRenderInputParams, + TextField, +} from '@mui/material' import React, { useEffect, useState } from 'react' -import { makeStyles } from 'tss-react/mui' import type { OntologyManager } from '../OntologyManager' import { OntologyTerm } from '../OntologyManager' import OntologyStore from '../OntologyManager/OntologyStore' -const useStyles = makeStyles()((_theme) => ({ - inputElement: { - border: 'none', - background: 'none', - }, - errorMessage: { - color: 'red', - }, -})) - interface OntologyTermAutocompleteProps { session: ReturnType ontologyName: string ontologyVersion?: string value: string + error?: boolean filterTerms?: (term: OntologyTerm) => boolean fetchValidTerms?: ( ontologyStore: OntologyStore, signal: AbortSignal, ) => Promise style?: React.CSSProperties + renderInput?: ( + params: AutocompleteRenderInputParams & { + error?: boolean + errorMessage?: string + }, + ) => React.ReactNode onChange: (oldValue: string, newValue: string | null | undefined) => void } @@ -40,9 +40,8 @@ export function OntologyTermAutocomplete({ fetchValidTerms, filterTerms, onChange, + renderInput, }: OntologyTermAutocompleteProps) { - const { classes } = useStyles() - const [open, setOpen] = useState(false) const [termChoices, setTermChoices] = useState() const [currentOntologyTermInvalid, setCurrentOntologyTermInvalid] = @@ -138,35 +137,36 @@ export function OntologyTermAutocomplete({ } } + const extraTextFieldParams: { error?: boolean; helperText?: string } = {} + if (currentOntologyTermInvalid) { + extraTextFieldParams.error = true + extraTextFieldParams.helperText = currentOntologyTermInvalid + } + return ( { setOpen(true) }} onClose={() => { setOpen(false) }} - freeSolo={true} + // noOptionsText={valueString ? 'No matches' : 'Start typing to search'} loading={needToLoadTermChoices} - renderInput={(params) => { - return ( -
- - {currentOntologyTermInvalid ? ( -
- {currentOntologyTermInvalid} -
- ) : null} -
- ) - }} + renderInput={ + renderInput ?? + ((params) => ) + } getOptionLabel={(option) => { if (typeof option === 'string') { return option @@ -174,11 +174,7 @@ export function OntologyTermAutocomplete({ return option.lbl ?? '' }} isOptionEqualToValue={(option, val) => option.lbl === val.lbl} - value={valueString} onChange={handleChange} - disableClearable - selectOnFocus - handleHomeEndKeys /> ) } diff --git a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx index 60d58b0de..808c39ca7 100644 --- a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx +++ b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx @@ -199,7 +199,7 @@ export function OntologyTermMultiSelect({ return () => { aborter.abort() } - }, [getOntologyTerms, inputValue, value]) + }, [getOntologyTerms, ontology, inputValue, value]) if (!ontology) { return null From 92d57b5b619d36de4513351b5fdf2cb218dd8991 Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Fri, 4 Aug 2023 19:51:22 +0000 Subject: [PATCH 08/19] overhaul text searching to provide which field was matched, use proper JSONPath for configuring text indexing fields --- packages/jbrowse-plugin-apollo/package.json | 2 + .../__snapshots__/fulltext.test.ts.snap | 154 +++ .../__snapshots__/index.test.ts.snap | 1076 ++++++++++++++--- .../OntologyStore/fulltext-stopwords.ts | 1 + .../OntologyStore/fulltext.test.ts | 71 ++ .../OntologyManager/OntologyStore/fulltext.ts | 247 ++-- .../OntologyManager/OntologyStore/index.ts | 8 +- .../OntologyStore/indexeddb-storage.ts | 27 +- .../src/OntologyManager/index.ts | 6 +- .../components/OntologyTermMultiSelect.tsx | 2 +- yarn.lock | 67 +- 11 files changed, 1373 insertions(+), 288 deletions(-) create mode 100644 packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/fulltext.test.ts.snap create mode 100644 packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts diff --git a/packages/jbrowse-plugin-apollo/package.json b/packages/jbrowse-plugin-apollo/package.json index 5f1b410c9..2b5f4b2bd 100644 --- a/packages/jbrowse-plugin-apollo/package.json +++ b/packages/jbrowse-plugin-apollo/package.json @@ -53,6 +53,7 @@ "@jbrowse/plugin-authentication": "^2.0.1", "@jbrowse/plugin-linear-genome-view": "^2.0.1", "@mui/icons-material": "^5.8.4", + "@types/jsonpath": "^0.2.0", "apollo-common": "workspace:^", "apollo-mst": "workspace:^", "apollo-shared": "workspace:^", @@ -62,6 +63,7 @@ "file-saver": "^2.0.5", "http-proxy-middleware": "^2.0.6", "idb": "^7.1.1", + "jsonpath": "^1.1.1", "nanoid": "^4.0.2", "regenerator-runtime": "^0.13.9", "socket.io-client": "^4.5.3", diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/fulltext.test.ts.snap b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/fulltext.test.ts.snap new file mode 100644 index 000000000..2622e8ed5 --- /dev/null +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/fulltext.test.ts.snap @@ -0,0 +1,154 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`elaborateMatch can do one 1`] = ` +[ + { + "path": "$.meta.definition.val", + "score": 7.1, + "str": "A sequence_feature with an extent greater than zero. A nucleotide region is composed of bases and a polypeptide region is composed of amino acids. It may also be termed a region of some number of nucleotides.", + "term": { + "id": "http://purl.obolibrary.org/obo/SO_0000001", + "lbl": "region", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "sequence", + }, + ], + "definition": { + "val": "A sequence_feature with an extent greater than zero. A nucleotide region is composed of bases and a polypeptide region is composed of amino acids. It may also be termed a region of some number of nucleotides.", + "xrefs": [ + "SO:ke", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/so#SOFA", + ], + "synonyms": [ + { + "pred": "hasExactSynonym", + "val": "sequence", + }, + ], + }, + "type": "CLASS", + }, + "wordMatches": [ + { + "position": 55, + "wordIndex": 0, + }, + { + "position": 66, + "wordIndex": 1, + }, + { + "position": 112, + "wordIndex": 1, + }, + { + "position": 171, + "wordIndex": 1, + }, + { + "position": 196, + "wordIndex": 0, + }, + ], + }, +] +`; + +exports[`getWords can get the words from a test node 1`] = ` +[ + [ + "$.lbl", + "region", + ], + [ + "$.meta.definition.val", + "sequence", + ], + [ + "$.meta.definition.val", + "feature", + ], + [ + "$.meta.definition.val", + "extent", + ], + [ + "$.meta.definition.val", + "greater", + ], + [ + "$.meta.definition.val", + "zero", + ], + [ + "$.meta.definition.val", + "nucleotide", + ], + [ + "$.meta.definition.val", + "region", + ], + [ + "$.meta.definition.val", + "composed", + ], + [ + "$.meta.definition.val", + "bases", + ], + [ + "$.meta.definition.val", + "polypeptide", + ], + [ + "$.meta.definition.val", + "region", + ], + [ + "$.meta.definition.val", + "composed", + ], + [ + "$.meta.definition.val", + "amino", + ], + [ + "$.meta.definition.val", + "acids", + ], + [ + "$.meta.definition.val", + "may", + ], + [ + "$.meta.definition.val", + "also", + ], + [ + "$.meta.definition.val", + "termed", + ], + [ + "$.meta.definition.val", + "region", + ], + [ + "$.meta.definition.val", + "number", + ], + [ + "$.meta.definition.val", + "nucleotides", + ], + [ + "$.meta.synonyms[*].val", + "sequence", + ], +] +`; diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap index f704153bf..14a98347c 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap @@ -72,6 +72,7 @@ exports[`OntologyStore SO clone_insert_end is among valid subparts of BAC_cloned "fullTextWords": [ "cloned", "region", + "segment", ], "id": "http://purl.obolibrary.org/obo/SO_0000785", "lbl": "cloned_region", @@ -107,9 +108,11 @@ exports[`OntologyStore can load goslim generic 1`] = `248`; exports[`OntologyStore can load goslim generic 2`] = ` [ - [ - 3, - { + { + "path": "$.lbl", + "score": 7, + "str": "mitotic nuclear division", + "term": { "fullTextWords": [ "mitotic", "nuclear", @@ -181,10 +184,26 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "type": "CLASS", }, - ], - [ - 3, - { + "wordMatches": [ + { + "position": 0, + "wordIndex": 0, + }, + { + "position": 8, + "wordIndex": 1, + }, + { + "position": 16, + "wordIndex": 2, + }, + ], + }, + { + "path": "$.lbl", + "score": 4, + "str": "meiotic nuclear division", + "term": { "fullTextWords": [ "meiotic", "nuclear", @@ -196,6 +215,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` "part", "cell", "cycle", + "meiosis", ], "id": "http://purl.obolibrary.org/obo/GO_0140013", "lbl": "meiotic nuclear division", @@ -236,90 +256,268 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "type": "CLASS", }, - ], - [ - 2.6666666666666665, - { + "wordMatches": [ + { + "position": 8, + "wordIndex": 0, + }, + { + "position": 16, + "wordIndex": 1, + }, + ], + }, + { + "path": "$.meta.definition.val", + "score": 4, + "str": "One of the two nuclear divisions that occur as part of the meiotic cell cycle.", + "term": { "fullTextWords": [ - "mitotic", - "cell", - "cycle", - "progression", - "phases", - "common", - "eukaryotic", - "canonically", - "comprises", - "four", - "successive", - "called", - "g1", - "g2", - "m", - "includes", - "replication", - "genome", - "subsequent", - "segregation", - "chromosomes", - "daughter", - "cells", - "variant", - "cycles", + "meiotic", "nuclear", "division", - "may", - "followed", - "absent", + "one", + "two", + "divisions", + "occur", + "part", + "cell", + "cycle", + "meiosis", ], - "id": "http://purl.obolibrary.org/obo/GO_0000278", - "lbl": "mitotic cell cycle", + "id": "http://purl.obolibrary.org/obo/GO_0140013", + "lbl": "meiotic nuclear division", "meta": { "basicPropertyValues": [ { - "pred": "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId", - "val": "GO:0007067", + "pred": "http://purl.obolibrary.org/obo/IAO_0000233", + "val": "https://github.com/geneontology/go-ontology/issues/19910", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#created_by", + "val": "pg", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#creation_date", + "val": "2017-03-23T09:40:00Z", }, { "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", "val": "biological_process", }, ], - "comments": [ - "Note that this term should not be confused with 'GO:0140014 ; mitotic nuclear division'. 'GO:0000278 ; mitotic cell cycle represents the entire mitotic cell cycle, while 'GO:0140014 ; mitotic nuclear division' specifically represents the actual nuclear division step of the mitotic cell cycle.", + "definition": { + "val": "One of the two nuclear divisions that occur as part of the meiotic cell cycle.", + "xrefs": [ + "PMID:9334324", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_generic", + ], + "synonyms": [ + { + "pred": "hasExactSynonym", + "val": "meiosis", + }, + ], + }, + "type": "CLASS", + }, + "wordMatches": [ + { + "position": 15, + "wordIndex": 0, + }, + { + "position": 23, + "wordIndex": 1, + }, + ], + }, + { + "path": "$.meta.definition.val", + "score": 2, + "str": "The chemical reactions and pathways involving snRNA, small nuclear RNA, any of various low-molecular-mass RNA molecules found in the eukaryotic nucleus as components of the small nuclear ribonucleoprotein.", + "term": { + "fullTextWords": [ + "snrna", + "metabolic", + "process", + "chemical", + "reactions", + "pathways", + "involving", + "small", + "nuclear", + "rna", + "various", + "low", + "molecular", + "mass", + "molecules", + "found", + "eukaryotic", + "nucleus", + "components", + "ribonucleoprotein", + "metabolism", + ], + "id": "http://purl.obolibrary.org/obo/GO_0016073", + "lbl": "snRNA metabolic process", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "biological_process", + }, ], "definition": { - "val": "Progression through the phases of the mitotic cell cycle, the most common eukaryotic cell cycle, which canonically comprises four successive phases called G1, S, G2, and M and includes replication of the genome and the subsequent segregation of chromosomes into daughter cells. In some variant cell cycles nuclear replication or nuclear division may not be followed by cell division, or G1 and G2 phases may be absent.", + "val": "The chemical reactions and pathways involving snRNA, small nuclear RNA, any of various low-molecular-mass RNA molecules found in the eukaryotic nucleus as components of the small nuclear ribonucleoprotein.", + "xrefs": [ + "ISBN:0198506732", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_drosophila", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_pombe", + ], + "synonyms": [ + { + "pred": "hasExactSynonym", + "val": "snRNA metabolism", + }, + ], + }, + "type": "CLASS", + }, + "wordMatches": [ + { + "position": 59, + "wordIndex": 0, + }, + { + "position": 179, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.lbl", + "score": 1, + "str": "nuclear chromosome", + "term": { + "fullTextWords": [ + "nuclear", + "chromosome", + "encodes", + "genome", + "found", + "nucleus", + "eukaryotic", + "cell", + "cycle", + "phases", + "intact", + "interphase", + ], + "id": "http://purl.obolibrary.org/obo/GO_0000228", + "lbl": "nuclear chromosome", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "cellular_component", + }, + ], + "definition": { + "val": "A chromosome that encodes the nuclear genome and is found in the nucleus of a eukaryotic cell during the cell cycle phases when the nucleus is intact.", "xrefs": [ + "GOC:dph", "GOC:mah", - "ISBN:0815316194", - "Reactome:69278", ], }, "subsets": [ "http://purl.obolibrary.org/obo/go#goslim_chembl", - "http://purl.obolibrary.org/obo/go#goslim_drosophila", "http://purl.obolibrary.org/obo/go#goslim_generic", - "http://purl.obolibrary.org/obo/go#goslim_yeast", ], "synonyms": [ { - "pred": "hasRelatedSynonym", - "val": "mitosis", + "pred": "hasNarrowSynonym", + "val": "nuclear interphase chromosome", }, ], - "xrefs": [ + }, + "type": "CLASS", + }, + "wordMatches": [ + { + "position": 0, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.meta.definition.val", + "score": 1, + "str": "A chromosome that encodes the nuclear genome and is found in the nucleus of a eukaryotic cell during the cell cycle phases when the nucleus is intact.", + "term": { + "fullTextWords": [ + "nuclear", + "chromosome", + "encodes", + "genome", + "found", + "nucleus", + "eukaryotic", + "cell", + "cycle", + "phases", + "intact", + "interphase", + ], + "id": "http://purl.obolibrary.org/obo/GO_0000228", + "lbl": "nuclear chromosome", + "meta": { + "basicPropertyValues": [ { - "val": "Wikipedia:Mitosis", + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "cellular_component", + }, + ], + "definition": { + "val": "A chromosome that encodes the nuclear genome and is found in the nucleus of a eukaryotic cell during the cell cycle phases when the nucleus is intact.", + "xrefs": [ + "GOC:dph", + "GOC:mah", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_generic", + ], + "synonyms": [ + { + "pred": "hasNarrowSynonym", + "val": "nuclear interphase chromosome", }, ], }, "type": "CLASS", }, - ], - [ - 0.3333333333333333, - { + "wordMatches": [ + { + "position": 30, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.meta.synonyms[*].val", + "score": 1, + "str": "nuclear interphase chromosome", + "term": { "fullTextWords": [ "nuclear", "chromosome", @@ -332,6 +530,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` "cycle", "phases", "intact", + "interphase", ], "id": "http://purl.obolibrary.org/obo/GO_0000228", "lbl": "nuclear chromosome", @@ -362,10 +561,18 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "type": "CLASS", }, - ], - [ - 0.3333333333333333, - { + "wordMatches": [ + { + "position": 0, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.lbl", + "score": 1, + "str": "results in division of", + "term": { "fullTextWords": [ "results", "division", @@ -393,10 +600,18 @@ exports[`OntologyStore can load goslim generic 2`] = ` ], }, }, - ], - [ - 0.3333333333333333, - { + "wordMatches": [ + { + "position": 11, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.lbl", + "score": 1, + "str": "nuclear envelope", + "term": { "fullTextWords": [ "nuclear", "envelope", @@ -453,10 +668,18 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "type": "CLASS", }, - ], - [ - 0.3333333333333333, - { + "wordMatches": [ + { + "position": 0, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.meta.definition.val", + "score": 1, + "str": "The division of the cytoplasm and the plasma membrane of a cell and its partitioning into two daughter cells.", + "term": { "fullTextWords": [ "cytokinesis", "division", @@ -468,6 +691,8 @@ exports[`OntologyStore can load goslim generic 2`] = ` "two", "daughter", "cells", + "cycle", + "involved", ], "id": "http://purl.obolibrary.org/obo/GO_0000910", "lbl": "cytokinesis", @@ -528,10 +753,18 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "type": "CLASS", }, - ], - [ - 0.3333333333333333, - { + "wordMatches": [ + { + "position": 4, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.meta.definition.val", + "score": 1, + "str": "That part of the nuclear content other than the chromosomes or the nucleolus.", + "term": { "fullTextWords": [ "nucleoplasm", "part", @@ -572,10 +805,18 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "type": "CLASS", }, - ], - [ - 0.3333333333333333, - { + "wordMatches": [ + { + "position": 17, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.meta.definition.val", + "score": 1, + "str": "A cellular structure that forms the internal framework of eukaryotic and prokaryotic cells. The cytoskeleton includes intermediate filaments, microfilaments, microtubules, the microtrabecular lattice, and other structures characterized by a polymeric filamentous nature and long-range order within the cell. The various elements of the cytoskeleton not only serve in the maintenance of cellular shape but also have roles in other cellular functions, including cellular movement, cell division, endocytosis, and movement of organelles.", + "term": { "fullTextWords": [ "cytoskeleton", "cellular", @@ -655,34 +896,49 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "type": "CLASS", }, - ], - [ - 0.3333333333333333, - { + "wordMatches": [ + { + "position": 484, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.meta.synonyms[*].val", + "score": 1, + "str": "chromosome division", + "term": { "fullTextWords": [ - "snrna", - "metabolic", + "chromosome", + "segregation", "process", - "chemical", - "reactions", - "pathways", - "involving", - "small", - "nuclear", - "rna", - "various", - "low", - "molecular", - "mass", - "molecules", - "found", - "eukaryotic", - "nucleus", - "components", - "ribonucleoprotein", + "genetic", + "material", + "form", + "chromosomes", + "organized", + "specific", + "structures", + "physically", + "separated", + "apportioned", + "two", + "sets", + "eukaryotes", + "begins", + "condensation", + "includes", + "separation", + "ends", + "completed", + "movement", + "spindle", + "poles", + "division", + "transmission", ], - "id": "http://purl.obolibrary.org/obo/GO_0016073", - "lbl": "snRNA metabolic process", + "id": "http://purl.obolibrary.org/obo/GO_0007059", + "lbl": "chromosome segregation", "meta": { "basicPropertyValues": [ { @@ -691,29 +947,52 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, ], "definition": { - "val": "The chemical reactions and pathways involving snRNA, small nuclear RNA, any of various low-molecular-mass RNA molecules found in the eukaryotic nucleus as components of the small nuclear ribonucleoprotein.", + "val": "The process in which genetic material, in the form of chromosomes, is organized into specific structures and then physically separated and apportioned to two or more sets. In eukaryotes, chromosome segregation begins with the condensation of chromosomes, includes chromosome separation, and ends when chromosomes have completed movement to the spindle poles.", "xrefs": [ - "ISBN:0198506732", + "GOC:jl", + "GOC:mah", + "GOC:mtg_cell_cycle", + "GOC:vw", ], }, "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", "http://purl.obolibrary.org/obo/go#goslim_drosophila", "http://purl.obolibrary.org/obo/go#goslim_generic", - "http://purl.obolibrary.org/obo/go#goslim_pombe", + "http://purl.obolibrary.org/obo/go#goslim_pir", + "http://purl.obolibrary.org/obo/go#goslim_yeast", + "http://purl.obolibrary.org/obo/go#prokaryote_subset", ], "synonyms": [ { "pred": "hasExactSynonym", - "val": "snRNA metabolism", + "val": "chromosome division", + }, + { + "pred": "hasRelatedSynonym", + "val": "chromosome transmission", + }, + ], + "xrefs": [ + { + "val": "Wikipedia:Chromosome_segregation", }, ], }, "type": "CLASS", }, - ], - [ - 0.3333333333333333, - { + "wordMatches": [ + { + "position": 11, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.meta.definition.val", + "score": 1, + "str": "Binding to a histone, any of a group of water-soluble proteins found in association with the DNA of eukaryotic or archaeal chromosomes. They are involved in the condensation and coiling of chromosomes during cell division and have also been implicated in gene regulation and DNA replication. They may be chemically modified (methylated, acetlyated and others) to regulate gene transcription.", + "term": { "fullTextWords": [ "histone", "binding", @@ -745,6 +1024,9 @@ exports[`OntologyStore can load goslim generic 2`] = ` "others", "regulate", "transcription", + "specific", + "chaperone", + "activity", ], "id": "http://purl.obolibrary.org/obo/GO_0042393", "lbl": "histone binding", @@ -773,18 +1055,129 @@ exports[`OntologyStore can load goslim generic 2`] = ` "http://purl.obolibrary.org/obo/go#goslim_drosophila", "http://purl.obolibrary.org/obo/go#goslim_generic", "http://purl.obolibrary.org/obo/go#goslim_yeast", - "http://purl.obolibrary.org/obo/go#prokaryote_subset", + "http://purl.obolibrary.org/obo/go#prokaryote_subset", + ], + "synonyms": [ + { + "pred": "hasRelatedSynonym", + "val": "histone-specific chaperone activity", + }, + ], + }, + "type": "CLASS", + }, + "wordMatches": [ + { + "position": 213, + "wordIndex": 0, + }, + ], + }, + { + "path": "$.meta.definition.val", + "score": -4, + "str": "Progression through the phases of the mitotic cell cycle, the most common eukaryotic cell cycle, which canonically comprises four successive phases called G1, S, G2, and M and includes replication of the genome and the subsequent segregation of chromosomes into daughter cells. In some variant cell cycles nuclear replication or nuclear division may not be followed by cell division, or G1 and G2 phases may be absent.", + "term": { + "fullTextWords": [ + "mitotic", + "cell", + "cycle", + "progression", + "phases", + "common", + "eukaryotic", + "canonically", + "comprises", + "four", + "successive", + "called", + "g1", + "g2", + "m", + "includes", + "replication", + "genome", + "subsequent", + "segregation", + "chromosomes", + "daughter", + "cells", + "variant", + "cycles", + "nuclear", + "division", + "may", + "followed", + "absent", + "mitosis", + ], + "id": "http://purl.obolibrary.org/obo/GO_0000278", + "lbl": "mitotic cell cycle", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId", + "val": "GO:0007067", + }, + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "biological_process", + }, + ], + "comments": [ + "Note that this term should not be confused with 'GO:0140014 ; mitotic nuclear division'. 'GO:0000278 ; mitotic cell cycle represents the entire mitotic cell cycle, while 'GO:0140014 ; mitotic nuclear division' specifically represents the actual nuclear division step of the mitotic cell cycle.", + ], + "definition": { + "val": "Progression through the phases of the mitotic cell cycle, the most common eukaryotic cell cycle, which canonically comprises four successive phases called G1, S, G2, and M and includes replication of the genome and the subsequent segregation of chromosomes into daughter cells. In some variant cell cycles nuclear replication or nuclear division may not be followed by cell division, or G1 and G2 phases may be absent.", + "xrefs": [ + "GOC:mah", + "ISBN:0815316194", + "Reactome:69278", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/go#goslim_chembl", + "http://purl.obolibrary.org/obo/go#goslim_drosophila", + "http://purl.obolibrary.org/obo/go#goslim_generic", + "http://purl.obolibrary.org/obo/go#goslim_yeast", ], "synonyms": [ { "pred": "hasRelatedSynonym", - "val": "histone-specific chaperone activity", + "val": "mitosis", + }, + ], + "xrefs": [ + { + "val": "Wikipedia:Mitosis", }, ], }, "type": "CLASS", }, - ], + "wordMatches": [ + { + "position": 38, + "wordIndex": 0, + }, + { + "position": 306, + "wordIndex": 1, + }, + { + "position": 329, + "wordIndex": 1, + }, + { + "position": 337, + "wordIndex": 2, + }, + { + "position": 374, + "wordIndex": 2, + }, + ], + }, ] `; @@ -810,6 +1203,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "include", "regulatory", "transcribed", + "insdc", + "feature", ], "id": "http://purl.obolibrary.org/obo/SO_0000704", "lbl": "gene", @@ -1701,6 +2096,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "involved", "expression", "trait", + "target", ], "id": "http://purl.obolibrary.org/obo/SO_0001867", "lbl": "candidate_gene", @@ -2166,6 +2562,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "silenced", "rna", "interference", + "rnai", ], "id": "http://purl.obolibrary.org/obo/SO_0001224", "lbl": "gene_silenced_by_RNA_interference", @@ -2722,6 +3119,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "fullTextWords": [ "mirna", "gene", + "strna", ], "id": "http://purl.obolibrary.org/obo/SO_0001265", "lbl": "miRNA_gene", @@ -2913,6 +3311,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "encodes", "ribosomal", "rna", + "rdna", ], "id": "http://purl.obolibrary.org/obo/SO_0001637", "lbl": "rRNA_gene", @@ -3080,6 +3479,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "coding", "product", "component", + "terc", ], "id": "http://purl.obolibrary.org/obo/SO_0001643", "lbl": "telomerase_RNA_gene", @@ -3135,6 +3535,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "non", "coding", "rna", + "lnc", ], "id": "http://purl.obolibrary.org/obo/SO_0002127", "lbl": "lncRNA_gene", @@ -3299,6 +3700,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "based", "location", "chromosome", + "target", ], "id": "http://purl.obolibrary.org/obo/SO_0001868", "lbl": "positional_candidate_gene", @@ -3351,6 +3753,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "biologically", "trait", "investigation", + "target", ], "id": "http://purl.obolibrary.org/obo/SO_0001869", "lbl": "functional_candidate_gene", @@ -3396,6 +3799,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "immunoglobulin", "gene", "germline", + "ig", + "genes", ], "id": "http://purl.obolibrary.org/obo/SO_0002122", "lbl": "immunoglobulin_gene", @@ -3442,6 +3847,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "receptor", "gene", "germline", + "tr", ], "id": "http://purl.obolibrary.org/obo/SO_0002133", "lbl": "T_cell_receptor_gene", @@ -3481,6 +3887,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "gene", "mitochondrial", "located", + "maxi", + "circle", ], "id": "http://purl.obolibrary.org/obo/SO_0000654", "lbl": "maxicircle_gene", @@ -3672,6 +4080,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "mrna", "encodes", "polycistronic", + "processed", + "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0000722", "lbl": "gene_with_dicistronic_mRNA", @@ -3898,6 +4308,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "non", "coding", "rna", + "lncrna", ], "id": "http://purl.obolibrary.org/obo/SO_0002183", "lbl": "sense_overlap_ncRNA_gene", @@ -3947,6 +4358,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "non", "coding", "rna", + "lncrna", ], "id": "http://purl.obolibrary.org/obo/SO_0002184", "lbl": "sense_intronic_ncRNA_gene", @@ -4081,6 +4493,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "region", "immunoglobulin", "chain", + "igc", + "germline", ], "id": "http://purl.obolibrary.org/obo/SO_0002123", "lbl": "IG_C_gene", @@ -4140,6 +4554,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "variable", "domain", "immunoglobuin", + "igd", + "immunoglobulin", ], "id": "http://purl.obolibrary.org/obo/SO_0002124", "lbl": "IG_D_gene", @@ -4259,6 +4675,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "domain", "immunoglobulin", "chain", + "igv", ], "id": "http://purl.obolibrary.org/obo/SO_0002126", "lbl": "IG_V_gene", @@ -4653,6 +5070,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "dna", "template", "polymerase", + "insdc", + "feature", + "misc", ], "id": "http://purl.obolibrary.org/obo/SO_0000673", "lbl": "transcript", @@ -4744,6 +5164,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "control", "biological", "process", + "insdc", + "feature", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0005836", "lbl": "regulatory_region", @@ -4791,6 +5214,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcribed", "region", "gene", + "sequence", + "nontranscribed", ], "id": "http://purl.obolibrary.org/obo/SO_0000183", "lbl": "non_transcribed_region", @@ -4862,8 +5287,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "tss", "region", "gene", - "5", - "3", ], "id": "http://purl.obolibrary.org/obo/SO_0001240", "lbl": "TSS_region", @@ -5041,6 +5464,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "requires", "modification", "functional", + "insdc", + "feature", + "precursor", + "rna", + "prim", ], "id": "http://purl.obolibrary.org/obo/SO_0000185", "lbl": "primary_transcript", @@ -5102,8 +5530,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "cleavage", "base", "modification", - "5", - "3", "ends", "addition", "bases", @@ -5261,6 +5687,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "trans", "spliced", "transcript", + "insdc", + "feature", + "trna", + "qualifier", + "splicing", ], "id": "http://purl.obolibrary.org/obo/SO_0000479", "lbl": "trans_spliced_transcript", @@ -5643,6 +6074,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "control", "process", "nucleotide", + "insdc", + "feature", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0001682", "lbl": "replication_regulatory_region", @@ -5711,6 +6145,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "non", "coding", "rnas", + "insdc", + "feature", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0002191", "lbl": "imprinting_control_region", @@ -5870,6 +6307,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "non", "overlapping", "regions", + "processed", + "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0000634", "lbl": "polycistronic_mRNA", @@ -5915,6 +6354,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "encodes", "one", "proteins", + "pre", + "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0000120", "lbl": "protein_coding_primary_transcript", @@ -5958,6 +6399,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "never", "translated", "protein", + "noncoding", ], "id": "http://purl.obolibrary.org/obo/SO_0000483", "lbl": "nc_primary_transcript", @@ -6249,6 +6691,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequences", "contain", "introns", + "insdc", + "feature", + "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0000234", "lbl": "mRNA", @@ -6307,6 +6752,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "molecule", "gene", "product", + "insdc", + "qualifier", + "known", + "noncoding", ], "id": "http://purl.obolibrary.org/obo/SO_0000655", "lbl": "ncRNA", @@ -6360,6 +6809,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rna", "catalytic", "activity", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000374", "lbl": "ribozyme", @@ -6439,6 +6892,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "encoding", "products", "overlap", + "processed", + "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0000633", "lbl": "monocistronic_mRNA", @@ -6613,7 +7068,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "experimental", "validation", "either", - "5", "race", "rt", "pcr", @@ -6626,6 +7080,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "peptide", "specific", "antibodies", + "tec", + "experimentally", + "confirmed", ], "id": "http://purl.obolibrary.org/obo/SO_0002139", "lbl": "unconfirmed_transcript", @@ -6677,6 +7134,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "polymerase", "terminate", "transcription", + "insdc", + "feature", + "regulatory", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000141", "lbl": "terminator", @@ -6779,6 +7240,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "polyadenylation", "consensus", "aataaa", + "insdc", + "feature", + "regulatory", + "qualifier", + "poly", + "termination", ], "id": "http://purl.obolibrary.org/obo/SO_0000551", "lbl": "polyA_signal_sequence", @@ -6861,6 +7328,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcription", "gene", "genes", + "insdc", + "feature", + "qualifier", + "control", ], "id": "http://purl.obolibrary.org/obo/SO_0001055", "lbl": "transcriptional_cis_regulatory_region", @@ -7086,6 +7557,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcription", "factor", "binding", + "insdc", + "feature", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0002205", "lbl": "response_element", @@ -7139,6 +7613,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "premature", "termination", "translation", + "insdc", + "feature", + "regulatory", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000140", "lbl": "attenuator", @@ -7228,6 +7706,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "dicistronic", "mrna", "quality", + "processed", + "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0000716", "lbl": "dicistronic_mRNA", @@ -7320,6 +7800,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "intron", "protein", "containing", + "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0002112", "lbl": "coding_transcript_with_retained_intron", @@ -7633,6 +8114,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcript", "encoding", "0000584", + "10sa", + "rna", + "ssra", ], "id": "http://purl.obolibrary.org/obo/SO_0000586", "lbl": "tmRNA_primary_transcript", @@ -7709,6 +8193,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "encoding", "micro", "rna", + "small", + "temporal", + "strna", ], "id": "http://purl.obolibrary.org/obo/SO_0000647", "lbl": "miRNA_primary_transcript", @@ -7954,6 +8441,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "mrna", "frameshift", + "frameshifted", ], "id": "http://purl.obolibrary.org/obo/SO_0000108", "lbl": "mRNA_with_frameshift", @@ -8124,6 +8612,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "polya", "site", "reached", + "non", + "decay", ], "id": "http://purl.obolibrary.org/obo/SO_0002130", "lbl": "NSD_transcript", @@ -8206,6 +8696,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "present", "cytoplasm", + "insdc", + "feature", + "ncrna", + "qualifier", + "cytoplasmic", ], "id": "http://purl.obolibrary.org/obo/SO_0000013", "lbl": "scRNA", @@ -8254,6 +8749,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "scaffolding", "catalytic", "activity", + "insdc", + "qualifier", + "unknown", + "feature", + "ribosomal", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000252", "lbl": "rRNA", @@ -8340,7 +8842,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "specific", "mrna", "recognition", - "3", "end", "corresponding", "amino", @@ -8364,6 +8865,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "standard", "3rd", "position", + "insdc", + "qualifier", + "unknown", + "feature", + "ribonucleic", ], "id": "http://purl.obolibrary.org/obo/SO_0000253", "lbl": "tRNA", @@ -8425,6 +8931,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "mrna", "splicing", "processing", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000274", "lbl": "snRNA", @@ -8507,6 +9017,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "complementary", "targeted", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000275", "lbl": "snoRNA", @@ -8639,11 +9153,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "internal", "transcribed", "spacer", - "1", "18s", - "5", "8s", "rrnas", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000385", "lbl": "RNase_MRP_RNA", @@ -8701,7 +9217,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "activity", "generation", "mature", - "5", "prime", "ends", "trnas", @@ -8755,6 +9270,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "variation", "particularly", "among", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000386", "lbl": "RNase_P_RNA", @@ -8801,6 +9320,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "synthesizes", "telomeric", "dna", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000390", "lbl": "telomerase_RNA", @@ -8870,6 +9393,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "involved", "drug", "resistance", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000404", "lbl": "vault_RNA", @@ -8950,6 +9477,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "contains", "additional", "hairpin", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000405", "lbl": "Y_RNA", @@ -9004,6 +9535,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcripts", "repetitive", "elements", + "insdc", + "feature", + "ncrna", + "qualifier", + "repeat", + "associated", ], "id": "http://purl.obolibrary.org/obo/SO_0000454", "lbl": "rasiRNA", @@ -9073,13 +9610,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "54", "19", "14", - "9", "archaeal", "homologues", "srp19", "srp54", "eubacteria", - "4", "5s", "ffh", "protein", @@ -9107,7 +9642,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "bound", "corresponds", "helix", - "8", "gram", "positive", "bacteria", @@ -9130,11 +9664,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "eukaryotes", "archaea", - "6", "complex", "assembly", "stabilizes", "binding", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000590", "lbl": "SRP_RNA", @@ -9184,7 +9721,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "guide", "rna", "short", - "3", "uridylated", "form", "duplex", @@ -9200,6 +9736,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "mature", "edited", "mrna", + "insdc", + "feature", + "ncrna", + "qualifier", + "grna", ], "id": "http://purl.obolibrary.org/obo/SO_0000602", "lbl": "guide_RNA", @@ -9258,6 +9799,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "therefore", "complementary", "mrna", + "insdc", + "feature", + "ncrna", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000644", "lbl": "antisense_RNA", @@ -9312,8 +9857,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "nt", "long", "containing", - "5", - "3", "ends", "predicted", "come", @@ -9367,11 +9910,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "containing", "highly", "conserved", - "5", - "3", "ends", "16", - "8", "respectively", "predicted", "come", @@ -9429,6 +9969,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcribed", "tas", "gene", + "trans", + "acting", + "small", + "interfering", ], "id": "http://purl.obolibrary.org/obo/SO_0001800", "lbl": "tasiRNA", @@ -9472,6 +10016,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "may", "regulatory", "function", + "erna", ], "id": "http://purl.obolibrary.org/obo/SO_0001870", "lbl": "enhancerRNA", @@ -9514,6 +10059,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "coding", "200nucleotides", "length", + "insdc", + "feature", + "ncrna", + "qualifier", + "lncrna", + "transcript", + "long", ], "id": "http://purl.obolibrary.org/obo/SO_0001877", "lbl": "lnc_RNA", @@ -9644,6 +10196,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "degradation", "products", "primary", + "primal", ], "id": "http://purl.obolibrary.org/obo/SO_0002022", "lbl": "priRNA", @@ -9696,6 +10249,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "expression", "via", "interference", + "small", ], "id": "http://purl.obolibrary.org/obo/SO_0002031", "lbl": "shRNA", @@ -9752,7 +10306,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rna", "site", "synthesis", - "2", "o", "ribose", "methylated", @@ -9836,8 +10389,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "coding", "transcripts", "transcribed", - "3", "utr", + "3prime", + "noncoding", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002120", "lbl": "three_prime_overlapping_ncrna", @@ -10094,6 +10649,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "effecting", "translation", "genes", + "segment", ], "id": "http://purl.obolibrary.org/obo/SO_0000057", "lbl": "operator", @@ -10178,6 +10734,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "basal", "transcription", "machinery", + "insdc", + "feature", + "qualifier", + "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000167", "lbl": "promoter", @@ -10227,7 +10787,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "insulator", "regulatory", "region", - "1", "located", "cm", "gene", @@ -10237,7 +10796,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "modulating", "genes", "expression", - "2", "acts", "chromatin", "boundary", @@ -10247,6 +10805,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "encroachment", "condensed", "adjacent", + "insdc", + "feature", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000627", "lbl": "insulator", @@ -10316,7 +10877,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "within", "introns", "downstream", - "3", "utr", "sequences", "well", @@ -10337,6 +10897,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "large", "intertwined", "network", + "tf", + "module", + "cis", ], "id": "http://purl.obolibrary.org/obo/SO_0000727", "lbl": "CRM", @@ -10435,6 +10998,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "via", "interferon", "binding", + "stimulated", + "response", + "element", ], "id": "http://purl.obolibrary.org/obo/SO_0001715", "lbl": "ISRE", @@ -10581,6 +11147,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "coding", "pseudogenic", "alleles", + "nonsense", + "mediated", + "decay", ], "id": "http://purl.obolibrary.org/obo/SO_0002118", "lbl": "NMD_polymorphic_pseudogene_transcript", @@ -10666,6 +11235,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "encoding", "ribosomal", "rna", + "35s", ], "id": "http://purl.obolibrary.org/obo/SO_0000325", "lbl": "rRNA_large_subunit_primary_transcript", @@ -11710,6 +12280,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "heterologous", "18s", "rrna", + "5s", + "snrna", ], "id": "http://purl.obolibrary.org/obo/SO_0005837", "lbl": "U14_snoRNA_primary_transcript", @@ -11987,7 +12559,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "mrna", "minus", - "1", "frameshift", ], "id": "http://purl.obolibrary.org/obo/SO_0000282", @@ -12018,7 +12589,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "mrna", "plus", - "1", "frameshift", ], "id": "http://purl.obolibrary.org/obo/SO_0000321", @@ -12049,7 +12619,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "mrna", "plus", - "2", "frameshift", ], "id": "http://purl.obolibrary.org/obo/SO_0000329", @@ -12080,7 +12649,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "fullTextWords": [ "mrna", "minus", - "2", "frameshift", ], "id": "http://purl.obolibrary.org/obo/SO_0000335", @@ -12190,6 +12758,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcript", "structures", "ribosome", + "ssu", ], "id": "http://purl.obolibrary.org/obo/SO_0000650", "lbl": "small_subunit_rRNA", @@ -12242,6 +12811,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcript", "structures", "ribosome", + "lsu", ], "id": "http://purl.obolibrary.org/obo/SO_0000651", "lbl": "large_subunit_rRNA", @@ -12335,9 +12905,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "alanine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000254", "lbl": "alanyl_tRNA", @@ -12378,9 +12951,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "asparagine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000256", "lbl": "asparaginyl_tRNA", @@ -12422,9 +12998,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "aspartic", "acid", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", ], "id": "http://purl.obolibrary.org/obo/SO_0000257", "lbl": "aspartyl_tRNA", @@ -12465,9 +13043,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "cysteine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000258", "lbl": "cysteinyl_tRNA", @@ -12508,9 +13089,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "glutamine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000259", "lbl": "glutaminyl_tRNA", @@ -12552,9 +13136,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "glutamic", "acid", "anticodon", - "3", "binding", "region", + "transfer", + "ribonucleic", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000260", "lbl": "glutamyl_tRNA", @@ -12595,9 +13181,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "glycine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000261", "lbl": "glycyl_tRNA", @@ -12638,9 +13227,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "histidine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000262", "lbl": "histidyl_tRNA", @@ -12681,9 +13273,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "isoleucine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000263", "lbl": "isoleucyl_tRNA", @@ -12724,9 +13319,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "leucine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000264", "lbl": "leucyl_tRNA", @@ -12767,9 +13365,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "lysine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000265", "lbl": "lysyl_tRNA", @@ -12810,9 +13411,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "methionine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000266", "lbl": "methionyl_tRNA", @@ -12853,9 +13457,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "phenylalanine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000267", "lbl": "phenylalanyl_tRNA", @@ -12896,9 +13503,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "proline", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000268", "lbl": "prolyl_tRNA", @@ -12939,9 +13549,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "serine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000269", "lbl": "seryl_tRNA", @@ -12982,9 +13595,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "threonine", "anticodon", - "3", "binding", "region", + "transfer", + "ribonucleic", + "acid", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000270", "lbl": "threonyl_tRNA", @@ -13025,9 +13641,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "tryptophan", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000271", "lbl": "tryptophanyl_tRNA", @@ -13068,9 +13687,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "tyrosine", "anticodon", - "3", "binding", "region", + "transfer", + "ribonucleic", + "acid", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000272", "lbl": "tyrosyl_tRNA", @@ -13111,9 +13733,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "valine", "anticodon", - "3", "binding", "region", + "transfer", + "ribonucleic", + "acid", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000273", "lbl": "valyl_tRNA", @@ -13154,9 +13779,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "pyrrolysine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000766", "lbl": "pyrrolysyl_tRNA", @@ -13197,7 +13825,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "arginine", "anticodon", - "3", "binding", "region", ], @@ -13276,9 +13903,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "selenocysteine", "anticodon", - "3", "binding", "region", + "transfer", + "rna", + "ribonucleic", + "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0005857", "lbl": "selenocysteinyl_tRNA", @@ -13325,7 +13955,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pre", "mrna", "splicing", - "5", "end", "forms", "complementary", @@ -13439,9 +14068,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "area", "lying", "towards", - "5", "end", - "3", "hairpin", "branchpoint", "sequence", @@ -13624,6 +14251,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "complex", "u6atac", "0000397", + "small", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000394", "lbl": "U4atac_snRNA", @@ -13687,7 +14316,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "molecule", "unknown", "though", - "5", "loop", "required", "splice", @@ -13695,13 +14323,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "selection", "p220", "binding", - "3", "stem", "sm", "important", "protein", "cap", "methylation", + "small", + "nuclear", ], "id": "http://purl.obolibrary.org/obo/SO_0000395", "lbl": "U5_snRNA", @@ -13774,7 +14403,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pairing", "confined", "short", - "5", "stem", "loop", "thought", @@ -13783,6 +14411,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pair", "interactions", "u4", + "small", + "nuclear", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000396", "lbl": "U6_snRNA", @@ -13856,6 +14487,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "complex", "u4atac", "0000394", + "small", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000397", "lbl": "U6atac_snRNA", @@ -13922,10 +14555,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "base", "pairs", "conserved", - "5", "splice", "site", "sequence", + "small", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000398", "lbl": "U11_snRNA", @@ -14004,6 +14638,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pre", "mrna", "introns", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000399", "lbl": "U12_snRNA", @@ -14156,7 +14791,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "contain", "triplet", "exactly", - "3", "nt", "upstream", "end", @@ -14268,6 +14902,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "act", "translational", "repressors", + "insdc", + "feature", + "ncrna", + "qualifier", + "microrna", + "temporal", + "strna", ], "id": "http://purl.obolibrary.org/obo/SO_0000276", "lbl": "miRNA", @@ -14858,6 +15499,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "eukaryote", "nuclear", "genomes", + "insdc", + "feature", + "10sa", + "rna", + "ssra", ], "id": "http://purl.obolibrary.org/obo/SO_0000584", "lbl": "tmRNA", @@ -14925,6 +15571,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "cleavage", "target", "molecules", + "insdc", + "feature", + "ncrna", + "qualifier", + "interfering", ], "id": "http://purl.obolibrary.org/obo/SO_0000646", "lbl": "siRNA", @@ -14981,6 +15632,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "selfish", "genetic", "elements", + "insdc", + "feature", + "ncrna", + "qualifier", + "piwi", + "associated", ], "id": "http://purl.obolibrary.org/obo/SO_0001035", "lbl": "piRNA", @@ -15029,14 +15686,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequences", "adjacent", "ends", - "5", - "3", "mir", "encoding", "abut", "loop", "precursor", "mirna", + "microrna", + "offset", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002032", "lbl": "moR", @@ -15087,6 +15745,8 @@ Requested by Thomas Desvignes, Jan 2015.", "encoded", "precursor", "mirna", + "origin", + "mirs", ], "id": "http://purl.obolibrary.org/obo/SO_0002033", "lbl": "loR", @@ -15193,6 +15853,8 @@ Requested by Thomas Desvignes, Jan 2015.", "pseudogene", "either", "strand", + "large", + "intergenic", ], "id": "http://purl.obolibrary.org/obo/SO_0001463", "lbl": "lincRNA", @@ -15245,6 +15907,8 @@ Requested by Thomas Desvignes, Jan 2015.", "overlap", "part", "sense", + "natural", + "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0001904", "lbl": "antisense_lncRNA", @@ -15298,6 +15962,8 @@ Requested by Thomas Desvignes, Jan 2015.", "overlap", "exonic", "sequence", + "lncrna", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002131", "lbl": "sense_intronic_ncRNA", @@ -15364,6 +16030,8 @@ Requested by Thomas Desvignes, Jan 2015.", "sequence", "strand", "exonic", + "lncrna", + "overlapping", ], "id": "http://purl.obolibrary.org/obo/SO_0002132", "lbl": "sense_overlap_ncRNA", @@ -15430,6 +16098,8 @@ Requested by Thomas Desvignes, Jan 2015.", "9000", "bases", "long", + "repeat", + "containing", ], "id": "http://purl.obolibrary.org/obo/SO_0001923", "lbl": "TERRA", @@ -15657,7 +16327,6 @@ Requested by Thomas Desvignes, Jan 2015.", "fullTextWords": [ "terminator", "type", - "2", "rnapol", "iii", "promoter", @@ -15697,6 +16366,8 @@ Requested by Thomas Desvignes, Jan 2015.", "promoter", "sigma", "70", + "rna", + "polymerase", ], "id": "http://purl.obolibrary.org/obo/SO_0001671", "lbl": "bacterial_RNApol_promoter_sigma_70", @@ -15730,6 +16401,8 @@ Requested by Thomas Desvignes, Jan 2015.", "rnapol", "promoter", "sigma54", + "rna", + "polymerase", ], "id": "http://purl.obolibrary.org/obo/SO_0001672", "lbl": "bacterial_RNApol_promoter_sigma54", @@ -15987,6 +16660,7 @@ Requested by Thomas Desvignes, Jan 2015.", "neighboring", "euchromatic", "regions", + "insulator", ], "id": "http://purl.obolibrary.org/obo/SO_0002020", "lbl": "boundary_element", @@ -16049,6 +16723,9 @@ Requested by Thomas Desvignes, Jan 2015.", "include", "barrier", "function", + "insdc", + "feature", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0002190", "lbl": "enhancer_blocking_element", @@ -16108,7 +16785,6 @@ Requested by Thomas Desvignes, Jan 2015.", "hypersensitive", "sites", "located", - "5", "gene", "confers", "high", @@ -16119,6 +16795,12 @@ Requested by Thomas Desvignes, Jan 2015.", "number", "dependent", "expression", + "insdc", + "feature", + "regulatory", + "qualifier", + "lcr", + "element", ], "id": "http://purl.obolibrary.org/obo/SO_0000037", "lbl": "locus_control_region", @@ -16183,6 +16865,10 @@ Requested by Thomas Desvignes, Jan 2015.", "downstream", "relative", "promoter", + "insdc", + "feature", + "regulatory", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000165", "lbl": "enhancer", @@ -16236,6 +16922,9 @@ Requested by Thomas Desvignes, Jan 2015.", "gene", "genes", "control", + "insdc", + "feature", + "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000625", "lbl": "silencer", @@ -16362,6 +17051,8 @@ Requested by Thomas Desvignes, Jan 2015.", "small", "subunit", "ribosome", + "ribosomal", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000407", "lbl": "rRNA_18S", @@ -16415,6 +17106,9 @@ Requested by Thomas Desvignes, Jan 2015.", "small", "subunit", "ribosome", + "ssu", + "rna", + "ribosomal", ], "id": "http://purl.obolibrary.org/obo/SO_0001000", "lbl": "rRNA_16S", @@ -16463,7 +17157,6 @@ Requested by Thomas Desvignes, Jan 2015.", { "fullTextWords": [ "rrna", - "5", "8s", "ribosomal", "rna", @@ -16496,6 +17189,7 @@ Requested by Thomas Desvignes, Jan 2015.", "protein", "found", "archaea", + "lsu", ], "id": "http://purl.obolibrary.org/obo/SO_0000375", "lbl": "rRNA_5_8S", @@ -16564,8 +17258,6 @@ Requested by Thomas Desvignes, Jan 2015.", "oocytes", "shown", "fingers", - "4", - "7", "nine", "zinc", "finger", @@ -16582,6 +17274,7 @@ Requested by Thomas Desvignes, Jan 2015.", "also", "stabilizes", "required", + "lsu", ], "id": "http://purl.obolibrary.org/obo/SO_0000652", "lbl": "rRNA_5S", @@ -16635,6 +17328,8 @@ Requested by Thomas Desvignes, Jan 2015.", "large", "ribosomal", "subunit", + "lsu", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000653", "lbl": "rRNA_28S", @@ -16691,6 +17386,9 @@ Requested by Thomas Desvignes, Jan 2015.", "functions", "subunit", "ribosome", + "lsu", + "ribosomal", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001001", "lbl": "rRNA_23S", @@ -16742,6 +17440,9 @@ Requested by Thomas Desvignes, Jan 2015.", "subunit", "ribosome", "eukaryotes", + "lsu", + "ribosomal", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001002", "lbl": "rRNA_25S", @@ -16791,6 +17492,8 @@ Requested by Thomas Desvignes, Jan 2015.", "ribosomal", "subunit", "mitochondrial", + "lsu", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001171", "lbl": "rRNA_21S", @@ -16924,11 +17627,9 @@ Requested by Thomas Desvignes, Jan 2015.", "secondary", "structure", "characterised", - "5", "domain", "boxes", "larger", - "3", "b", "two", "domains", @@ -16967,6 +17668,7 @@ Requested by Thomas Desvignes, Jan 2015.", "interactions", "processing", "functions", + "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001179", "lbl": "U3_snoRNA", @@ -17019,7 +17721,6 @@ Requested by Thomas Desvignes, Jan 2015.", "snorna", "specifies", "site", - "2", "o", "ribose", "rna", @@ -17273,6 +17974,7 @@ Requested by Thomas Desvignes, Jan 2015.", "binds", "begin", "transcription", + "pol", ], "id": "http://purl.obolibrary.org/obo/SO_0000169", "lbl": "RNApol_I_promoter", @@ -17323,6 +18025,8 @@ Requested by Thomas Desvignes, Jan 2015.", "binds", "begin", "transcription", + "b", + "pol", ], "id": "http://purl.obolibrary.org/obo/SO_0000170", "lbl": "RNApol_II_promoter", @@ -17373,6 +18077,8 @@ Requested by Thomas Desvignes, Jan 2015.", "binds", "begin", "transcription", + "c", + "pol", ], "id": "http://purl.obolibrary.org/obo/SO_0000171", "lbl": "RNApol_III_promoter", @@ -17525,6 +18231,7 @@ Requested by Thomas Desvignes, Jan 2015.", "gene", "genes", "control", + "iss", ], "id": "http://purl.obolibrary.org/obo/SO_0002056", "lbl": "intronic_splicing_silencer", @@ -17583,6 +18290,7 @@ Requested by Thomas Desvignes, Jan 2015.", "gene", "genes", "control", + "ess", ], "id": "http://purl.obolibrary.org/obo/SO_0002058", "lbl": "exonic_splicing_silencer", @@ -17679,7 +18387,6 @@ Requested by Thomas Desvignes, Jan 2015.", "iii", "promoter", "type", - "1", ], "id": "http://purl.obolibrary.org/obo/SO_0000617", "lbl": "RNApol_III_promoter_type_1", @@ -17705,7 +18412,7 @@ Requested by Thomas Desvignes, Jan 2015.", "iii", "promoter", "type", - "2", + "trna", ], "id": "http://purl.obolibrary.org/obo/SO_0000618", "lbl": "RNApol_III_promoter_type_2", @@ -17735,7 +18442,6 @@ Requested by Thomas Desvignes, Jan 2015.", "iii", "promoter", "type", - "3", ], "id": "http://purl.obolibrary.org/obo/SO_0000621", "lbl": "RNApol_III_promoter_type_3", diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts index 15461f21c..4b8f841e8 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext-stopwords.ts @@ -127,6 +127,7 @@ export const genericEnglishStopwords = new Set([ 'don', 'should', 'now', + ...'1234567890'.split(''), ]) /** diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts new file mode 100644 index 000000000..1208f8718 --- /dev/null +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts @@ -0,0 +1,71 @@ +import { describe, expect, it } from '@jest/globals' + +import { elaborateMatch, extractWords, getWords } from './fulltext' +import { OntologyDBNode } from './indexeddb-schema' + +const testNode: OntologyDBNode = { + id: 'http://purl.obolibrary.org/obo/SO_0000001', + lbl: 'region', + type: 'CLASS', + meta: { + definition: { + val: 'A sequence_feature with an extent greater than zero. A nucleotide region is composed of bases and a polypeptide region is composed of amino acids. It may also be termed a region of some number of nucleotides.', + xrefs: ['SO:ke'], + }, + subsets: ['http://purl.obolibrary.org/obo/so#SOFA'], + synonyms: [ + { + pred: 'hasExactSynonym', + val: 'sequence', + }, + ], + basicPropertyValues: [ + { + pred: 'http://www.geneontology.org/formats/oboInOwl#hasOBONamespace', + val: 'sequence', + }, + ], + }, +} + +describe('extractWords', () => { + it('can words from the members of objects', () => { + const result = extractWords(['bar baz', 'noggin']) + expect(Array.from(result)).toEqual(['bar', 'baz', 'noggin']) + }) + it('can get the words from mix of stuff', () => { + const set = extractWords(['zoz-zoo', 'bar baz', 'noggin', 'twenty']) + expect(Array.from(set)).toEqual([ + 'zoz', + 'zoo', + 'bar', + 'baz', + 'noggin', + 'twenty', + ]) + }) +}) + +describe('getWords', () => { + it('can get the words from a test node', () => { + const result = getWords(testNode, [ + '$.lbl', + '$.meta.definition.val', + '$.meta.synonyms[*].val', + ]) + expect([...result]).toMatchSnapshot() + }) +}) + +describe('elaborateMatch', () => { + it('can do one', () => { + const result = elaborateMatch( + ['$.lbl', '$.meta.synonyms[*].val', '$.meta.definition.val'], + testNode, + new Set([1, 2]), + ['zonk', 'nucleotide', 'region'], + ) + expect(result.length).toBe(1) + expect(result).toMatchSnapshot() + }) +}) diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts index d0c7cf670..d484c0f75 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts @@ -1,45 +1,65 @@ +/* eslint-disable import/no-named-as-default-member */ +// jsonpath triggers this rule for some reason. import { query } from 'jsonpath' does not work + import { checkAbortSignal } from '@jbrowse/core/util' +import jsonpath from 'jsonpath' import { stopwords } from './fulltext-stopwords' import { OntologyDBNode } from './indexeddb-schema' import OntologyStore, { Transaction } from '.' -import { OntologyTerm } from '..' - -function getStringAt(obj: Record, path: string[]) { - let thing = obj - for (const key of path) { - if (key in thing) { - thing = thing[key] as Record - } else { - return - } - } - return String(thing) + +function wordsInString(str: string) { + return str + .toLowerCase() + .split(/[\W_]+/) + .filter((word) => word && !stopwords.has(word)) } /** - * get the indexable words from a string of text. - * Lowercases the string and filters out stopwords + * recursively get the indexable words from an iterator + * of any objects **/ -export function stringToWords(text: string) { - return text - .toLowerCase() - .split(/[\W_]+/) - .filter((w) => Boolean(w) && !stopwords.has(w)) +export function* extractWords( + strings: Iterable, +): Generator { + for (const str of strings) { + yield* wordsInString(str) + } } -/** @returns a Set of all the words at the given JSON paths that are not stopwords */ -export function getWords(node: OntologyDBNode, paths: string[][]) { - const wordSet = new Set() - for (const path of paths) { - const text = getStringAt(node, path) - if (text) { - stringToWords(text).forEach((word) => { - wordSet.add(word) - }) +export function* extractStrings( + things: Iterable, +): Generator { + for (const thing of things) { + if (typeof thing === 'string') { + yield thing + } else if (typeof thing === 'object') { + const members = jsonpath.query(thing, '$..*') + yield* extractStrings(members) } } - return wordSet +} + +/** @returns generator of tuples of [jsonpath, word] */ +export function* getWords( + node: OntologyDBNode, + jsonPaths: Iterable, +): Generator<[string, string], void, undefined> { + for (const path of jsonPaths) { + const queryResult = jsonpath.query(node, path) as unknown[] + if (queryResult.length) { + for (const word of extractWords(extractStrings(queryResult))) { + yield [path, word] + } + } + } +} + +interface Match { + term: OntologyDBNode + path: string + str: string + score: number } /** @@ -53,26 +73,19 @@ export async function getTermsByFulltext( signal?: AbortSignal, ) { const myTx = tx ?? (await this.db).transaction(['nodes']) - const queryWords = stringToWords(text) - .map((w) => w.toLowerCase()) - .filter((w) => !stopwords.has(w)) - - const termsAndScores = new (class ScoreSheet extends Map< - string, - [number, OntologyTerm] - > { - incrementScore(term: OntologyTerm, amount: number) { - const curr = this.get(term.id) - if (curr) { - curr[0] += amount - } else { - termsAndScores.set(term.id, [amount, term]) - } - } - })() + + checkAbortSignal(signal) + + const queryWords = Array.from(wordsInString(text)) const queries: Promise[] = [] + /** + * Build a structure of which terms match which words. + * This is a Map of term.id -\> Set\ + **/ + const initialMatches = new Map]>() + // find startsWith and complete matches queries.push( ...queryWords.map(async (queryWord, queryWordIndex) => { @@ -83,63 +96,31 @@ export async function getTermsByFulltext( )) { checkAbortSignal(signal) const term = cursor.value - const termWords = term.fullTextWords ?? [] - // const matches = term.fullTextWords - // ?.filter((termWord) => termWord.startsWith(queryWord)) - // .map((termWord, te) => queryWord.length / termWord.length) - - type Match = [ - /** matching word index */ - number, - /** match score */ - number, + const termMatches = initialMatches.get(term.id) ?? [ + term, + new Set(), ] - const matches: Match[] = [] - for (let i = 0; i < termWords.length; i++) { - const termWord = termWords[i] - if (termWord.startsWith(queryWord)) { - const match: Match = [i, queryWord.length / termWord.length] - // check if the previous word also matches and count it 2X if so. - // this should surface matches with the correct word order - if (i > 0 && queryWordIndex > 0) { - const previousQueryWord = queryWords[queryWordIndex - 1] - for (let j = i - 1; j >= 0; j--) { - const previousTermWord = termWords[j] - if (previousTermWord.startsWith(previousQueryWord)) { - match[1] += - 2 * (previousQueryWord.length / previousTermWord.length) - // provide additional bonus if adjacent - if (i - j === 1) { - match[1] += 1 - } - break - } - } - } - matches.push(match) - } - } - - if (matches?.length) { - // score will be between 0 and 1 - termsAndScores.incrementScore( - term, - Math.max(...matches.map((m) => m[1])), - ) - } + termMatches[1].add(queryWordIndex) + initialMatches.set(term.id, termMatches) } }), ) await Promise.all(queries) - const results = Array.from(termsAndScores.values()) - // normalize the scores by number of words - for (const result of results) { - result[0] /= queryWords.length + checkAbortSignal(signal) + + // now rank the term matches and add some detail + const results: Match[] = [] + for (const [, [term, wordIndexes]] of initialMatches) { + checkAbortSignal(signal) + results.push( + ...elaborateMatch(this.textIndexPaths, term, wordIndexes, queryWords), + ) } + // sort the terms by score descending - results.sort((a, b) => b[0] - a[0]) + results.sort((a, b) => b.score - a.score) // truncate if necessary return results.slice( @@ -147,3 +128,81 @@ export async function getTermsByFulltext( this.options.maxSearchResults ?? this.DEFAULT_MAX_SEARCH_RESULTS, ) } + +export function elaborateMatch( + textIndexPaths: string[], + term: OntologyDBNode, + queryWordIndexes: Set, + queryWords: string[], +): Match[] { + const sortedWordIndexes = Array.from(queryWordIndexes).sort() + const matchedQueryWords = sortedWordIndexes.map((i) => queryWords[i]) + const queryWordRegexps = matchedQueryWords.map((queryWord) => { + const escaped = queryWord.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&') + return RegExp(`\\b${escaped}`, 'g') + }) + // const needle = matchedQueryWords.join(' ') + + // inspect the node at each of the index paths, because we don't know which ones matched + interface WordMatch { + wordIndex: number + position: number + } + let matches: (Match & { wordMatches: WordMatch[] })[] = [] + let maxScore = 0 + for (const path of textIndexPaths) { + const termStrings = Array.from(extractStrings(jsonpath.query(term, path))) + // find occurrences of each of the words in the strings + for (const str of termStrings) { + let score = 0 + const wordMatches: WordMatch[] = [] + queryWordRegexps.forEach((re, wordIndex) => { + for (const match of str.matchAll(re)) { + score += 1 + const position = match.index + if (position !== undefined) { + wordMatches.push({ wordIndex, position }) + } + } + }) + if (maxScore < score) { + maxScore = score + } + // sort the word matches by position in the target string ascending + wordMatches.sort((a, b) => a.position - b.position) + matches.push({ term, path, str, score, wordMatches }) + } + } + + // keep only the highest-score matches + matches = matches.filter((m) => m.score === maxScore) + + for (const match of matches) { + const { wordMatches } = match + // re-examine the word order and spacing to give bonuses for the + // right order and close spacing + for (let i = 0; i < wordMatches.length - 1; i++) { + // bonus for pairs with adjacent word indexes and close spacing + const m1 = wordMatches[i] + const m2 = wordMatches[i + 1] + const wdiff = m2.wordIndex - m1.wordIndex + if (wdiff === 1 || wdiff === -1) { + // they are adjacent, bonus + match.score += 1 + if (wdiff === 1) { + // they are in the right order, bonus + match.score += 1 + } + // give additional bonus for how close they are + const spacing = + Math.abs( + m2.position - + (m1.position + matchedQueryWords[m1.wordIndex].length), + ) - 1 + match.score -= spacing * 0.05 + } + } + } + + return matches +} diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts index 15f18f22a..76b092d1e 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts @@ -9,6 +9,7 @@ import { IDBPTransaction, IndexNames, StoreNames } from 'idb/with-async-ittr' import { getTermsByFulltext } from './fulltext' import { OntologyDB, OntologyDBEdge, isDeprecated } from './indexeddb-schema' import { + getTextIndexPaths, isDatabaseCompletelyLoaded, loadOboGraphJson, openDatabase, @@ -78,6 +79,11 @@ export default class OntologyStore { loadOboGraphJson = loadOboGraphJson getTermsByFulltext = getTermsByFulltext + openDatabase = openDatabase + + get textIndexPaths() { + return getTextIndexPaths.call(this) + } readonly DEFAULT_MAX_SEARCH_RESULTS = 100 @@ -148,7 +154,7 @@ export default class OntologyStore { throw errors } - const db = await openDatabase(this.dbName) + const db = await this.openDatabase(this.dbName) // if database is already completely loaded, just return it if (await isDatabaseCompletelyLoaded(db)) { diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts index 473567978..d9a6d837a 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts @@ -16,7 +16,7 @@ const schemaVersion = 2 export type Database = IDBPDatabase /** open the IndexedDB and create the DB schema if necessary */ -export async function openDatabase(dbName: string) { +export async function openDatabase(this: OntologyStore, dbName: string) { // await deleteDB(dbName) // uncomment this to reload every time during development return openDB(dbName, schemaVersion, { upgrade( @@ -65,6 +65,15 @@ export async function openDatabase(dbName: string) { }) } +/** serialize all our words in the DB node so they can be indexed */ +function serializeWords(foundWords: Iterable<[string, string]>): string[] { + const allWords = new Set() + for (const [, word] of foundWords) { + allWords.add(word) + } + return Array.from(allWords) +} + /** load a OBO Graph JSON file into a database */ export async function loadOboGraphJson(this: OntologyStore, db: Database) { const startTime = Date.now() @@ -94,14 +103,12 @@ export async function loadOboGraphJson(this: OntologyStore, db: Database) { // load nodes const nodeStore = tx.objectStore('nodes') - const fullTextIndexPaths = this.options.textIndexing?.indexPaths - ? this.options.textIndexing?.indexPaths.map((p) => p.split('/')) - : [['lbl'], ['meta', 'definition', 'val']] + const fullTextIndexPaths = getTextIndexPaths.call(this) for (const node of graph.nodes ?? []) { if (isOntologyDBNode(node)) { await nodeStore.add({ ...node, - fullTextWords: Array.from(getWords(node, fullTextIndexPaths)), + fullTextWords: serializeWords(getWords(node, fullTextIndexPaths)), }) } } @@ -144,6 +151,16 @@ export async function loadOboGraphJson(this: OntologyStore, db: Database) { return } +export function getTextIndexPaths(this: OntologyStore) { + return ( + this.options.textIndexing?.indexPaths ?? [ + '$.lbl', + '$.meta.synonyms[*].val', + '$.meta.definition.val', + ] + ) +} + export async function isDatabaseCompletelyLoaded(db: Database) { // since metadata is loaded last, we use it as a signal that all the other data // was loaded diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts index 5d41d7de0..2ac882870 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts @@ -152,7 +152,11 @@ export const OntologyRecordConfiguration = ConfigurationSchema( type: 'frozen', description: 'JSON paths for text fields that will be indexed for text searching', - defaultValue: ['lbl', 'meta/definition/val'], + defaultValue: [ + '$.lbl', + '$.meta.synonyms[*].val', + '$.meta.definition.val', + ], }, }, ) diff --git a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx index 808c39ca7..51ac6db25 100644 --- a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx +++ b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx @@ -188,7 +188,7 @@ export function OntologyTermMultiSelect({ undefined, signal, ) - setOptions(matches.map((m) => m[1]).filter(isOntologyClass)) + setOptions(matches.map((m) => m.term).filter(isOntologyClass)) setLoading(false) })().catch((error) => { if (!isAbortException(error)) { diff --git a/yarn.lock b/yarn.lock index 4a812d666..eae8c60e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5479,6 +5479,13 @@ __metadata: languageName: node linkType: hard +"@types/jsonpath@npm:^0.2.0": + version: 0.2.0 + resolution: "@types/jsonpath@npm:0.2.0" + checksum: c21b6bc016103cd9379080ba4fb132291dcea5fba9361830faae5ad92349339445d127c450b303084793f12957d5a21f9ae166d9778dcd1bda6bd2ea7eaf8631 + languageName: node + linkType: hard + "@types/jsonwebtoken@npm:*": version: 8.5.8 resolution: "@types/jsonwebtoken@npm:8.5.8" @@ -9785,6 +9792,25 @@ __metadata: languageName: node linkType: hard +"escodegen@npm:^1.8.1": + version: 1.14.3 + resolution: "escodegen@npm:1.14.3" + dependencies: + esprima: ^4.0.1 + estraverse: ^4.2.0 + esutils: ^2.0.2 + optionator: ^0.8.1 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 381cdc4767ecdb221206bbbab021b467bbc2a6f5c9a99c9e6353040080bdd3dfe73d7604ad89a47aca6ea7d58bc635f6bd3fbc8da9a1998e9ddfa8372362ccd0 + languageName: node + linkType: hard + "escodegen@npm:^2.0.0": version: 2.0.0 resolution: "escodegen@npm:2.0.0" @@ -10110,6 +10136,16 @@ __metadata: languageName: node linkType: hard +"esprima@npm:1.2.2": + version: 1.2.2 + resolution: "esprima@npm:1.2.2" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 4f10006f0e315f2f7d8cf6630e465f183512f1ab2e862b11785a133ce37ed1696573deefb5256e510eaa4368342b13b393334477f6ccdcdb8f10e782b0f5e6dc + languageName: node + linkType: hard + "esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -10138,7 +10174,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1": +"estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": version: 4.3.0 resolution: "estraverse@npm:4.3.0" checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 @@ -12507,6 +12543,7 @@ __metadata: "@types/autosuggest-highlight": ^3 "@types/cypress": ^1.1.3 "@types/file-saver": ^2 + "@types/jsonpath": ^0.2.0 "@types/node": ^16.11.6 "@types/prop-types": ^15 "@types/react": ^17.0.34 @@ -12524,6 +12561,7 @@ __metadata: idb: ^7.1.1 jest: ^29.6.2 jest-fetch-mock: ^3.0.3 + jsonpath: ^1.1.1 mobx: ^6.6.1 mobx-react: ^7.2.1 mobx-state-tree: ^5.1.5 @@ -14299,6 +14337,17 @@ __metadata: languageName: node linkType: hard +"jsonpath@npm:^1.1.1": + version: 1.1.1 + resolution: "jsonpath@npm:1.1.1" + dependencies: + esprima: 1.2.2 + static-eval: 2.0.2 + underscore: 1.12.1 + checksum: 5480d8e9e424fe2ed4ade6860b6e2cefddb21adb3a99abe0254cd9428e8ef9b0c9fb5729d6a5a514e90df50d645ccea9f3be48d627570e6222dd5dadc28eba7b + languageName: node + linkType: hard + "jsonwebtoken@npm:9.0.0": version: 9.0.0 resolution: "jsonwebtoken@npm:9.0.0" @@ -18502,6 +18551,15 @@ __metadata: languageName: node linkType: hard +"static-eval@npm:2.0.2": + version: 2.0.2 + resolution: "static-eval@npm:2.0.2" + dependencies: + escodegen: ^1.8.1 + checksum: 335a923c5ccb29add404ac23d0a55c0da6cee3071f6f67a7053aeac0dedc6dbfc53ac9269e9c25f403f5b7603a291ef47d7114f99bde241184f7aa3f9286dc32 + languageName: node + linkType: hard + "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" @@ -19738,6 +19796,13 @@ __metadata: languageName: node linkType: hard +"underscore@npm:1.12.1": + version: 1.12.1 + resolution: "underscore@npm:1.12.1" + checksum: ec327603aa112b99fe9d74cd9bf3b3b7451465a9d2610ceab269a532e3f191650ab017903be34dc86fe406a11d04d8905a3b04dd4c129493e51bee09a3f3074c + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" From 241eb742345f8aee551cc1983b82b58cb2c61616 Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Fri, 4 Aug 2023 21:11:30 +0000 Subject: [PATCH 09/19] allow text search to find prefixed term ID --- .../__snapshots__/fulltext.test.ts.snap | 48 + .../__snapshots__/index.test.ts.snap | 1378 +++++++++++------ .../OntologyStore/fulltext.test.ts | 43 +- .../OntologyManager/OntologyStore/fulltext.ts | 40 +- .../OntologyStore/index.test.ts | 32 +- .../OntologyManager/OntologyStore/index.ts | 5 + .../OntologyStore/indexeddb-storage.ts | 15 +- .../OntologyManager/OntologyStore/prefixes.ts | 35 + .../src/OntologyManager/index.ts | 15 +- 9 files changed, 1065 insertions(+), 546 deletions(-) create mode 100644 packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/prefixes.ts diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/fulltext.test.ts.snap b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/fulltext.test.ts.snap index 2622e8ed5..481d3d41d 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/fulltext.test.ts.snap +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/fulltext.test.ts.snap @@ -1,5 +1,49 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`elaborateMatch can do another 1`] = ` +[ + { + "path": "$PREFIXED_ID", + "score": 1, + "str": "SO:0000001", + "term": { + "id": "http://purl.obolibrary.org/obo/SO_0000001", + "lbl": "region", + "meta": { + "basicPropertyValues": [ + { + "pred": "http://www.geneontology.org/formats/oboInOwl#hasOBONamespace", + "val": "sequence", + }, + ], + "definition": { + "val": "A sequence_feature with an extent greater than zero. A nucleotide region is composed of bases and a polypeptide region is composed of amino acids. It may also be termed a region of some number of nucleotides.", + "xrefs": [ + "SO:ke", + ], + }, + "subsets": [ + "http://purl.obolibrary.org/obo/so#SOFA", + ], + "synonyms": [ + { + "pred": "hasExactSynonym", + "val": "sequence", + }, + ], + }, + "type": "CLASS", + }, + "wordMatches": [ + { + "position": 0, + "wordIndex": 0, + }, + ], + }, +] +`; + exports[`elaborateMatch can do one 1`] = ` [ { @@ -62,6 +106,10 @@ exports[`elaborateMatch can do one 1`] = ` exports[`getWords can get the words from a test node 1`] = ` [ + [ + "$PREFIXED_ID", + "so:0000001", + ], [ "$.lbl", "region", diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap index 14a98347c..e083e01be 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap @@ -4,6 +4,7 @@ exports[`OntologyStore SO clone_insert_end is among valid subparts of BAC_cloned [ { "fullTextWords": [ + "so:0000103", "clone", "insert", "end", @@ -37,6 +38,7 @@ exports[`OntologyStore SO clone_insert_end is among valid subparts of BAC_cloned }, { "fullTextWords": [ + "so:0000179", "clone", "insert", "start", @@ -70,6 +72,7 @@ exports[`OntologyStore SO clone_insert_end is among valid subparts of BAC_cloned }, { "fullTextWords": [ + "so:0000785", "cloned", "region", "segment", @@ -102,8 +105,6 @@ exports[`OntologyStore SO clone_insert_end is among valid subparts of BAC_cloned ] `; -exports[`OntologyStore can load goslim aspergillus 1`] = `187`; - exports[`OntologyStore can load goslim generic 1`] = `248`; exports[`OntologyStore can load goslim generic 2`] = ` @@ -114,9 +115,11 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "mitotic nuclear division", "term": { "fullTextWords": [ + "go:0140014", "mitotic", "nuclear", "division", + "mitosis", "cell", "cycle", "process", @@ -133,7 +136,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "compacted", "form", "canonically", - "mitosis", "produces", "two", "daughter", @@ -205,9 +207,11 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "meiotic nuclear division", "term": { "fullTextWords": [ + "go:0140013", "meiotic", "nuclear", "division", + "meiosis", "one", "two", "divisions", @@ -215,7 +219,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "part", "cell", "cycle", - "meiosis", ], "id": "http://purl.obolibrary.org/obo/GO_0140013", "lbl": "meiotic nuclear division", @@ -273,9 +276,11 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "One of the two nuclear divisions that occur as part of the meiotic cell cycle.", "term": { "fullTextWords": [ + "go:0140013", "meiotic", "nuclear", "division", + "meiosis", "one", "two", "divisions", @@ -283,7 +288,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "part", "cell", "cycle", - "meiosis", ], "id": "http://purl.obolibrary.org/obo/GO_0140013", "lbl": "meiotic nuclear division", @@ -341,9 +345,11 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "The chemical reactions and pathways involving snRNA, small nuclear RNA, any of various low-molecular-mass RNA molecules found in the eukaryotic nucleus as components of the small nuclear ribonucleoprotein.", "term": { "fullTextWords": [ + "go:0016073", "snrna", "metabolic", "process", + "metabolism", "chemical", "reactions", "pathways", @@ -361,7 +367,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "nucleus", "components", "ribonucleoprotein", - "metabolism", ], "id": "http://purl.obolibrary.org/obo/GO_0016073", "lbl": "snRNA metabolic process", @@ -409,8 +414,10 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "nuclear chromosome", "term": { "fullTextWords": [ + "go:0000228", "nuclear", "chromosome", + "interphase", "encodes", "genome", "found", @@ -420,7 +427,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "cycle", "phases", "intact", - "interphase", ], "id": "http://purl.obolibrary.org/obo/GO_0000228", "lbl": "nuclear chromosome", @@ -459,13 +465,15 @@ exports[`OntologyStore can load goslim generic 2`] = ` ], }, { - "path": "$.meta.definition.val", + "path": "$.meta.synonyms[*].val", "score": 1, - "str": "A chromosome that encodes the nuclear genome and is found in the nucleus of a eukaryotic cell during the cell cycle phases when the nucleus is intact.", + "str": "nuclear interphase chromosome", "term": { "fullTextWords": [ + "go:0000228", "nuclear", "chromosome", + "interphase", "encodes", "genome", "found", @@ -475,7 +483,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "cycle", "phases", "intact", - "interphase", ], "id": "http://purl.obolibrary.org/obo/GO_0000228", "lbl": "nuclear chromosome", @@ -508,19 +515,21 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "wordMatches": [ { - "position": 30, + "position": 0, "wordIndex": 0, }, ], }, { - "path": "$.meta.synonyms[*].val", + "path": "$.meta.definition.val", "score": 1, - "str": "nuclear interphase chromosome", + "str": "A chromosome that encodes the nuclear genome and is found in the nucleus of a eukaryotic cell during the cell cycle phases when the nucleus is intact.", "term": { "fullTextWords": [ + "go:0000228", "nuclear", "chromosome", + "interphase", "encodes", "genome", "found", @@ -530,7 +539,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "cycle", "phases", "intact", - "interphase", ], "id": "http://purl.obolibrary.org/obo/GO_0000228", "lbl": "nuclear chromosome", @@ -563,7 +571,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` }, "wordMatches": [ { - "position": 0, + "position": 30, "wordIndex": 0, }, ], @@ -574,6 +582,13 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "results in division of", "term": { "fullTextWords": [ + "http:", + "purl", + "obolibrary", + "org", + "obo", + "gorel", + "0001019", "results", "division", ], @@ -613,6 +628,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "nuclear envelope", "term": { "fullTextWords": [ + "go:0005635", "nuclear", "envelope", "double", @@ -681,18 +697,19 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "The division of the cytoplasm and the plasma membrane of a cell and its partitioning into two daughter cells.", "term": { "fullTextWords": [ + "go:0000910", "cytokinesis", + "cell", + "cycle", + "involved", "division", "cytoplasm", "plasma", "membrane", - "cell", "partitioning", "two", "daughter", "cells", - "cycle", - "involved", ], "id": "http://purl.obolibrary.org/obo/GO_0000910", "lbl": "cytokinesis", @@ -766,6 +783,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "That part of the nuclear content other than the chromosomes or the nucleolus.", "term": { "fullTextWords": [ + "go:0005654", "nucleoplasm", "part", "nuclear", @@ -818,6 +836,7 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "A cellular structure that forms the internal framework of eukaryotic and prokaryotic cells. The cytoskeleton includes intermediate filaments, microfilaments, microtubules, the microtrabecular lattice, and other structures characterized by a polymeric filamentous nature and long-range order within the cell. The various elements of the cytoskeleton not only serve in the maintenance of cellular shape but also have roles in other cellular functions, including cellular movement, cell division, endocytosis, and movement of organelles.", "term": { "fullTextWords": [ + "go:0005856", "cytoskeleton", "cellular", "structure", @@ -909,8 +928,11 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "chromosome division", "term": { "fullTextWords": [ + "go:0007059", "chromosome", "segregation", + "division", + "transmission", "process", "genetic", "material", @@ -934,8 +956,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "movement", "spindle", "poles", - "division", - "transmission", ], "id": "http://purl.obolibrary.org/obo/GO_0007059", "lbl": "chromosome segregation", @@ -994,8 +1014,12 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "Binding to a histone, any of a group of water-soluble proteins found in association with the DNA of eukaryotic or archaeal chromosomes. They are involved in the condensation and coiling of chromosomes during cell division and have also been implicated in gene regulation and DNA replication. They may be chemically modified (methylated, acetlyated and others) to regulate gene transcription.", "term": { "fullTextWords": [ + "go:0042393", "histone", "binding", + "specific", + "chaperone", + "activity", "group", "water", "soluble", @@ -1024,9 +1048,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "others", "regulate", "transcription", - "specific", - "chaperone", - "activity", ], "id": "http://purl.obolibrary.org/obo/GO_0042393", "lbl": "histone binding", @@ -1079,9 +1100,11 @@ exports[`OntologyStore can load goslim generic 2`] = ` "str": "Progression through the phases of the mitotic cell cycle, the most common eukaryotic cell cycle, which canonically comprises four successive phases called G1, S, G2, and M and includes replication of the genome and the subsequent segregation of chromosomes into daughter cells. In some variant cell cycles nuclear replication or nuclear division may not be followed by cell division, or G1 and G2 phases may be absent.", "term": { "fullTextWords": [ + "go:0000278", "mitotic", "cell", "cycle", + "mitosis", "progression", "phases", "common", @@ -1109,7 +1132,6 @@ exports[`OntologyStore can load goslim generic 2`] = ` "may", "followed", "absent", - "mitosis", ], "id": "http://purl.obolibrary.org/obo/GO_0000278", "lbl": "mitotic cell cycle", @@ -1189,7 +1211,10 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` [ { "fullTextWords": [ + "so:0000704", "gene", + "insdc", + "feature:gene", "region", "regions", "includes", @@ -1203,8 +1228,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "include", "regulatory", "transcribed", - "insdc", - "feature", ], "id": "http://purl.obolibrary.org/obo/SO_0000704", "lbl": "gene", @@ -1243,6 +1266,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000087", "nuclear", "gene", "sequence", @@ -1278,10 +1302,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000088", "mt", "gene", - "located", "mitochondrial", + "located", "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000088", @@ -1319,6 +1344,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000090", "plastid", "gene", "sequence", @@ -1349,6 +1375,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000097", "nucleomorph", "gene", "sequence", @@ -1379,6 +1406,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000098", "plasmid", "gene", "sequence", @@ -1409,6 +1437,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000099", "proviral", "gene", "sequence", @@ -1439,6 +1468,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000111", "transposable", "element", "gene", @@ -1479,6 +1509,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000127", "silenced", "gene", ], @@ -1508,6 +1539,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000280", "engineered", "gene", ], @@ -1537,6 +1569,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000285", "foreign", "gene", ], @@ -1566,6 +1599,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000287", "fusion", "gene", ], @@ -1600,6 +1634,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000456", "recombinationally", "rearranged", "gene", @@ -1630,6 +1665,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000459", "gene", "trans", "spliced", @@ -1661,6 +1697,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000690", "gene", "polycistronic", "transcript", @@ -1692,6 +1729,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000816", "rescue", "gene", "rescues", @@ -1722,6 +1760,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000890", "post", "translationally", "regulated", @@ -1753,6 +1792,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000891", "negatively", "autoregulated", "gene", @@ -1784,6 +1824,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000892", "positively", "autoregulated", "gene", @@ -1814,6 +1855,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000896", "translationally", "regulated", "gene", @@ -1844,6 +1886,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000898", "epigenetically", "modified", "gene", @@ -1874,6 +1917,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000902", "transgene", "gene", "transferred", @@ -1911,6 +1955,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000996", "predicted", "gene", ], @@ -1937,6 +1982,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001217", "protein", "coding", "gene", @@ -1961,6 +2007,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001219", "retrogene", ], "id": "http://purl.obolibrary.org/obo/SO_0001219", @@ -1977,12 +2024,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001263", "ncrna", "gene", - "encodes", "non", "coding", "rna", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0001263", "lbl": "ncRNA_gene", @@ -2011,6 +2059,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001431", "cryptic", "gene", "transcribed", @@ -2046,6 +2095,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001739", "gene", "non", "canonical", @@ -2090,13 +2140,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001867", "candidate", "gene", + "target", "suspected", "involved", "expression", "trait", - "target", ], "id": "http://purl.obolibrary.org/obo/SO_0001867", "lbl": "candidate_gene", @@ -2139,6 +2190,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002121", "vertebrate", "immune", "system", @@ -2203,6 +2255,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0005853", "gene", "cassette", "substituted", @@ -2245,6 +2298,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000089", "kinetoplast", "gene", "located", @@ -2276,6 +2330,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000091", "apicoplast", "gene", "sequence", @@ -2306,6 +2361,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000092", "ct", "gene", "chloroplast", @@ -2341,6 +2397,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000093", "chromoplast", "gene", "sequence", @@ -2371,6 +2428,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000094", "cyanelle", "gene", "sequence", @@ -2401,6 +2459,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000095", "leucoplast", "gene", "plastid", @@ -2432,6 +2491,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000096", "proplastid", "gene", "sequence", @@ -2462,6 +2522,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000100", "endogenous", "retroviral", "gene", @@ -2495,6 +2556,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000283", "engineered", "foreign", "transposable", @@ -2527,6 +2589,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000128", "gene", "silenced", "dna", @@ -2558,6 +2621,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001224", "gene", "silenced", "rna", @@ -2598,6 +2662,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001225", "gene", "silenced", "histone", @@ -2629,6 +2694,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000281", "engineered", "foreign", "gene", @@ -2659,6 +2725,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000288", "engineered", "fusion", "gene", @@ -2689,6 +2756,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000373", "recombinationally", "inverted", "gene", @@ -2721,6 +2789,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000941", "recombinationally", "rearranged", "vertebrate", @@ -2754,6 +2823,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000692", "gene", "dicistronic", "transcript", @@ -2785,6 +2855,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000818", "wild", "type", "rescue", @@ -2817,6 +2888,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000138", "gene", "rearranged", "dna", @@ -2850,6 +2922,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000888", "maternally", "imprinted", "gene", @@ -2880,6 +2953,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000889", "paternally", "imprinted", "gene", @@ -2910,6 +2984,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000897", "allelically", "excluded", "gene", @@ -2940,6 +3015,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000363", "floxed", "gene", "transgene", @@ -2970,6 +3046,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000451", "gene", "polyadenylated", "mrna", @@ -3001,6 +3078,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000455", "gene", "mrna", "frameshift", @@ -3032,6 +3110,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000548", "gene", "edited", "transcript", @@ -3063,6 +3142,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000693", "gene", "recoded", "mrna", @@ -3094,6 +3174,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001264", "grna", "gene", ], @@ -3117,6 +3198,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001265", "mirna", "gene", "strna", @@ -3153,6 +3235,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001266", "scrna", "gene", ], @@ -3176,6 +3259,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001267", "snorna", "gene", ], @@ -3199,12 +3283,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001268", "snrna", "gene", - "encodes", "small", "nuclear", "rna", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0001268", "lbl": "snRNA_gene", @@ -3236,6 +3321,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001269", "srp", "rna", "gene", @@ -3260,6 +3346,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001271", "tmrna", "gene", ], @@ -3283,6 +3370,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001272", "trna", "gene", ], @@ -3306,12 +3394,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001637", "rrna", "gene", + "rdna", "encodes", "ribosomal", "rna", - "rdna", ], "id": "http://purl.obolibrary.org/obo/SO_0001637", "lbl": "rRNA_gene", @@ -3351,6 +3440,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001638", "pirna", "gene", "encodes", @@ -3392,6 +3482,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001639", "rnase", "p", "rna", @@ -3432,6 +3523,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001640", "rnase", "mrp", "rna", @@ -3472,14 +3564,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001643", "telomerase", "rna", "gene", + "terc", + "component", "non", "coding", "product", - "component", - "terc", ], "id": "http://purl.obolibrary.org/obo/SO_0001643", "lbl": "telomerase_RNA_gene", @@ -3528,14 +3621,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002127", "lncrna", "gene", - "encodes", + "lnc", + "rna", "long", "non", "coding", - "rna", - "lnc", + "encodes", ], "id": "http://purl.obolibrary.org/obo/SO_0002127", "lbl": "lncRNA_gene", @@ -3582,6 +3676,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002180", "enzymatic", "rna", "gene", @@ -3618,6 +3713,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:1001196", "cryptogene", "maxicircle", "gene", @@ -3648,6 +3744,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001740", "gene", "start", "codon", @@ -3691,16 +3788,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001868", "positional", "candidate", "gene", + "target", "whose", "association", "trait", "based", "location", "chromosome", - "target", ], "id": "http://purl.obolibrary.org/obo/SO_0001868", "lbl": "positional_candidate_gene", @@ -3743,9 +3841,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001869", "functional", "candidate", "gene", + "target", "whose", "function", "something", @@ -3753,7 +3853,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "biologically", "trait", "investigation", - "target", ], "id": "http://purl.obolibrary.org/obo/SO_0001869", "lbl": "functional_candidate_gene", @@ -3796,11 +3895,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002122", "immunoglobulin", "gene", - "germline", "ig", "genes", + "germline", ], "id": "http://purl.obolibrary.org/obo/SO_0002122", "lbl": "immunoglobulin_gene", @@ -3843,11 +3943,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002133", "cell", "receptor", "gene", - "germline", "tr", + "germline", ], "id": "http://purl.obolibrary.org/obo/SO_0002133", "lbl": "T_cell_receptor_gene", @@ -3883,12 +3984,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000654", "maxicircle", "gene", - "mitochondrial", - "located", "maxi", "circle", + "mitochondrial", + "located", ], "id": "http://purl.obolibrary.org/obo/SO_0000654", "lbl": "maxicircle_gene", @@ -3920,6 +4022,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000975", "minicircle", "gene", ], @@ -3943,6 +4046,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000129", "gene", "silenced", "dna", @@ -3978,6 +4082,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001226", "gene", "silenced", "histone", @@ -4009,6 +4114,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001227", "gene", "silenced", "histone", @@ -4040,6 +4146,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000721", "gene", "dicistronic", "primary", @@ -4075,13 +4182,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000722", "gene", "dicistronic", "mrna", - "encodes", - "polycistronic", "processed", "transcript", + "encodes", + "polycistronic", ], "id": "http://purl.obolibrary.org/obo/SO_0000722", "lbl": "gene_with_dicistronic_mRNA", @@ -4116,6 +4224,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000697", "gene", "stop", "codon", @@ -4150,6 +4259,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000711", "gene", "mrna", "recoded", @@ -4182,6 +4292,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000712", "gene", "transcript", "translational", @@ -4214,6 +4325,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0001641", "lincrna", "gene", "encodes", @@ -4259,6 +4371,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002182", "antisense", "lncrna", "gene", @@ -4299,16 +4412,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002183", "sense", "overlap", "ncrna", "gene", + "lncrna", "encodes", "long", "non", "coding", "rna", - "lncrna", ], "id": "http://purl.obolibrary.org/obo/SO_0002183", "lbl": "sense_overlap_ncRNA_gene", @@ -4349,16 +4463,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002184", "sense", "intronic", "ncrna", "gene", + "lncrna", "encodes", "long", "non", "coding", "rna", - "lncrna", ], "id": "http://purl.obolibrary.org/obo/SO_0002184", "lbl": "sense_intronic_ncRNA_gene", @@ -4399,6 +4514,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002185", "bidirectional", "promoter", "lncrna", @@ -4450,6 +4566,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002181", "ribozyme", "gene", "encodes", @@ -4485,16 +4602,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002123", "ig", "c", "gene", + "igc", + "immunoglobulin", "constant", + "germline", "codes", "region", - "immunoglobulin", "chain", - "igc", - "germline", ], "id": "http://purl.obolibrary.org/obo/SO_0002123", "lbl": "IG_C_gene", @@ -4542,20 +4660,21 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002124", "ig", "d", "gene", + "igd", + "immunoglobulin", + "diversity", "rearranges", "dna", "level", "codes", - "diversity", "region", "variable", "domain", "immunoglobuin", - "igd", - "immunoglobulin", ], "id": "http://purl.obolibrary.org/obo/SO_0002124", "lbl": "IG_D_gene", @@ -4603,10 +4722,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002125", "ig", "j", "gene", "joining", + "immunoglobulin", "rearranges", "dna", "level", @@ -4614,7 +4735,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "region", "variable", "domain", - "immunoglobulin", "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002125", @@ -4663,19 +4783,20 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002126", "ig", "v", "gene", + "igv", "variable", + "immunoglobulin", "rearranges", "dna", "level", "codes", "region", "domain", - "immunoglobulin", "chain", - "igv", ], "id": "http://purl.obolibrary.org/obo/SO_0002126", "lbl": "IG_V_gene", @@ -4723,14 +4844,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002134", "tr", "c", "gene", + "cell", + "receptor", "constant", "codes", "region", - "cell", - "receptor", "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002134", @@ -4771,9 +4893,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002135", "tr", "d", "gene", + "cell", + "receptor", "rearranges", "dna", "level", @@ -4782,8 +4907,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "region", "variable", "domain", - "cell", - "receptor", ], "id": "http://purl.obolibrary.org/obo/SO_0002135", "lbl": "TR_D_Gene", @@ -4823,9 +4946,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002136", "tr", "j", "gene", + "cell", + "receptor", "joining", "rearranges", "dna", @@ -4834,8 +4960,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "region", "variable", "domain", - "cell", - "receptor", "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002136", @@ -4876,9 +5000,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0002137", "tr", "v", "gene", + "cell", + "receptor", "variable", "rearranges", "dna", @@ -4886,8 +5013,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` "codes", "region", "domain", - "cell", - "receptor", "chain", ], "id": "http://purl.obolibrary.org/obo/SO_0002137", @@ -4928,6 +5053,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000698", "gene", "stop", "codon", @@ -4962,6 +5088,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 1`] = ` }, { "fullTextWords": [ + "so:0000710", "gene", "stop", "codon", @@ -5001,6 +5128,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` [ { "fullTextWords": [ + "so:0000831", "gene", "member", "region", @@ -5037,6 +5165,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000842", "gene", "component", "region", @@ -5064,15 +5193,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000673", "transcript", + "insdc", + "feature:misc", "rna", "synthesized", "dna", "template", "polymerase", - "insdc", - "feature", - "misc", ], "id": "http://purl.obolibrary.org/obo/SO_0000673", "lbl": "transcript", @@ -5108,6 +5237,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002188", "functional", "gene", "region", @@ -5157,16 +5287,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0005836", "regulatory", "region", + "insdc", + "feature:regulatory", + "qualifier:other", "sequence", "involved", "control", "biological", "process", - "insdc", - "feature", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0005836", "lbl": "regulatory_region", @@ -5210,12 +5341,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000183", "non", "transcribed", "region", - "gene", "sequence", "nontranscribed", + "gene", ], "id": "http://purl.obolibrary.org/obo/SO_0000183", "lbl": "non_transcribed_region", @@ -5258,6 +5390,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000997", "gene", "fragment", ], @@ -5284,6 +5417,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001240", "tss", "region", "gene", @@ -5314,6 +5448,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002026", "intein", "encoding", "region", @@ -5355,6 +5490,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:3000000", "gene", "segment", "component", @@ -5398,6 +5534,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000078", "polycistronic", "transcript", ], @@ -5427,6 +5564,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000118", "transcript", "translational", "frameshift", @@ -5457,18 +5595,19 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000185", "primary", "transcript", + "insdc", + "feature:precursor", + "rna", + "feature:prim", + "precursor", "initial", "state", "requires", "modification", "functional", - "insdc", - "feature", - "precursor", - "rna", - "prim", ], "id": "http://purl.obolibrary.org/obo/SO_0000185", "lbl": "primary_transcript", @@ -5516,6 +5655,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000233", "mature", "transcript", "undergone", @@ -5576,6 +5716,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000278", "transcript", "bound", "nucleic", @@ -5610,6 +5751,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000279", "transcript", "bound", "protein", @@ -5643,6 +5785,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000372", "enzymatic", "rna", "sequence", @@ -5684,13 +5827,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000479", "trans", "spliced", "transcript", "insdc", - "feature", - "trna", - "qualifier", + "feature:trna", + "qualifier:trans", "splicing", ], "id": "http://purl.obolibrary.org/obo/SO_0000479", @@ -5731,6 +5874,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000665", "monocistronic", "transcript", ], @@ -5760,6 +5904,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000681", "aberrant", "processed", "transcript", @@ -5796,6 +5941,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000873", "edited", "transcript", ], @@ -5825,6 +5971,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001503", "processed", "transcript", "open", @@ -5871,6 +6018,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002138", "predicted", "transcript", "feature", @@ -5911,6 +6059,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:1001187", "alternatively", "spliced", "transcript", @@ -5941,6 +6090,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001679", "transcription", "regulatory", "region", @@ -5985,6 +6135,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001680", "translation", "regulatory", "region", @@ -6026,6 +6177,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001681", "recombination", "regulatory", "region", @@ -6067,16 +6219,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001682", "replication", "regulatory", "region", + "insdc", + "feature:regulatory", + "qualifier:replication", "involved", "control", "process", "nucleotide", - "insdc", - "feature", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0001682", "lbl": "replication_regulatory_region", @@ -6120,9 +6273,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002191", "imprinting", "control", "region", + "insdc", + "feature:regulatory", + "qualifier:imprinting", "regulatory", "controls", "epigenetic", @@ -6145,9 +6302,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "non", "coding", "rnas", - "insdc", - "feature", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0002191", "lbl": "imprinting_control_region", @@ -6188,6 +6342,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001741", "pseudogenic", "gene", "segment", @@ -6234,6 +6389,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000079", "dicistronic", "transcript", ], @@ -6263,6 +6419,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000631", "polycistronic", "primary", "transcript", @@ -6297,8 +6454,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000634", "polycistronic", "mrna", + "processed", + "transcript", "encodes", "multiple", "proteins", @@ -6307,8 +6467,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "non", "overlapping", "regions", - "processed", - "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0000634", "lbl": "polycistronic_mRNA", @@ -6345,17 +6503,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000120", "protein", "coding", "primary", "transcript", + "pre", + "mrna", "least", "part", "encodes", "one", "proteins", - "pre", - "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0000120", "lbl": "protein_coding_primary_transcript", @@ -6393,13 +6552,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000483", "nc", "primary", "transcript", + "noncoding", "never", "translated", "protein", - "noncoding", ], "id": "http://purl.obolibrary.org/obo/SO_0000483", "lbl": "nc_primary_transcript", @@ -6434,6 +6594,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000632", "monocistronic", "primary", "transcript", @@ -6468,6 +6629,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000635", "mini", "exon", "donor", @@ -6509,6 +6671,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000645", "antisense", "primary", "transcript", @@ -6544,6 +6707,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000861", "capped", "primary", "transcript", @@ -6574,13 +6738,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001905", "regional", "centromere", "outer", "repeat", "transcript", - "transcribed", "region", + "transcribed", ], "id": "http://purl.obolibrary.org/obo/SO_0001905", "lbl": "regional_centromere_outer_repeat_transcript", @@ -6624,17 +6789,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002115", "pseudogenic", "transcript", "retained", "intron", + "pseudogene", "supported", "est", "mrna", "evidence", "aligns", "unambiguously", - "pseudogene", "locus", "intronic", "sequence", @@ -6678,22 +6844,23 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000234", "mrna", + "insdc", + "feature:mrna", "messenger", "rna", + "protein", + "coding", + "transcript", "intermediate", "molecule", "dna", - "protein", "includes", "utr", - "coding", "sequences", "contain", "introns", - "insdc", - "feature", - "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0000234", "lbl": "mRNA", @@ -6743,7 +6910,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000655", "ncrna", + "insdc", + "qualifier:other", + "known", + "noncoding", "rna", "transcript", "encode", @@ -6752,10 +6924,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "molecule", "gene", "product", - "insdc", - "qualifier", - "known", - "noncoding", ], "id": "http://purl.obolibrary.org/obo/SO_0000655", "lbl": "ncRNA", @@ -6805,14 +6973,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000374", "ribozyme", + "insdc", + "feature:ncrna", + "qualifier:ribozyme", "rna", "catalytic", "activity", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000374", "lbl": "ribozyme", @@ -6852,6 +7020,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000872", "trans", "spliced", "mrna", @@ -6882,8 +7051,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000633", "monocistronic", "mrna", + "processed", + "transcript", "either", "single", "protein", @@ -6892,8 +7064,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "encoding", "products", "overlap", - "processed", - "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0000633", "lbl": "monocistronic_mRNA", @@ -6930,6 +7100,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000874", "edited", "transcript", "substitution", @@ -6960,6 +7131,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000929", "edited", "mrna", ], @@ -6989,6 +7161,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002111", "pseudogene", "processed", "transcript", @@ -7042,8 +7215,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002139", "unconfirmed", "transcript", + "tec", + "experimentally", + "confirmed", "used", "non", "spliced", @@ -7080,9 +7257,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "peptide", "specific", "antibodies", - "tec", - "experimentally", - "confirmed", ], "id": "http://purl.obolibrary.org/obo/SO_0002139", "lbl": "unconfirmed_transcript", @@ -7122,7 +7296,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000141", "terminator", + "insdc", + "feature:regulatory", + "qualifier:terminator", "sequence", "dna", "located", @@ -7134,10 +7312,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "polymerase", "terminate", "transcription", - "insdc", - "feature", - "regulatory", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000141", "lbl": "terminator", @@ -7181,18 +7355,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000235", "tf", "binding", "site", + "transcription", + "factor", "region", "nucleotide", "molecule", "binds", - "transcription", - "factor", "complex", - "go", - "0005667", + "go:0005667", ], "id": "http://purl.obolibrary.org/obo/SO_0000235", "lbl": "TF_binding_site", @@ -7227,9 +7401,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000551", "polya", "signal", "sequence", + "insdc", + "feature:regulatory", + "qualifier:polya", + "poly", + "polyadenylation", + "termination", "recognition", "necessary", "endonuclease", @@ -7237,15 +7418,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "rna", "transcript", "followed", - "polyadenylation", "consensus", "aataaa", - "insdc", - "feature", - "regulatory", - "qualifier", - "poly", - "termination", ], "id": "http://purl.obolibrary.org/obo/SO_0000551", "lbl": "polyA_signal_sequence", @@ -7292,6 +7466,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000752", "gene", "group", "regulatory", @@ -7320,18 +7495,19 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001055", "transcriptional", "cis", "regulatory", "region", - "modulates", + "insdc", + "feature:regulatory", + "qualifier:transcriptional", "transcription", + "control", + "modulates", "gene", "genes", - "insdc", - "feature", - "qualifier", - "control", ], "id": "http://purl.obolibrary.org/obo/SO_0001055", "lbl": "transcriptional_cis_regulatory_region", @@ -7375,6 +7551,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001056", "splicing", "regulatory", "region", @@ -7409,6 +7586,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001427", "cis", "regulatory", "frameshift", @@ -7449,6 +7627,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001492", "intronic", "regulatory", "region", @@ -7489,6 +7668,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002047", "transcription", "pause", "site", @@ -7547,8 +7727,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002205", "response", "element", + "insdc", + "feature:regulatory", + "qualifier:response", "regulatory", "acts", "stimulus", @@ -7557,9 +7741,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcription", "factor", "binding", - "insdc", - "feature", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0002205", "lbl": "response_element", @@ -7600,7 +7781,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000140", "attenuator", + "insdc", + "feature:regulatory", + "qualifier:attenuator", "sequence", "segment", "located", @@ -7613,10 +7798,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "premature", "termination", "translation", - "insdc", - "feature", - "regulatory", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000140", "lbl": "attenuator", @@ -7660,6 +7841,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002059", "recombination", "enhancer", "regulatory", @@ -7703,11 +7885,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000716", "dicistronic", "mrna", - "quality", "processed", "transcript", + "quality", ], "id": "http://purl.obolibrary.org/obo/SO_0000716", "lbl": "dicistronic_mRNA", @@ -7739,6 +7922,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:1001197", "dicistronic", "primary", "transcript", @@ -7770,6 +7954,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000932", "pre", "edited", "mrna", @@ -7794,13 +7979,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002112", "coding", "transcript", "retained", "intron", + "mrna", "protein", "containing", - "mrna", ], "id": "http://purl.obolibrary.org/obo/SO_0002112", "lbl": "coding_transcript_with_retained_intron", @@ -7839,8 +8025,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002114", "nmd", "transcript", + "nonsense", + "mediated", + "decay", "protein", "coding", "contains", @@ -7854,9 +8044,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "codon", "making", "susceptible", - "nonsense", - "mediated", - "decay", ], "id": "http://purl.obolibrary.org/obo/SO_0002114", "lbl": "NMD_transcript", @@ -7908,14 +8095,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000012", "scrna", "primary", "transcript", - "one", - "several", "small", "cytoplasmic", "rna", + "one", + "several", "molecules", "present", "cytoplasm", @@ -7965,12 +8153,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000209", "rrna", "primary", "transcript", - "encoding", "ribosomal", "rna", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0000209", "lbl": "rRNA_primary_transcript", @@ -8005,13 +8194,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000210", "trna", "primary", "transcript", "encoding", "transfer", "rna", - "0000253", + "so:0000253", ], "id": "http://purl.obolibrary.org/obo/SO_0000210", "lbl": "tRNA_primary_transcript", @@ -8039,6 +8229,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000231", "snrna", "primary", "transcript", @@ -8046,7 +8237,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "small", "nuclear", "rna", - "0000274", + "so:0000274", ], "id": "http://purl.obolibrary.org/obo/SO_0000231", "lbl": "snRNA_primary_transcript", @@ -8074,6 +8265,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000232", "snorna", "primary", "transcript", @@ -8081,7 +8273,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "small", "nucleolar", "mrna", - "0000275", + "so:0000275", ], "id": "http://purl.obolibrary.org/obo/SO_0000232", "lbl": "snoRNA_primary_transcript", @@ -8109,14 +8301,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000586", "tmrna", "primary", "transcript", - "encoding", - "0000584", "10sa", "rna", "ssra", + "encoding", + "so:0000584", ], "id": "http://purl.obolibrary.org/obo/SO_0000586", "lbl": "tmRNA_primary_transcript", @@ -8152,6 +8345,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000589", "srp", "rna", "primary", @@ -8187,15 +8381,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000647", "mirna", "primary", "transcript", - "encoding", "micro", "rna", "small", "temporal", "strna", + "encoding", ], "id": "http://purl.obolibrary.org/obo/SO_0000647", "lbl": "miRNA_primary_transcript", @@ -8243,6 +8438,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001801", "tasirna", "primary", "transcript", @@ -8282,6 +8478,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002035", "lncrna", "primary", "transcript", @@ -8321,6 +8518,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002038", "shrna", "primary", "transcript", @@ -8360,6 +8558,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002040", "vaultrna", "primary", "transcript", @@ -8399,6 +8598,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002042", "y", "rna", "primary", @@ -8439,6 +8639,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000108", "mrna", "frameshift", "frameshifted", @@ -8473,6 +8674,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000734", "exemplar", "mrna", "representative", @@ -8519,6 +8721,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000862", "capped", "mrna", ], @@ -8548,6 +8751,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000871", "polyadenylated", "mrna", ], @@ -8577,6 +8781,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000995", "consensus", "mrna", ], @@ -8603,17 +8808,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002130", "nsd", "transcript", + "non", + "stop", + "decay", "contains", "cds", - "stop", "codon", "polya", "site", "reached", - "non", - "decay", ], "id": "http://purl.obolibrary.org/obo/SO_0002130", "lbl": "NSD_transcript", @@ -8649,6 +8855,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:1001261", "recoded", "mrna", "sequence", @@ -8688,19 +8895,19 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000013", "scrna", + "insdc", + "feature:ncrna", + "qualifier:scrna", "small", + "cytoplasmic", + "rna", "non", "coding", - "rna", "sequence", "present", "cytoplasm", - "insdc", - "feature", - "ncrna", - "qualifier", - "cytoplasmic", ], "id": "http://purl.obolibrary.org/obo/SO_0000013", "lbl": "scRNA", @@ -8739,8 +8946,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000252", "rrna", + "insdc", + "qualifier:unknown", + "feature:rrna", + "ribosomal", "rna", + "ribonucleic", + "acid", "comprises", "part", "ribosome", @@ -8749,13 +8963,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "scaffolding", "catalytic", "activity", - "insdc", - "qualifier", - "unknown", - "feature", - "ribosomal", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000252", "lbl": "rRNA", @@ -8804,9 +9011,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000253", "trna", + "insdc", + "qualifier:unknown", + "feature:trna", "transfer", "rna", + "ribonucleic", + "acid", "molecules", "approximately", "80", @@ -8837,7 +9050,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "regions", "fundamental", "functional", - "importance", + "importance:", "responsible", "specific", "mrna", @@ -8845,7 +9058,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "end", "corresponding", "amino", - "acid", "attached", "aminoacyl", "synthetases", @@ -8853,7 +9065,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "degeneracy", "genetic", "code", - "manners", + "manners:", "one", "particular", "wobble", @@ -8865,11 +9077,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "standard", "3rd", "position", - "insdc", - "qualifier", - "unknown", - "feature", - "ribonucleic", ], "id": "http://purl.obolibrary.org/obo/SO_0000253", "lbl": "tRNA", @@ -8921,7 +9128,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000274", "snrna", + "insdc", + "feature:ncrna", + "qualifier:snrna", "small", "nuclear", "rna", @@ -8931,10 +9142,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "mrna", "splicing", "processing", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000274", "lbl": "snRNA", @@ -8983,7 +9190,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000275", "snorna", + "insdc", + "feature:ncrna", + "qualifier:snorna", "small", "nucleolar", "rna", @@ -9017,10 +9228,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "sequence", "complementary", "targeted", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000275", "lbl": "snoRNA", @@ -9064,6 +9271,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000370", "small", "regulatory", "ncrna", @@ -9122,9 +9330,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000385", "rnase", "mrp", "rna", + "insdc", + "feature:ncrna", + "qualifier:rnase", "molecule", "essential", "catalytic", @@ -9156,10 +9368,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "18s", "8s", "rrnas", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000385", "lbl": "RNase_MRP_RNA", @@ -9198,9 +9406,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000386", "rnase", "p", "rna", + "insdc", + "feature:ncrna", + "qualifier:rnase", "component", "ribonuclease", "ubiquitous", @@ -9270,10 +9482,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "variation", "particularly", "among", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000386", "lbl": "RNase_P_RNA", @@ -9312,18 +9520,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000390", "telomerase", "rna", + "insdc", + "feature:ncrna", + "qualifier:telomerase", "component", "reverse", "transcriptase", "synthesizes", "telomeric", "dna", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000390", "lbl": "telomerase_RNA", @@ -9367,8 +9575,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000404", "vault", "rna", + "insdc", + "feature:ncrna", + "qualifier:vault", "family", "rnas", "found", @@ -9393,10 +9605,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "involved", "drug", "resistance", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000404", "lbl": "vault_RNA", @@ -9440,8 +9648,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000405", "y", "rna", + "insdc", + "feature:ncrna", + "qualifier:y", "rnas", "components", "ro", @@ -9461,6 +9673,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "one", "four", "small", + "rnas:", "hy1", "hy3", "hy4", @@ -9477,10 +9690,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "contains", "additional", "hairpin", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000405", "lbl": "Y_RNA", @@ -9524,23 +9733,23 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000454", "rasirna", - "17", - "28", - "nt", + "insdc", + "feature:ncrna", + "qualifier:rasirna", + "repeat", + "associated", "small", "interfering", "rna", + "17", + "28", + "nt", "derived", "transcripts", "repetitive", "elements", - "insdc", - "feature", - "ncrna", - "qualifier", - "repeat", - "associated", ], "id": "http://purl.obolibrary.org/obo/SO_0000454", "lbl": "rasiRNA", @@ -9584,8 +9793,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000590", "srp", "rna", + "insdc", + "feature:ncrna", + "qualifier:srp", + "7s", "signal", "recognition", "particle", @@ -9602,8 +9816,8 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "consists", "300", "nucleotide", - "7s", "six", + "proteins:", "srps", "72", "68", @@ -9668,10 +9882,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "assembly", "stabilizes", "binding", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000590", "lbl": "SRP_RNA", @@ -9718,8 +9928,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000602", "guide", "rna", + "insdc", + "feature:ncrna", + "qualifier:guide", + "grna", "short", "uridylated", "form", @@ -9731,16 +9946,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "oligo", "u", "tail", - "0000609", + "so:0000609", "stretch", "mature", "edited", "mrna", - "insdc", - "feature", - "ncrna", - "qualifier", - "grna", ], "id": "http://purl.obolibrary.org/obo/SO_0000602", "lbl": "guide_RNA", @@ -9788,8 +9998,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000644", "antisense", "rna", + "insdc", + "feature:ncrna", + "qualifier:antisense", "transcribed", "coding", "rather", @@ -9799,10 +10013,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "therefore", "complementary", "mrna", - "insdc", - "feature", - "ncrna", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000644", "lbl": "antisense_RNA", @@ -9846,6 +10056,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000989", "class", "ii", "rna", @@ -9898,6 +10109,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000990", "class", "rna", "small", @@ -9956,7 +10168,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001800", "tasirna", + "trans", + "acting", + "small", + "interfering", + "rna", "sequence", "21", "nucleotide", @@ -9965,14 +10183,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "polyadenylated", "non", "coding", - "rna", "transcribed", "tas", "gene", - "trans", - "acting", - "small", - "interfering", ], "id": "http://purl.obolibrary.org/obo/SO_0001800", "lbl": "tasiRNA", @@ -10008,7 +10221,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001870", "enhancerrna", + "erna", "short", "ncrna", "transcribed", @@ -10016,7 +10231,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "may", "regulatory", "function", - "erna", ], "id": "http://purl.obolibrary.org/obo/SO_0001870", "lbl": "enhancerRNA", @@ -10053,19 +10267,19 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001877", "lnc", "rna", - "non", - "coding", - "200nucleotides", - "length", "insdc", - "feature", - "ncrna", - "qualifier", + "feature:ncrna", + "qualifier:lncrna", "lncrna", "transcript", "long", + "non", + "coding", + "200nucleotides", + "length", ], "id": "http://purl.obolibrary.org/obo/SO_0001877", "lbl": "lnc_RNA", @@ -10118,6 +10332,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001927", "telomeric", "transcript", "non", @@ -10159,7 +10374,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002022", "prirna", + "primal", "small", "rna", "molecule", @@ -10196,7 +10413,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "degradation", "products", "primary", - "primal", ], "id": "http://purl.obolibrary.org/obo/SO_0002022", "lbl": "priRNA", @@ -10234,10 +10450,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002031", "shrna", "short", "hairpin", "rna", + "small", "transcript", "makes", "tight", @@ -10249,7 +10467,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "expression", "via", "interference", - "small", ], "id": "http://purl.obolibrary.org/obo/SO_0002031", "lbl": "shRNA", @@ -10295,15 +10512,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002095", "scarna", - "ncrna", - "specific", + "small", "cajal", "body", + "specific", + "rna", + "ncrna", "demonstrated", "function", "guide", - "rna", "site", "synthesis", "o", @@ -10319,7 +10538,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "u4", "u5", "spliceosomal", - "small", "nuclear", "rnas", "snrnas", @@ -10368,10 +10586,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002120", "three", "prime", "overlapping", "ncrna", + "3prime", + "noncoding", + "rna", "transcript", "ditag", "digital", @@ -10390,9 +10612,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcripts", "transcribed", "utr", - "3prime", - "noncoding", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002120", "lbl": "three_prime_overlapping_ncrna", @@ -10439,6 +10658,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0005843", "rrna", "cleavage", "rna", @@ -10480,6 +10700,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002116", "polymorphic", "pseudogene", "processed", @@ -10531,6 +10752,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000614", "bacterial", "terminator", "signal", @@ -10562,6 +10784,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000951", "eukaryotic", "terminator", ], @@ -10585,6 +10808,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002045", "pheromone", "response", "element", @@ -10638,7 +10862,9 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000057", "operator", + "segment", "regulatory", "element", "operon", @@ -10649,7 +10875,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "effecting", "translation", "genes", - "segment", ], "id": "http://purl.obolibrary.org/obo/SO_0000057", "lbl": "operator", @@ -10685,6 +10910,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000613", "bacterial", "rnapol", "promoter", @@ -10722,7 +10948,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000167", "promoter", + "insdc", + "feature:regulatory", + "qualifier:promoter", + "sequence", "regulatory", "region", "composed", @@ -10734,10 +10965,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "basal", "transcription", "machinery", - "insdc", - "feature", - "qualifier", - "sequence", ], "id": "http://purl.obolibrary.org/obo/SO_0000167", "lbl": "promoter", @@ -10784,7 +11011,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000627", "insulator", + "insdc", + "feature:regulatory", + "qualifier:insulator", + "element", "regulatory", "region", "located", @@ -10799,15 +11031,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "acts", "chromatin", "boundary", - "element", "barrier", "block", "encroachment", "condensed", "adjacent", - "insdc", - "feature", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000627", "lbl": "insulator", @@ -10853,11 +11081,15 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000727", "crm", + "tf", + "module", + "cis", "regulatory", - "region", "transcription", "factor", + "region", "binding", "sites", "clustered", @@ -10897,9 +11129,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "large", "intertwined", "network", - "tf", - "module", - "cis", ], "id": "http://purl.obolibrary.org/obo/SO_0000727", "lbl": "CRM", @@ -10942,6 +11171,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001058", "promoter", "targeting", "sequence", @@ -10983,24 +11213,26 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001715", "isre", + "interferon", + "stimulated", + "response", + "element", "transcriptional", "cis", "regulatory", "region", "containing", "consensus", + "region:", "yagtttc", "ytttycc", "responsible", "increased", "transcription", "via", - "interferon", "binding", - "stimulated", - "response", - "element", ], "id": "http://purl.obolibrary.org/obo/SO_0001715", "lbl": "ISRE", @@ -11039,6 +11271,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001952", "promoter", "flanking", "region", @@ -11085,6 +11318,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000344", "splice", "enhancer", "region", @@ -11121,10 +11355,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002118", "nmd", "polymorphic", "pseudogene", "transcript", + "nonsense", + "mediated", + "decay", "contains", "cds", "one", @@ -11147,9 +11385,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "coding", "pseudogenic", "alleles", - "nonsense", - "mediated", - "decay", ], "id": "http://purl.obolibrary.org/obo/SO_0002118", "lbl": "NMD_polymorphic_pseudogene_transcript", @@ -11192,6 +11427,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000255", "rrna", "small", "subunit", @@ -11227,15 +11463,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000325", "rrna", "large", "subunit", "primary", "transcript", + "35s", "encoding", "ribosomal", "rna", - "35s", ], "id": "http://purl.obolibrary.org/obo/SO_0000325", "lbl": "rRNA_large_subunit_primary_transcript", @@ -11270,6 +11507,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000211", "alanine", "trna", "primary", @@ -11303,13 +11541,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000212", "arginine", "trna", "primary", "transcript", "encoding", "arginyl", - "0000255", + "so:0000255", ], "id": "http://purl.obolibrary.org/obo/SO_0000212", "lbl": "arginine_tRNA_primary_transcript", @@ -11337,13 +11576,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000213", "asparagine", "trna", "primary", "transcript", "encoding", "asparaginyl", - "0000256", + "so:0000256", ], "id": "http://purl.obolibrary.org/obo/SO_0000213", "lbl": "asparagine_tRNA_primary_transcript", @@ -11371,6 +11611,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000214", "aspartic", "acid", "trna", @@ -11378,7 +11619,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcript", "encoding", "aspartyl", - "0000257", + "so:0000257", ], "id": "http://purl.obolibrary.org/obo/SO_0000214", "lbl": "aspartic_acid_tRNA_primary_transcript", @@ -11406,13 +11647,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000215", "cysteine", "trna", "primary", "transcript", "encoding", "cysteinyl", - "0000258", + "so:0000258", ], "id": "http://purl.obolibrary.org/obo/SO_0000215", "lbl": "cysteine_tRNA_primary_transcript", @@ -11440,6 +11682,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000216", "glutamic", "acid", "trna", @@ -11447,7 +11690,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "transcript", "encoding", "glutaminyl", - "0000260", + "so:0000260", ], "id": "http://purl.obolibrary.org/obo/SO_0000216", "lbl": "glutamic_acid_tRNA_primary_transcript", @@ -11475,13 +11718,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000217", "glutamine", "trna", "primary", "transcript", "encoding", "glutamyl", - "0000260", + "so:0000260", ], "id": "http://purl.obolibrary.org/obo/SO_0000217", "lbl": "glutamine_tRNA_primary_transcript", @@ -11509,13 +11753,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000218", "glycine", "trna", "primary", "transcript", "encoding", "glycyl", - "0000263", + "so:0000263", ], "id": "http://purl.obolibrary.org/obo/SO_0000218", "lbl": "glycine_tRNA_primary_transcript", @@ -11543,13 +11788,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000219", "histidine", "trna", "primary", "transcript", "encoding", "histidyl", - "0000262", + "so:0000262", ], "id": "http://purl.obolibrary.org/obo/SO_0000219", "lbl": "histidine_tRNA_primary_transcript", @@ -11577,13 +11823,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000220", "isoleucine", "trna", "primary", "transcript", "encoding", "isoleucyl", - "0000263", + "so:0000263", ], "id": "http://purl.obolibrary.org/obo/SO_0000220", "lbl": "isoleucine_tRNA_primary_transcript", @@ -11611,13 +11858,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000221", "leucine", "trna", "primary", "transcript", "encoding", "leucyl", - "0000264", + "so:0000264", ], "id": "http://purl.obolibrary.org/obo/SO_0000221", "lbl": "leucine_tRNA_primary_transcript", @@ -11645,13 +11893,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000222", "lysine", "trna", "primary", "transcript", "encoding", "lysyl", - "0000265", + "so:0000265", ], "id": "http://purl.obolibrary.org/obo/SO_0000222", "lbl": "lysine_tRNA_primary_transcript", @@ -11679,13 +11928,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000223", "methionine", "trna", "primary", "transcript", "encoding", "methionyl", - "0000266", + "so:0000266", ], "id": "http://purl.obolibrary.org/obo/SO_0000223", "lbl": "methionine_tRNA_primary_transcript", @@ -11713,13 +11963,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000224", "phenylalanine", "trna", "primary", "transcript", "encoding", "phenylalanyl", - "0000267", + "so:0000267", ], "id": "http://purl.obolibrary.org/obo/SO_0000224", "lbl": "phenylalanine_tRNA_primary_transcript", @@ -11747,13 +11998,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000225", "proline", "trna", "primary", "transcript", "encoding", "prolyl", - "0000268", + "so:0000268", ], "id": "http://purl.obolibrary.org/obo/SO_0000225", "lbl": "proline_tRNA_primary_transcript", @@ -11781,13 +12033,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000226", "serine", "trna", "primary", "transcript", "encoding", "seryl", - "000269", + "so:000269", ], "id": "http://purl.obolibrary.org/obo/SO_0000226", "lbl": "serine_tRNA_primary_transcript", @@ -11815,13 +12068,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000227", "threonine", "trna", "primary", "transcript", "encoding", "threonyl", - "000270", + "so:000270", ], "id": "http://purl.obolibrary.org/obo/SO_0000227", "lbl": "threonine_tRNA_primary_transcript", @@ -11849,13 +12103,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000228", "tryptophan", "trna", "primary", "transcript", "encoding", "tryptophanyl", - "000271", + "so:000271", ], "id": "http://purl.obolibrary.org/obo/SO_0000228", "lbl": "tryptophan_tRNA_primary_transcript", @@ -11883,13 +12138,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000229", "tyrosine", "trna", "primary", "transcript", "encoding", "tyrosyl", - "000272", + "so:000272", ], "id": "http://purl.obolibrary.org/obo/SO_0000229", "lbl": "tyrosine_tRNA_primary_transcript", @@ -11917,13 +12173,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000230", "valine", "trna", "primary", "transcript", "encoding", "valyl", - "000273", + "so:000273", ], "id": "http://purl.obolibrary.org/obo/SO_0000230", "lbl": "valine_tRNA_primary_transcript", @@ -11951,13 +12208,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001178", "pyrrolysine", "trna", "primary", "transcript", "encoding", "pyrrolysyl", - "0000766", + "so:0000766", ], "id": "http://purl.obolibrary.org/obo/SO_0001178", "lbl": "pyrrolysine_tRNA_primary_transcript", @@ -11985,6 +12243,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002037", "mir", "encoding", "trna", @@ -12034,13 +12293,14 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0005856", "selenocysteine", "trna", "primary", "transcript", "encoding", "seryl", - "000269", + "so:000269", ], "id": "http://purl.obolibrary.org/obo/SO_0005856", "lbl": "selenocysteine_tRNA_primary_transcript", @@ -12068,6 +12328,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000580", "methylation", "guide", "snorna", @@ -12104,6 +12365,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000582", "rrna", "cleavage", "snorna", @@ -12137,6 +12399,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000595", "c", "d", "box", @@ -12175,6 +12438,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000596", "h", "aca", "box", @@ -12213,6 +12477,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002034", "mir", "encoding", "snorna", @@ -12262,10 +12527,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0005837", "u14", "snorna", "primary", "transcript", + "5s", + "snrna", "evolutionarily", "conserved", "eukaryotic", @@ -12280,8 +12548,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "heterologous", "18s", "rrna", - "5s", - "snrna", ], "id": "http://purl.obolibrary.org/obo/SO_0005837", "lbl": "U14_snoRNA_primary_transcript", @@ -12313,6 +12579,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002036", "mir", "encoding", "lncrna", @@ -12362,6 +12629,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002113", "lncrna", "retained", "intron", @@ -12409,6 +12677,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002039", "mir", "encoding", "shrna", @@ -12458,6 +12727,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002041", "mir", "encoding", "vaultrna", @@ -12507,6 +12777,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002043", "mir", "encoding", "y", @@ -12557,6 +12828,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000282", "mrna", "minus", "frameshift", @@ -12587,6 +12859,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000321", "mrna", "plus", "frameshift", @@ -12617,6 +12890,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000329", "mrna", "plus", "frameshift", @@ -12647,6 +12921,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000335", "mrna", "minus", "frameshift", @@ -12677,6 +12952,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:1001264", "mrna", "recoded", "translational", @@ -12716,6 +12992,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:1001265", "mrna", "recoded", "codon", @@ -12750,15 +13027,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000650", "small", "subunit", "rrna", - "ribosomal", + "ssu", "rna", + "ribosomal", "transcript", "structures", "ribosome", - "ssu", ], "id": "http://purl.obolibrary.org/obo/SO_0000650", "lbl": "small_subunit_rRNA", @@ -12803,15 +13081,16 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000651", "large", "subunit", "rrna", - "ribosomal", + "lsu", "rna", + "ribosomal", "transcript", "structures", "ribosome", - "lsu", ], "id": "http://purl.obolibrary.org/obo/SO_0000651", "lbl": "large_subunit_rRNA", @@ -12856,6 +13135,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002128", "mt", "rrna", "mitochondrial", @@ -12900,17 +13180,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000254", "alanyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "alanine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000254", "lbl": "alanyl_tRNA", @@ -12946,17 +13227,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000256", "asparaginyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "asparagine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000256", "lbl": "asparaginyl_tRNA", @@ -12992,17 +13274,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000257", "aspartyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "aspartic", - "acid", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", ], "id": "http://purl.obolibrary.org/obo/SO_0000257", "lbl": "aspartyl_tRNA", @@ -13038,17 +13321,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000258", "cysteinyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "cysteine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000258", "lbl": "cysteinyl_tRNA", @@ -13084,17 +13368,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000259", "glutaminyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "glutamine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000259", "lbl": "glutaminyl_tRNA", @@ -13130,17 +13415,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000260", "glutamyl", "trna", + "transfer", + "ribonucleic", + "acid", + "rna", "sequence", "glutamic", - "acid", "anticodon", "binding", "region", - "transfer", - "ribonucleic", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000260", "lbl": "glutamyl_tRNA", @@ -13176,17 +13462,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000261", "glycyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "glycine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000261", "lbl": "glycyl_tRNA", @@ -13222,17 +13509,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000262", "histidyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "histidine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000262", "lbl": "histidyl_tRNA", @@ -13268,17 +13556,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000263", "isoleucyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "isoleucine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000263", "lbl": "isoleucyl_tRNA", @@ -13314,17 +13603,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000264", "leucyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "leucine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000264", "lbl": "leucyl_tRNA", @@ -13360,17 +13650,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000265", "lysyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "lysine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000265", "lbl": "lysyl_tRNA", @@ -13406,17 +13697,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000266", "methionyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "methionine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000266", "lbl": "methionyl_tRNA", @@ -13452,17 +13744,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000267", "phenylalanyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "phenylalanine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000267", "lbl": "phenylalanyl_tRNA", @@ -13498,17 +13791,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000268", "prolyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "proline", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000268", "lbl": "prolyl_tRNA", @@ -13544,17 +13838,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000269", "seryl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "serine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000269", "lbl": "seryl_tRNA", @@ -13590,17 +13885,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000270", "threonyl", "trna", + "transfer", + "ribonucleic", + "acid", + "rna", "sequence", "threonine", "anticodon", "binding", "region", - "transfer", - "ribonucleic", - "acid", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000270", "lbl": "threonyl_tRNA", @@ -13636,17 +13932,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000271", "tryptophanyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "tryptophan", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000271", "lbl": "tryptophanyl_tRNA", @@ -13682,17 +13979,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000272", "tyrosyl", "trna", + "transfer", + "ribonucleic", + "acid", + "rna", "sequence", "tyrosine", "anticodon", "binding", "region", - "transfer", - "ribonucleic", - "acid", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000272", "lbl": "tyrosyl_tRNA", @@ -13728,17 +14026,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000273", "valyl", "trna", + "transfer", + "ribonucleic", + "acid", + "rna", "sequence", "valine", "anticodon", "binding", "region", - "transfer", - "ribonucleic", - "acid", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000273", "lbl": "valyl_tRNA", @@ -13774,17 +14073,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000766", "pyrrolysyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "pyrrolysine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0000766", "lbl": "pyrrolysyl_tRNA", @@ -13820,6 +14120,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001036", "arginyl", "trna", "sequence", @@ -13854,6 +14155,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002129", "mt", "trna", "mitochondrial", @@ -13898,17 +14200,18 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0005857", "selenocysteinyl", "trna", + "transfer", + "rna", + "ribonucleic", + "acid", "sequence", "selenocysteine", "anticodon", "binding", "region", - "transfer", - "rna", - "ribonucleic", - "acid", ], "id": "http://purl.obolibrary.org/obo/SO_0005857", "lbl": "selenocysteinyl_tRNA", @@ -13944,6 +14247,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000391", "u1", "snrna", "small", @@ -14052,6 +14356,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000392", "u2", "snrna", "small", @@ -14147,6 +14452,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000393", "u4", "snrna", "small", @@ -14234,8 +14540,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000394", "u4atac", "snrna", + "small", + "nuclear", + "rna", "required", "splicing", "minor", @@ -14243,16 +14553,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "dependent", "class", "eukaryotic", - "nuclear", "introns", "forms", "base", "paired", "complex", "u6atac", - "0000397", - "small", - "rna", + "so:0000397", ], "id": "http://purl.obolibrary.org/obo/SO_0000394", "lbl": "U4atac_snRNA", @@ -14304,8 +14611,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000395", "u5", "snrna", + "small", + "nuclear", "rna", "component", "types", @@ -14329,8 +14639,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "protein", "cap", "methylation", - "small", - "nuclear", ], "id": "http://purl.obolibrary.org/obo/SO_0000395", "lbl": "U5_snRNA", @@ -14387,8 +14695,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000396", "u6", "snrna", + "small", + "nuclear", + "rna", "component", "spliceosome", "involved", @@ -14411,9 +14723,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pair", "interactions", "u4", - "small", - "nuclear", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000396", "lbl": "U6_snRNA", @@ -14470,8 +14779,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000397", "u6atac", "snrna", + "small", + "nuclear", + "rna", "required", "splicing", "minor", @@ -14479,16 +14792,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "dependent", "class", "eukaryotic", - "nuclear", "introns", "forms", "base", "paired", "complex", "u4atac", - "0000394", - "small", - "rna", + "so:0000394", ], "id": "http://purl.obolibrary.org/obo/SO_0000397", "lbl": "U6atac_snRNA", @@ -14536,8 +14846,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000398", "u11", "snrna", + "small", + "nuclear", + "rna", "plays", "role", "splicing", @@ -14546,7 +14860,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "dependent", "class", "eukaryotic", - "nuclear", "introns", "similar", "u1", @@ -14558,8 +14871,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "splice", "site", "sequence", - "small", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000398", "lbl": "U11_snRNA", @@ -14616,10 +14927,12 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000399", "u12", "snrna", "small", "nuclear", + "rna", "together", "u4atac", "u6atac", @@ -14638,7 +14951,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "pre", "mrna", "introns", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000399", "lbl": "U12_snRNA", @@ -14695,6 +15007,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000593", "c", "d", "box", @@ -14782,6 +15095,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000594", "h", "aca", "box", @@ -14862,11 +15176,19 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000276", "mirna", + "insdc", + "feature:ncrna", + "qualifier:mirna", + "micro", + "rna", + "microrna", "small", + "temporal", + "strna", "22", "nt", - "rna", "molecule", "endogenous", "transcript", @@ -14875,12 +15197,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "non", "coding", "genes", - "micro", "rnas", "produced", "precursor", "molecules", - "0000647", + "so:0000647", "form", "local", "hairpin", @@ -14902,13 +15223,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "act", "translational", "repressors", - "insdc", - "feature", - "ncrna", - "qualifier", - "microrna", - "temporal", - "strna", ], "id": "http://purl.obolibrary.org/obo/SO_0000276", "lbl": "miRNA", @@ -14972,6 +15286,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000376", "rna", "6s", "small", @@ -15031,6 +15346,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000377", "csrb", "rsmb", "rna", @@ -15105,6 +15421,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000378", "dsra", "rna", "regulates", @@ -15127,7 +15444,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "two", "activities", "separated", - "mutation", + "mutation:", "first", "three", "stem", @@ -15197,6 +15514,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000384", "oxys", "rna", "small", @@ -15264,6 +15582,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000387", "rpra", "rna", "translational", @@ -15297,8 +15616,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "nucleotide", "regulatory", "dsra", - "rfam", - "rf00014", + "rfam:rf00014", "predicted", "form", "three", @@ -15352,6 +15670,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000388", "rre", "rna", "rev", @@ -15407,6 +15726,7 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000389", "spot", "42", "rna", @@ -15457,7 +15777,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000584", "tmrna", + "insdc", + "feature:tmrna", + "10sa", + "rna", + "ssra", "liberates", "mrna", "stalled", @@ -15499,11 +15825,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "eukaryote", "nuclear", "genomes", - "insdc", - "feature", - "10sa", - "rna", - "ssra", ], "id": "http://purl.obolibrary.org/obo/SO_0000584", "lbl": "tmRNA", @@ -15544,8 +15865,13 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0000646", "sirna", + "insdc", + "feature:ncrna", + "qualifier:sirna", "small", + "interfering", "rna", "molecule", "product", @@ -15571,11 +15897,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "cleavage", "target", "molecules", - "insdc", - "feature", - "ncrna", - "qualifier", - "interfering", ], "id": "http://purl.obolibrary.org/obo/SO_0000646", "lbl": "siRNA", @@ -15619,11 +15940,17 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0001035", "pirna", + "insdc", + "feature:ncrna", + "qualifier:pirna", + "piwi", + "associated", + "rna", "small", "non", "coding", - "rna", "part", "silencing", "system", @@ -15632,12 +15959,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "selfish", "genetic", "elements", - "insdc", - "feature", - "ncrna", - "qualifier", - "piwi", - "associated", ], "id": "http://purl.obolibrary.org/obo/SO_0001035", "lbl": "piRNA", @@ -15678,7 +15999,11 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` }, { "fullTextWords": [ + "so:0002032", "mor", + "microrna", + "offset", + "rna", "non", "coding", "transcript", @@ -15692,9 +16017,6 @@ exports[`OntologyStore can query SO gene terms and parts of genes 2`] = ` "loop", "precursor", "mirna", - "microrna", - "offset", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002032", "lbl": "moR", @@ -15734,19 +16056,20 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002033", "lor", + "loop", + "origin", + "mirs", "short", "non", "coding", "transcript", - "loop", "derived", "sequences", "encoded", "precursor", "mirna", - "origin", - "mirs", ], "id": "http://purl.obolibrary.org/obo/SO_0002033", "lbl": "loR", @@ -15786,6 +16109,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000383", "micf", "rna", "non", @@ -15836,12 +16160,15 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001463", "lincrna", - "long", + "large", "intervening", "non", "coding", "rna", + "long", + "intergenic", "transcript", "overlap", "within", @@ -15853,8 +16180,6 @@ Requested by Thomas Desvignes, Jan 2015.", "pseudogene", "either", "strand", - "large", - "intergenic", ], "id": "http://purl.obolibrary.org/obo/SO_0001463", "lbl": "lincRNA", @@ -15893,8 +16218,11 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001904", "antisense", "lncrna", + "natural", + "transcript", "non", "coding", "rna", @@ -15907,8 +16235,6 @@ Requested by Thomas Desvignes, Jan 2015.", "overlap", "part", "sense", - "natural", - "transcript", ], "id": "http://purl.obolibrary.org/obo/SO_0001904", "lbl": "antisense_lncRNA", @@ -15948,12 +16274,15 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002131", "sense", "intronic", "ncrna", - "long", + "lncrna", "non", "coding", + "rna", + "long", "transcript", "found", "within", @@ -15962,8 +16291,6 @@ Requested by Thomas Desvignes, Jan 2015.", "overlap", "exonic", "sequence", - "lncrna", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0002131", "lbl": "sense_intronic_ncRNA", @@ -16015,9 +16342,12 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002132", "sense", "overlap", "ncrna", + "lncrna", + "overlapping", "long", "non", "coding", @@ -16030,8 +16360,6 @@ Requested by Thomas Desvignes, Jan 2015.", "sequence", "strand", "exonic", - "lncrna", - "overlapping", ], "id": "http://purl.obolibrary.org/obo/SO_0002132", "lbl": "sense_overlap_ncRNA", @@ -16075,10 +16403,14 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001923", "terra", + "telomeric", + "repeat", + "containing", + "rna", "non", "coding", - "rna", "transcript", "derived", "transcription", @@ -16087,7 +16419,6 @@ Requested by Thomas Desvignes, Jan 2015.", "contain", "g", "rich", - "telomeric", "repeats", "tracts", "corresponding", @@ -16098,8 +16429,6 @@ Requested by Thomas Desvignes, Jan 2015.", "9000", "bases", "long", - "repeat", - "containing", ], "id": "http://purl.obolibrary.org/obo/SO_0001923", "lbl": "TERRA", @@ -16138,6 +16467,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001924", "arret", "non", "coding", @@ -16181,6 +16511,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001925", "aria", "non", "coding", @@ -16226,6 +16557,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001926", "anti", "arret", "non", @@ -16275,6 +16607,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000981", "rho", "dependent", "bacterial", @@ -16300,6 +16633,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000982", "rho", "independent", "bacterial", @@ -16325,6 +16659,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000615", "terminator", "type", "rnapol", @@ -16361,6 +16696,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001671", "bacterial", "rnapol", "promoter", @@ -16397,6 +16733,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001672", "bacterial", "rnapol", "promoter", @@ -16432,6 +16769,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001913", "bacterial", "rnapol", "promoter", @@ -16495,6 +16833,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000568", "bidirectional", "promoter", "unregulated", @@ -16528,6 +16867,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001203", "rna", "polymerase", "promoter", @@ -16563,6 +16903,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002050", "constitutive", "promoter", "allows", @@ -16604,6 +16945,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002051", "inducible", "promoter", "whereby", @@ -16649,8 +16991,10 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002020", "boundary", "element", + "insulator", "elements", "dna", "motifs", @@ -16660,7 +17004,6 @@ Requested by Thomas Desvignes, Jan 2015.", "neighboring", "euchromatic", "regions", - "insulator", ], "id": "http://purl.obolibrary.org/obo/SO_0002020", "lbl": "boundary_element", @@ -16703,9 +17046,14 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002190", "enhancer", "blocking", "element", + "insdc", + "feature:regulatory", + "qualifier:enhancer", + "insulator", "transcriptional", "cis", "regulatory", @@ -16718,14 +17066,10 @@ Requested by Thomas Desvignes, Jan 2015.", "expression", "sometimes", "referred", - "insulator", "may", "include", "barrier", "function", - "insdc", - "feature", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0002190", "lbl": "enhancer_blocking_element", @@ -16776,9 +17120,15 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000037", "locus", "control", "region", + "insdc", + "feature:regulatory", + "qualifier:locus", + "lcr", + "element", "dna", "includes", "dnase", @@ -16795,12 +17145,6 @@ Requested by Thomas Desvignes, Jan 2015.", "number", "dependent", "expression", - "insdc", - "feature", - "regulatory", - "qualifier", - "lcr", - "element", ], "id": "http://purl.obolibrary.org/obo/SO_0000037", "lbl": "locus_control_region", @@ -16849,7 +17193,11 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000165", "enhancer", + "insdc", + "feature:regulatory", + "qualifier:enhancer", "cis", "acting", "sequence", @@ -16865,10 +17213,6 @@ Requested by Thomas Desvignes, Jan 2015.", "downstream", "relative", "promoter", - "insdc", - "feature", - "regulatory", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000165", "lbl": "enhancer", @@ -16911,7 +17255,11 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000625", "silencer", + "insdc", + "feature:regulatory", + "qualifier:silencer", "regulatory", "region", "upon", @@ -16922,9 +17270,6 @@ Requested by Thomas Desvignes, Jan 2015.", "gene", "genes", "control", - "insdc", - "feature", - "qualifier", ], "id": "http://purl.obolibrary.org/obo/SO_0000625", "lbl": "silencer", @@ -16964,6 +17309,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000320", "intronic", "splice", "enhancer", @@ -17001,6 +17347,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000683", "exonic", "splice", "enhancer", @@ -17042,8 +17389,11 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000407", "rrna", "18s", + "ribosomal", + "rna", "large", "polynucleotide", "eukaryotes", @@ -17051,8 +17401,6 @@ Requested by Thomas Desvignes, Jan 2015.", "small", "subunit", "ribosome", - "ribosomal", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000407", "lbl": "rRNA_18S", @@ -17096,8 +17444,12 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001000", "rrna", "16s", + "ssu", + "rna", + "ribosomal", "large", "polynucleotide", "bacteria", @@ -17106,9 +17458,6 @@ Requested by Thomas Desvignes, Jan 2015.", "small", "subunit", "ribosome", - "ssu", - "rna", - "ribosomal", ], "id": "http://purl.obolibrary.org/obo/SO_0001000", "lbl": "rRNA_16S", @@ -17156,8 +17505,10 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000375", "rrna", "8s", + "lsu", "ribosomal", "rna", "component", @@ -17189,7 +17540,6 @@ Requested by Thomas Desvignes, Jan 2015.", "protein", "found", "archaea", - "lsu", ], "id": "http://purl.obolibrary.org/obo/SO_0000375", "lbl": "rRNA_5_8S", @@ -17237,8 +17587,10 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000652", "rrna", "5s", + "lsu", "ribosomal", "rna", "component", @@ -17274,7 +17626,6 @@ Requested by Thomas Desvignes, Jan 2015.", "also", "stabilizes", "required", - "lsu", ], "id": "http://purl.obolibrary.org/obo/SO_0000652", "lbl": "rRNA_5S", @@ -17322,14 +17673,15 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000653", "rrna", "28s", + "lsu", + "ribosomal", + "rna", "component", "large", - "ribosomal", "subunit", - "lsu", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0000653", "lbl": "rRNA_28S", @@ -17377,8 +17729,12 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001001", "rrna", "23s", + "lsu", + "ribosomal", + "rna", "large", "polynucleotide", "bacteria", @@ -17386,9 +17742,6 @@ Requested by Thomas Desvignes, Jan 2015.", "functions", "subunit", "ribosome", - "lsu", - "ribosomal", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001001", "lbl": "rRNA_23S", @@ -17431,8 +17784,12 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001002", "rrna", "25s", + "lsu", + "ribosomal", + "rna", "large", "polynucleotide", "functions", @@ -17440,9 +17797,6 @@ Requested by Thomas Desvignes, Jan 2015.", "subunit", "ribosome", "eukaryotes", - "lsu", - "ribosomal", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001002", "lbl": "rRNA_25S", @@ -17485,15 +17839,16 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001171", "rrna", "21s", + "lsu", + "ribosomal", + "rna", "component", "large", - "ribosomal", "subunit", "mitochondrial", - "lsu", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001171", "lbl": "rRNA_21S", @@ -17533,6 +17888,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000403", "u14", "snorna", "small", @@ -17614,15 +17970,17 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001179", "u3", "snorna", + "small", + "nucleolar", + "rna", "member", "box", "c", "d", "class", - "small", - "nucleolar", "rnas", "secondary", "structure", @@ -17668,7 +18026,6 @@ Requested by Thomas Desvignes, Jan 2015.", "interactions", "processing", "functions", - "rna", ], "id": "http://purl.obolibrary.org/obo/SO_0001179", "lbl": "U3_snoRNA", @@ -17716,6 +18073,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0005841", "methylation", "guide", "snorna", @@ -17763,6 +18121,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001187", "pseudouridylation", "guide", "snorna", @@ -17808,6 +18167,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002166", "ref", "mirna", "refseq", @@ -17876,6 +18236,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002167", "isomir", "isomirs", "bona", @@ -17920,6 +18281,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000379", "gcvb", "rna", "small", @@ -17964,17 +18326,18 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000169", "rnapol", "promoter", + "rna", + "polymerase", + "pol", "dna", "sequence", "eukaryotic", - "rna", - "polymerase", "binds", "begin", "transcription", - "pol", ], "id": "http://purl.obolibrary.org/obo/SO_0000169", "lbl": "RNApol_I_promoter", @@ -18014,19 +18377,20 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000170", "rnapol", "ii", "promoter", + "rna", + "polymerase", + "b", + "pol", "dna", "sequence", "eukaryotic", - "rna", - "polymerase", "binds", "begin", "transcription", - "b", - "pol", ], "id": "http://purl.obolibrary.org/obo/SO_0000170", "lbl": "RNApol_II_promoter", @@ -18066,19 +18430,20 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000171", "rnapol", "iii", "promoter", + "rna", + "polymerase", + "c", + "pol", "dna", "sequence", "eukaryotic", - "rna", - "polymerase", "binds", "begin", "transcription", - "c", - "pol", ], "id": "http://purl.obolibrary.org/obo/SO_0000171", "lbl": "RNApol_III_promoter", @@ -18118,6 +18483,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001204", "phage", "rna", "polymerase", @@ -18155,6 +18521,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000166", "enhancer", "bound", "factor", @@ -18185,6 +18552,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001482", "shadow", "enhancer", ], @@ -18216,9 +18584,11 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002056", "intronic", "splicing", "silencer", + "iss", "regulatory", "element", "functions", @@ -18231,7 +18601,6 @@ Requested by Thomas Desvignes, Jan 2015.", "gene", "genes", "control", - "iss", ], "id": "http://purl.obolibrary.org/obo/SO_0002056", "lbl": "intronic_splicing_silencer", @@ -18275,9 +18644,11 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0002058", "exonic", "splicing", "silencer", + "ess", "regulatory", "element", "functions", @@ -18290,7 +18661,6 @@ Requested by Thomas Desvignes, Jan 2015.", "gene", "genes", "control", - "ess", ], "id": "http://purl.obolibrary.org/obo/SO_0002058", "lbl": "exonic_splicing_silencer", @@ -18334,6 +18704,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001669", "rnapol", "ii", "core", @@ -18383,6 +18754,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000617", "rnapol", "iii", "promoter", @@ -18408,6 +18780,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000618", "rnapol", "iii", "promoter", @@ -18438,6 +18811,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0000621", "rnapol", "iii", "promoter", @@ -18463,6 +18837,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001205", "sp6", "rna", "polymerase", @@ -18499,6 +18874,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001206", "t3", "rna", "polymerase", @@ -18535,6 +18911,7 @@ Requested by Thomas Desvignes, Jan 2015.", }, { "fullTextWords": [ + "so:0001207", "t7", "rna", "polymerase", @@ -18576,6 +18953,7 @@ exports[`OntologyStore can query valid part_of for match 1`] = ` [ { "fullTextWords": [ + "so:0000343", "match", "region", "sequence", diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts index 1208f8718..5d28928c6 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts @@ -1,6 +1,11 @@ import { describe, expect, it } from '@jest/globals' -import { elaborateMatch, extractWords, getWords } from './fulltext' +import { + PREFIXED_ID_PATH, + elaborateMatch, + extractWords, + getWords, +} from './fulltext' import { OntologyDBNode } from './indexeddb-schema' const testNode: OntologyDBNode = { @@ -28,6 +33,10 @@ const testNode: OntologyDBNode = { }, } +const prefixes = new Map([ + ['SO:', 'http://purl.obolibrary.org/obo/SO_'], +]) + describe('extractWords', () => { it('can words from the members of objects', () => { const result = extractWords(['bar baz', 'noggin']) @@ -48,11 +57,16 @@ describe('extractWords', () => { describe('getWords', () => { it('can get the words from a test node', () => { - const result = getWords(testNode, [ - '$.lbl', - '$.meta.definition.val', - '$.meta.synonyms[*].val', - ]) + const result = getWords( + testNode, + [ + PREFIXED_ID_PATH, + '$.lbl', + '$.meta.definition.val', + '$.meta.synonyms[*].val', + ], + prefixes, + ) expect([...result]).toMatchSnapshot() }) }) @@ -64,6 +78,23 @@ describe('elaborateMatch', () => { testNode, new Set([1, 2]), ['zonk', 'nucleotide', 'region'], + prefixes, + ) + expect(result.length).toBe(1) + expect(result).toMatchSnapshot() + }) + it('can do another', () => { + const result = elaborateMatch( + [ + PREFIXED_ID_PATH, + '$.lbl', + '$.meta.synonyms[*].val', + '$.meta.definition.val', + ], + testNode, + new Set([0]), + ['SO:0000001'], + prefixes, ) expect(result.length).toBe(1) expect(result).toMatchSnapshot() diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts index d484c0f75..210a557e6 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts @@ -6,12 +6,27 @@ import jsonpath from 'jsonpath' import { stopwords } from './fulltext-stopwords' import { OntologyDBNode } from './indexeddb-schema' +import { applyPrefixes } from './prefixes' import OntologyStore, { Transaction } from '.' +export const PREFIXED_ID_PATH = '$PREFIXED_ID' + +/** small wrapper for jsonpath.query that intercepts requests for the special prefixed ID path */ +function jsonPathQuery( + node: OntologyDBNode, + path: string, + prefixes: Map, +) { + if (path === PREFIXED_ID_PATH) { + return [applyPrefixes(node.id, prefixes)] + } + return jsonpath.query(node, path) +} + function wordsInString(str: string) { return str .toLowerCase() - .split(/[\W_]+/) + .split(/[^A-Za-z0-9:]+/) .filter((word) => word && !stopwords.has(word)) } @@ -44,9 +59,10 @@ export function* extractStrings( export function* getWords( node: OntologyDBNode, jsonPaths: Iterable, + prefixes: Map, ): Generator<[string, string], void, undefined> { for (const path of jsonPaths) { - const queryResult = jsonpath.query(node, path) as unknown[] + const queryResult = jsonPathQuery(node, path, prefixes) as unknown[] if (queryResult.length) { for (const word of extractWords(extractStrings(queryResult))) { yield [path, word] @@ -115,7 +131,13 @@ export async function getTermsByFulltext( for (const [, [term, wordIndexes]] of initialMatches) { checkAbortSignal(signal) results.push( - ...elaborateMatch(this.textIndexPaths, term, wordIndexes, queryWords), + ...elaborateMatch( + this.textIndexPaths, + term, + wordIndexes, + queryWords, + this.prefixes, + ), ) } @@ -134,6 +156,7 @@ export function elaborateMatch( term: OntologyDBNode, queryWordIndexes: Set, queryWords: string[], + prefixes: Map, ): Match[] { const sortedWordIndexes = Array.from(queryWordIndexes).sort() const matchedQueryWords = sortedWordIndexes.map((i) => queryWords[i]) @@ -151,7 +174,9 @@ export function elaborateMatch( let matches: (Match & { wordMatches: WordMatch[] })[] = [] let maxScore = 0 for (const path of textIndexPaths) { - const termStrings = Array.from(extractStrings(jsonpath.query(term, path))) + const termStrings = Array.from( + extractStrings(jsonPathQuery(term, path, prefixes)), + ) // find occurrences of each of the words in the strings for (const str of termStrings) { let score = 0 @@ -170,11 +195,14 @@ export function elaborateMatch( } // sort the word matches by position in the target string ascending wordMatches.sort((a, b) => a.position - b.position) - matches.push({ term, path, str, score, wordMatches }) + if (wordMatches.length) { + matches.push({ term, path, str, score, wordMatches }) + } } } - // keep only the highest-score matches + // Keep only the highest-scored matches. Usually 1, but there + // could be multiple if there is a tie for first place. matches = matches.filter((m) => m.score === maxScore) for (const match of matches) { diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.test.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.test.ts index 4d0dd03ae..5eddfa786 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.test.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.test.ts @@ -4,24 +4,23 @@ import OntologyStore from '.' import { OntologyClass, isOntologyClass } from '..' jest.setTimeout(1000000000) -const so = new OntologyStore('Sequence Ontology', 'automated testing', { - locationType: 'LocalPathLocation', - localPath: 'test_data/so-v3.1.json', -}) -describe('OntologyStore', () => { - it('can load goslim aspergillus', async () => { - const goslimAspergillus = new OntologyStore( - 'GO-slim aspergillus', - 'automated testing', - { - locationType: 'LocalPathLocation', - localPath: 'test_data/goslim_aspergillus.json', - }, - ) +const prefixes = new Map([ + ['SO:', 'http://purl.obolibrary.org/obo/SO_'], + ['GO:', 'http://purl.obolibrary.org/obo/GO_'], +]) - expect(await goslimAspergillus.termCount()).toMatchSnapshot() - }) +const so = new OntologyStore( + 'Sequence Ontology', + 'automated testing', + { + locationType: 'LocalPathLocation', + localPath: 'test_data/so-v3.1.json', + }, + { prefixes }, +) + +describe('OntologyStore', () => { it('can load goslim generic', async () => { const goslimGeneric = new OntologyStore( 'Gene Ontology', @@ -30,6 +29,7 @@ describe('OntologyStore', () => { locationType: 'LocalPathLocation', localPath: 'test_data/goslim_generic.json', }, + { prefixes }, ) expect(await goslimGeneric.termCount()).toMatchSnapshot() diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts index 76b092d1e..f30d3cb9d 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts @@ -62,6 +62,7 @@ async function arrayFromAsync(iter: AsyncIterable) { // } export interface OntologyStoreOptions { + prefixes?: Map textIndexing?: { /** json paths of paths in the nodes to index as full text */ indexPaths?: string[] @@ -85,6 +86,10 @@ export default class OntologyStore { return getTextIndexPaths.call(this) } + get prefixes(): Map { + return this.options.prefixes ?? new Map() + } + readonly DEFAULT_MAX_SEARCH_RESULTS = 100 constructor( diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts index d9a6d837a..2f4f067f2 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts @@ -1,7 +1,7 @@ import { openLocation } from '@jbrowse/core/util/io' import { IDBPDatabase, IDBPTransaction, openDB } from 'idb/with-async-ittr' -import { getWords } from './fulltext' +import { PREFIXED_ID_PATH, getWords } from './fulltext' import { OntologyDB, isOntologyDBEdge, @@ -108,7 +108,9 @@ export async function loadOboGraphJson(this: OntologyStore, db: Database) { if (isOntologyDBNode(node)) { await nodeStore.add({ ...node, - fullTextWords: serializeWords(getWords(node, fullTextIndexPaths)), + fullTextWords: serializeWords( + getWords(node, fullTextIndexPaths, this.prefixes), + ), }) } } @@ -152,13 +154,14 @@ export async function loadOboGraphJson(this: OntologyStore, db: Database) { } export function getTextIndexPaths(this: OntologyStore) { - return ( - this.options.textIndexing?.indexPaths ?? [ + return [ + PREFIXED_ID_PATH, + ...(this.options.textIndexing?.indexPaths ?? [ '$.lbl', '$.meta.synonyms[*].val', '$.meta.definition.val', - ] - ) + ]), + ] } export async function isDatabaseCompletelyLoaded(db: Database) { diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/prefixes.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/prefixes.ts new file mode 100644 index 000000000..ef714a3b9 --- /dev/null +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/prefixes.ts @@ -0,0 +1,35 @@ +/** + * This file contains stuff dealing with IRI prefixes used in ontologies. + * + * ``` + * const prefixes = new Map(['GO:', 'http://long.url/GO_']) + * + * applyPrefixes('http://long.url/GO_1234345') // returns 'GO:1234345' + * + * expandPrefixes('GO:1234345') // returns 'http://long.url/GO_1234345' + * ``` + */ + +/** + * compact the given URI using the given prefixes + */ +export function applyPrefixes(uri: string, prefixes: Map) { + for (const [prefix, uriBase] of prefixes.entries()) { + if (uri.startsWith(uriBase)) { + return uri.replace(uriBase, prefix) + } + } + return uri +} + +/** + * expand the given compacted URI using given prefixes + */ +export function expandPrefixes(uri: string, prefixes: Map) { + for (const [prefix, uriBase] of prefixes.entries()) { + if (uri.startsWith(prefix)) { + return uri.replace(prefix, uriBase) + } + } + return uri +} diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts index 2ac882870..f1440b61d 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts @@ -9,6 +9,7 @@ import { Instance, addDisposer, getSnapshot, types } from 'mobx-state-tree' import OntologyStore, { OntologyStoreOptions } from './OntologyStore' import { OntologyDBNode } from './OntologyStore/indexeddb-schema' +import { applyPrefixes, expandPrefixes } from './OntologyStore/prefixes' export { isDeprecated } from './OntologyStore/indexeddb-schema' @@ -81,24 +82,14 @@ export const OntologyManagerType = types * prefixes */ applyPrefixes(uri: string) { - for (const [prefix, uriBase] of self.prefixes.entries()) { - if (uri.startsWith(uriBase)) { - return uri.replace(uriBase, prefix) - } - } - return uri + return applyPrefixes(uri, self.prefixes) }, /** * expand the given compacted URI using the currently * configured prefixes */ expandPrefixes(uri: string) { - for (const [prefix, uriBase] of self.prefixes.entries()) { - if (uri.startsWith(prefix)) { - return uri.replace(prefix, uriBase) - } - } - return uri + return expandPrefixes(uri, self.prefixes) }, })) .actions((self) => ({ From f71e3ef3de777cd3dc6e15867086563f7cd20863 Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Fri, 4 Aug 2023 22:05:18 +0000 Subject: [PATCH 10/19] reload db if store prefixes or indexing changes --- packages/jbrowse-plugin-apollo/package.json | 1 + .../src/OntologyManager/OntologyStore/index.ts | 5 +++-- .../OntologyStore/indexeddb-schema.ts | 3 ++- .../OntologyStore/indexeddb-storage.ts | 13 +++++++++++-- .../src/OntologyManager/index.ts | 10 ++++------ yarn.lock | 1 + 6 files changed, 22 insertions(+), 11 deletions(-) diff --git a/packages/jbrowse-plugin-apollo/package.json b/packages/jbrowse-plugin-apollo/package.json index 2b5f4b2bd..845b85fb1 100644 --- a/packages/jbrowse-plugin-apollo/package.json +++ b/packages/jbrowse-plugin-apollo/package.json @@ -60,6 +60,7 @@ "autosuggest-highlight": "^3.3.4", "bson-objectid": "^2.0.3", "clsx": "^1.1.1", + "fast-deep-equal": "^3.1.3", "file-saver": "^2.0.5", "http-proxy-middleware": "^2.0.6", "idb": "^7.1.1", diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts index f30d3cb9d..686d601ef 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts @@ -10,7 +10,7 @@ import { getTermsByFulltext } from './fulltext' import { OntologyDB, OntologyDBEdge, isDeprecated } from './indexeddb-schema' import { getTextIndexPaths, - isDatabaseCompletelyLoaded, + isDatabaseCurrent, loadOboGraphJson, openDatabase, } from './indexeddb-storage' @@ -81,6 +81,7 @@ export default class OntologyStore { loadOboGraphJson = loadOboGraphJson getTermsByFulltext = getTermsByFulltext openDatabase = openDatabase + isDatabaseCurrent = isDatabaseCurrent get textIndexPaths() { return getTextIndexPaths.call(this) @@ -162,7 +163,7 @@ export default class OntologyStore { const db = await this.openDatabase(this.dbName) // if database is already completely loaded, just return it - if (await isDatabaseCompletelyLoaded(db)) { + if (await this.isDatabaseCurrent(db)) { return db } diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts index e9a1cf64e..a2a7bda33 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-schema.ts @@ -6,7 +6,7 @@ import { Meta as OboGraphMeta, Node as OboGraphNode, } from './obo-graph-json-schema' -import { SourceLocation } from '.' +import { OntologyStoreOptions, SourceLocation } from '.' /** metadata about this IndexedDB ontology database */ export interface Meta { @@ -16,6 +16,7 @@ export interface Meta { version: string sourceLocation: SourceLocation } + storeOptions: OntologyStoreOptions /** graph metadata in OBO Graph metadata format */ graphMeta?: OboGraphMeta timestamp: string diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts index 2f4f067f2..e2be08c41 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts @@ -1,4 +1,5 @@ import { openLocation } from '@jbrowse/core/util/io' +import equal from 'fast-deep-equal/es6' import { IDBPDatabase, IDBPTransaction, openDB } from 'idb/with-async-ittr' import { PREFIXED_ID_PATH, getWords } from './fulltext' @@ -134,6 +135,7 @@ export async function loadOboGraphJson(this: OntologyStore, db: Database) { version: this.ontologyVersion, sourceLocation: this.sourceLocation, }, + storeOptions: this.options, graphMeta: graph.meta, timestamp: String(new Date()), schemaVersion, @@ -164,9 +166,16 @@ export function getTextIndexPaths(this: OntologyStore) { ] } -export async function isDatabaseCompletelyLoaded(db: Database) { +export async function isDatabaseCurrent(this: OntologyStore, db: Database) { // since metadata is loaded last, we use it as a signal that all the other data // was loaded const [meta] = await db.transaction('meta').objectStore('meta').getAll() - return !!meta + if (!meta) { + return false + } + // check that the index paths and prefixes are the same as our current ones + return ( + equal(this.options.prefixes, meta.storeOptions?.prefixes) && + equal(this.options.textIndexing, meta.storeOptions?.textIndexing) + ) } diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts index f1440b61d..ba6395594 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts @@ -103,7 +103,10 @@ export const OntologyManagerType = types name, version, source, - options: options ?? {}, + options: { + prefixes: new Map(self.prefixes.entries()), + ...(options ?? {}), + }, }) // access it immediately to fire its lifecycle hooks // (see https://github.com/mobxjs/mobx-state-tree/issues/1665) @@ -121,11 +124,6 @@ export const OntologyRecordConfiguration = ConfigurationSchema( description: 'the full name of the ontology, e.g. "Gene Ontology"', defaultValue: 'My Ontology', }, - prefix: { - type: 'string', - description: 'the identifier prefix used for the ontology, e.g. "GO"', - defaultValue: 'MY', - }, version: { type: 'string', description: "the ontology's version string", diff --git a/yarn.lock b/yarn.lock index eae8c60e2..354d316cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12556,6 +12556,7 @@ __metadata: clsx: ^1.1.1 cypress: ^12.17.2 fake-indexeddb: ^4.0.2 + fast-deep-equal: ^3.1.3 file-saver: ^2.0.5 http-proxy-middleware: ^2.0.6 idb: ^7.1.1 From ab062005c91c3046b6acc8821f934bc59bc5a40a Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Fri, 4 Aug 2023 22:13:00 +0000 Subject: [PATCH 11/19] fine match still needs to be case insensitive --- .../src/OntologyManager/OntologyStore/fulltext.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts index 210a557e6..a1465993c 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts @@ -162,7 +162,7 @@ export function elaborateMatch( const matchedQueryWords = sortedWordIndexes.map((i) => queryWords[i]) const queryWordRegexps = matchedQueryWords.map((queryWord) => { const escaped = queryWord.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&') - return RegExp(`\\b${escaped}`, 'g') + return RegExp(`\\b${escaped}`, 'gi') }) // const needle = matchedQueryWords.join(' ') From a1ca24cff9fc549deeb2ee6598c314c01ceb2d4b Mon Sep 17 00:00:00 2001 From: Robert Buels Date: Mon, 7 Aug 2023 23:20:23 +0000 Subject: [PATCH 12/19] add displayName for text indexing fields, show the matching field in ontology multi select --- .../OntologyStore/fulltext.test.ts | 14 +- .../OntologyManager/OntologyStore/fulltext.ts | 27 ++-- .../OntologyManager/OntologyStore/index.ts | 12 +- .../OntologyStore/indexeddb-storage.ts | 15 +- .../src/OntologyManager/index.ts | 20 ++- .../components/OntologyTermMultiSelect.tsx | 147 +++++++++++++----- .../src/session/ClientDataStore.ts | 10 +- 7 files changed, 166 insertions(+), 79 deletions(-) diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts index 5d28928c6..f029dc980 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.test.ts @@ -74,7 +74,11 @@ describe('getWords', () => { describe('elaborateMatch', () => { it('can do one', () => { const result = elaborateMatch( - ['$.lbl', '$.meta.synonyms[*].val', '$.meta.definition.val'], + [ + { displayName: 'label', jsonPath: '$.lbl' }, + { displayName: 'synonym', jsonPath: '$.meta.synonyms[*].val' }, + { displayName: 'definition', jsonPath: '$.meta.definition.val' }, + ], testNode, new Set([1, 2]), ['zonk', 'nucleotide', 'region'], @@ -86,10 +90,10 @@ describe('elaborateMatch', () => { it('can do another', () => { const result = elaborateMatch( [ - PREFIXED_ID_PATH, - '$.lbl', - '$.meta.synonyms[*].val', - '$.meta.definition.val', + { displayName: 'ID', jsonPath: PREFIXED_ID_PATH }, + { displayName: 'label', jsonPath: '$.lbl' }, + { displayName: 'synonym', jsonPath: '$.meta.synonyms[*].val' }, + { displayName: 'definition', jsonPath: '$.meta.definition.val' }, ], testNode, new Set([0]), diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts index a1465993c..7ee8daae3 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/fulltext.ts @@ -8,7 +8,9 @@ import { stopwords } from './fulltext-stopwords' import { OntologyDBNode } from './indexeddb-schema' import { applyPrefixes } from './prefixes' import OntologyStore, { Transaction } from '.' +import { TextIndexFieldDefinition } from '..' +/** special value of jsonPath that gets the IRI (that is, ID) of the node with the configured prefixes applied */ export const PREFIXED_ID_PATH = '$PREFIXED_ID' /** small wrapper for jsonpath.query that intercepts requests for the special prefixed ID path */ @@ -71,18 +73,23 @@ export function* getWords( } } -interface Match { +export interface Match { term: OntologyDBNode - path: string + field: TextIndexFieldDefinition str: string score: number } +export function isMatch(thing: object): thing is Match { + return ( + 'term' in thing && 'field' in thing && 'str' in thing && 'score' in thing + ) +} + /** - * @returns array of terms and a match score, as - * `[score, OntologyTerm][]`, sorted by score descending + * **/ -export async function getTermsByFulltext( +export async function textSearch( this: OntologyStore, text: string, tx?: Transaction<['nodes']>, @@ -132,7 +139,7 @@ export async function getTermsByFulltext( checkAbortSignal(signal) results.push( ...elaborateMatch( - this.textIndexPaths, + this.textIndexFields, term, wordIndexes, queryWords, @@ -152,7 +159,7 @@ export async function getTermsByFulltext( } export function elaborateMatch( - textIndexPaths: string[], + textIndexPaths: TextIndexFieldDefinition[], term: OntologyDBNode, queryWordIndexes: Set, queryWords: string[], @@ -173,9 +180,9 @@ export function elaborateMatch( } let matches: (Match & { wordMatches: WordMatch[] })[] = [] let maxScore = 0 - for (const path of textIndexPaths) { + for (const field of textIndexPaths) { const termStrings = Array.from( - extractStrings(jsonPathQuery(term, path, prefixes)), + extractStrings(jsonPathQuery(term, field.jsonPath, prefixes)), ) // find occurrences of each of the words in the strings for (const str of termStrings) { @@ -196,7 +203,7 @@ export function elaborateMatch( // sort the word matches by position in the target string ascending wordMatches.sort((a, b) => a.position - b.position) if (wordMatches.length) { - matches.push({ term, path, str, score, wordMatches }) + matches.push({ term, field, str, score, wordMatches }) } } } diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts index 686d601ef..1f34b878a 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts @@ -6,10 +6,10 @@ import { } from '@jbrowse/core/util' import { IDBPTransaction, IndexNames, StoreNames } from 'idb/with-async-ittr' -import { getTermsByFulltext } from './fulltext' +import { textSearch } from './fulltext' import { OntologyDB, OntologyDBEdge, isDeprecated } from './indexeddb-schema' import { - getTextIndexPaths, + getTextIndexFields, isDatabaseCurrent, loadOboGraphJson, openDatabase, @@ -65,7 +65,7 @@ export interface OntologyStoreOptions { prefixes?: Map textIndexing?: { /** json paths of paths in the nodes to index as full text */ - indexPaths?: string[] + indexFields?: { displayName: string; jsonPath: string }[] } maxSearchResults?: number } @@ -79,12 +79,12 @@ export default class OntologyStore { options: OntologyStoreOptions loadOboGraphJson = loadOboGraphJson - getTermsByFulltext = getTermsByFulltext + getTermsByFulltext = textSearch openDatabase = openDatabase isDatabaseCurrent = isDatabaseCurrent - get textIndexPaths() { - return getTextIndexPaths.call(this) + get textIndexFields() { + return getTextIndexFields.call(this) } get prefixes(): Map { diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts index e2be08c41..384e115d8 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/indexeddb-storage.ts @@ -10,6 +10,7 @@ import { } from './indexeddb-schema' import { GraphDocument } from './obo-graph-json-schema' import OntologyStore from '.' +import { defaultTextIndexFields } from '..' /** schema version we are currently on, used for the IndexedDB schema open call */ const schemaVersion = 2 @@ -104,7 +105,9 @@ export async function loadOboGraphJson(this: OntologyStore, db: Database) { // load nodes const nodeStore = tx.objectStore('nodes') - const fullTextIndexPaths = getTextIndexPaths.call(this) + const fullTextIndexPaths = getTextIndexFields + .call(this) + .map((def) => def.jsonPath) for (const node of graph.nodes ?? []) { if (isOntologyDBNode(node)) { await nodeStore.add({ @@ -155,14 +158,10 @@ export async function loadOboGraphJson(this: OntologyStore, db: Database) { return } -export function getTextIndexPaths(this: OntologyStore) { +export function getTextIndexFields(this: OntologyStore) { return [ - PREFIXED_ID_PATH, - ...(this.options.textIndexing?.indexPaths ?? [ - '$.lbl', - '$.meta.synonyms[*].val', - '$.meta.definition.val', - ]), + { displayName: 'ID', jsonPath: PREFIXED_ID_PATH }, + ...(this.options.textIndexing?.indexFields ?? defaultTextIndexFields), ] } diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts index ba6395594..96a7234f7 100644 --- a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts +++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts @@ -116,6 +116,18 @@ export const OntologyManagerType = types export default OntologyManagerType +export interface TextIndexFieldDefinition { + /** name to display in the UI for text taken from this field or fields */ + displayName: string + /** JSONPath of the field(s) */ + jsonPath: string +} +export const defaultTextIndexFields: TextIndexFieldDefinition[] = [ + { displayName: 'Label', jsonPath: '$.lbl' }, + { displayName: 'Synonym', jsonPath: '$.meta.synonyms[*].val' }, + { displayName: 'Definition', jsonPath: '$.meta.definition.val' }, +] + export const OntologyRecordConfiguration = ConfigurationSchema( 'OntologyRecord', { @@ -137,15 +149,11 @@ export const OntologyRecordConfiguration = ConfigurationSchema( uri: 'http://example.com/myontology.json', }, }, - textIndexingPaths: { + textIndexFields: { type: 'frozen', description: 'JSON paths for text fields that will be indexed for text searching', - defaultValue: [ - '$.lbl', - '$.meta.synonyms[*].val', - '$.meta.definition.val', - ], + defaultValue: defaultTextIndexFields, }, }, ) diff --git a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx index 51ac6db25..610f41cfb 100644 --- a/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx +++ b/packages/jbrowse-plugin-apollo/src/components/OntologyTermMultiSelect.tsx @@ -20,9 +20,13 @@ import { OntologyTerm, isOntologyClass, } from '../OntologyManager' +import { Match } from '../OntologyManager/OntologyStore/fulltext' import { OntologyDBNode } from '../OntologyManager/OntologyStore/indexeddb-schema' -type TermValue = OntologyTerm +interface TermValue { + term: OntologyTerm + matches?: Match[] +} // interface TermAutocompleteResult extends TermValue { // label: string[] @@ -116,8 +120,8 @@ export function OntologyTermMultiSelect({ .ontologyManager as OntologyManager const ontology = ontologyManager.findOntology(ontologyName, ontologyVersion) - const [value, setValue] = React.useState( - initialValue.map((id) => ({ id, type: 'CLASS' })), + const [value, setValue] = React.useState( + initialValue.map((id) => ({ term: { id, type: 'CLASS' } })), ) const [inputValue, setInputValue] = React.useState('') const [options, setOptions] = React.useState([]) @@ -188,7 +192,25 @@ export function OntologyTermMultiSelect({ undefined, signal, ) - setOptions(matches.map((m) => m.term).filter(isOntologyClass)) + // aggregate the matches by term + const byTerm = new Map>() + const options: Required[] = [] + for (const match of matches) { + if (!isOntologyClass(match.term)) { + continue + } + let slot = byTerm.get(match.term.id) + if (!slot) { + slot = { + term: match.term, + matches: [], + } + byTerm.set(match.term.id, slot) + options.push(slot) + } + slot.matches.push(match) + } + setOptions(options) setLoading(false) })().catch((error) => { if (!isAbortException(error)) { @@ -213,19 +235,19 @@ export function OntologyTermMultiSelect({ return ( option.id} - filterOptions={(terms) => terms.filter(isOntologyClass)} + getOptionLabel={(option) => option.term.id} + filterOptions={(terms) => terms.filter((t) => isOntologyClass(t.term))} options={options} autoComplete includeInputInList filterSelectedOptions value={value} loading={loading} - isOptionEqualToValue={(option, v) => option.id === v.id} + isOptionEqualToValue={(option, v) => option.term.id === v.term.id} noOptionsText={inputValue ? 'No matches' : 'Start typing to search'} onChange={(_, newValue) => { setOptions(newValue ? [...newValue, ...options] : options) - onChange(newValue.map((v) => ontologyManager.applyPrefixes(v.id))) + onChange(newValue.map((v) => ontologyManager.applyPrefixes(v.term.id))) setValue(newValue) }} onInputChange={(event, newInputValue) => { @@ -244,48 +266,91 @@ export function OntologyTermMultiSelect({ fullWidth /> )} - renderOption={(props, option) => { - let parts: { text: string; highlight: boolean }[] = [] - const label = option.lbl ?? '(no label)' - const matches = highlightMatch(label, inputValue, { - insideWords: true, - findAllOccurrences: true, - }) - parts = highlightParse(label, matches) - return ( -
  • - - - - {ontologyManager.applyPrefixes(option.id)} - - {parts.map((part, index) => ( - - {part.text} - - ))} - - -
  • - ) - }} + renderOption={(props, option) => ( +