diff --git a/data-exploration/other/mappings-cleanup-investigation.ipynb b/data-exploration/other/mappings-cleanup-investigation.ipynb new file mode 100644 index 00000000..a67308f7 --- /dev/null +++ b/data-exploration/other/mappings-cleanup-investigation.ipynb @@ -0,0 +1,1245 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 161, + "id": "9f3f2e9a-803a-410e-a5d9-1506aebe4307", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "import json\n", + "import csv\n", + "\n", + "import matplotlib.pyplot as plt\n", + "from sankeyflow import Sankey" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "id": "9e9c8c8d-f51f-4116-aec6-64702577157d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from cmat.clinvar_xml_io import ClinVarDataset\n", + "from cmat.clinvar_xml_io.filtering import filter_by_submission\n", + "from cmat.output_generation.clinvar_to_evidence_strings import load_ontology_mapping\n", + "from cmat.trait_mapping.ols import is_current_and_in_ontology" + ] + }, + { + "cell_type": "markdown", + "id": "7b41f368-d7e1-488c-a2e9-2e3d7614b9fd", + "metadata": {}, + "source": [ + "## Investigations for cleaning up trait mappings\n", + "\n", + "1. [Mappings used in evidence](#Mappings-used-in-evidence)\n", + "2. [Origin of mappings used in evidence](#Origin-of-mappings-used-in-evidence)\n", + "3. [Preferred vs. all trait names](#Preferred-vs-all-trait-names)\n", + "4. [Zooma behaviour](#Zooma-behaviour)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "15f40470-912a-4858-89bb-9c0437336e8f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def print_set(s, n=10):\n", + " # Helper function to peek at large sets\n", + " i = 0\n", + " for x in s:\n", + " print(x)\n", + " i += 1\n", + " if i > n:\n", + " break" + ] + }, + { + "cell_type": "markdown", + "id": "8b753c43-f890-4645-9e13-c37b1b841922", + "metadata": {}, + "source": [ + "### Mappings used in evidence\n", + "\n", + "[Top of page](#Investigations-for-cleaning-up-trait-mappings)\n", + "\n", + "* How many mappings in the latest_mappings file are used in latest evidence strings / latest ClinVar?" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "10d2d03e-663f-48f2-862b-1c22e69e5318", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Get all trait names with EFO mappings from 2025.12 evidence\n", + "# To easily handle multiples we define a \"mapping\" as a pair: (trait_name, ontology_id)\n", + "# This mirrors how they're counted in the tsv files where each row is a mapping.\n", + "\n", + "mappings_in_evidence = set()\n", + "with open(os.path.join(os.getenv('BATCH_ROOT'), 'batch-2025-12/evidence_strings/evidence_strings.json')) as f:\n", + " for line in f:\n", + " evidence = json.loads(line.strip())\n", + " if evidence.get('diseaseFromSourceMappedId') and evidence.get('diseaseFromSource'):\n", + " mappings_in_evidence.add((evidence.get('diseaseFromSource').lower(), evidence.get('diseaseFromSourceMappedId')))" + ] + }, + { + "cell_type": "markdown", + "id": "39966266-370b-4422-b10a-847419970b12", + "metadata": {}, + "source": [ + "The above method of getting used mappings does NOT work, due to [this quirk](https://github.com/EBIvariation/CMAT/issues/384) about how we annotate traits in ClinVar. For example:\n", + "\n", + "```\n", + "$ grep -i 'focal facial dermal dysplasia type iii' trait_names_to_ontology_mappings.tsv\n", + "focal facial dermal dysplasia type iii http://purl.obolibrary.org/obo/MONDO_0009203 focal facial dermal dysplasia type III\n", + "congenital ectodermal dysplasia of face http://www.orpha.net/ORDO/Orphanet_1807 Focal facial dermal dysplasia type III\n", + "focal facial dermal dysplasia 3, setleis type http://www.orpha.net/ORDO/Orphanet_1807 Focal facial dermal dysplasia type III\n", + "\n", + "$ grep -i 'focal facial dermal dysplasia type iii' batch-2025-12/evidence_strings/evidence_strings.json\n", + "\n", + "{...\"cohortPhenotypes\": [\"BITEMPORAL FORCEPS MARKS SYNDROME\", \"FFDD type 2\", \"FOCAL FACIAL DERMAL DYSPLASIA, TYPE II\", \"Focal facial dermal dysplasia 3\", \"Focal facial dermal dysplasia 3, Setleis type\", \"Focal facial dermal dysplasia type III\", \"SETLEIS SYNDROME\"],\n", + " \"diseaseFromSource\": \"Focal facial dermal dysplasia type III\",\n", + " \"diseaseFromSourceId\": \"C1744559\", \n", + " \"diseaseFromSourceMappedId\": \"Orphanet_1807\", ...}\n", + "{...\"cohortPhenotypes\": [\"BITEMPORAL FORCEPS MARKS SYNDROME\", \"FFDD type 2\", \"FOCAL FACIAL DERMAL DYSPLASIA, TYPE II\", \"Focal facial dermal dysplasia 3\", \"Focal facial dermal dysplasia 3, Setleis type\", \"Focal facial dermal dysplasia type III\", \"SETLEIS SYNDROME\"],\n", + " \"diseaseFromSource\": \"Focal facial dermal dysplasia type III\", \n", + " \"diseaseFromSourceId\": \"C1744559\",\n", + " \"diseaseFromSourceMappedId\": \"Orphanet_398166\", ...}\n", + "{...\"cohortPhenotypes\": [\"BITEMPORAL FORCEPS MARKS SYNDROME\", \"FFDD type 2\", \"FOCAL FACIAL DERMAL DYSPLASIA, TYPE II\", \"Focal facial dermal dysplasia 3\", \"Focal facial dermal dysplasia 3, Setleis type\", \"Focal facial dermal dysplasia type III\", \"SETLEIS SYNDROME\"],\n", + " \"diseaseFromSource\": \"Focal facial dermal dysplasia type III\",\n", + " \"diseaseFromSourceId\": \"C1744559\",\n", + " \"diseaseFromSourceMappedId\": \"MONDO_0009203\", ...}\n", + "\n", + "\n", + "# The other two mappings appear above, check the third\n", + "$ grep -i 'Orphanet_398166' trait_names_to_ontology_mappings.tsv\n", + "congenital ectodermal dysplasia of face http://www.orpha.net/ORDO/Orphanet_398166 Focal facial dermal dysplasia\n", + "focal facial dermal dysplasia 3, setleis type http://www.orpha.net/ORDO/Orphanet_398166 Focal facial dermal dysplasia\n", + "```\n", + "Note that both [Orphanet_1807](https://www.ebi.ac.uk/ols4/ontologies/efo/classes/http%253A%252F%252Fwww.orpha.net%252FORDO%252FOrphanet_1807) and [Orphanet_398166](https://www.ebi.ac.uk/ols4/ontologies/efo/classes/http%253A%252F%252Fwww.orpha.net%252FORDO%252FOrphanet_398166) are deprecated in EFO, which is what Issue 384 is about.\n", + "\n", + "This issue is a separate one from what we're investigating (though not using previous mappings would mitigate this as well). For the purposes of this investigation, the point is that these `(diseaseFromSource, diseaseFromSourceMappedId)` tuples are not actually the mappings we should be using for counts!" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "5643897d-c92c-418d-bd71-4e06f6457143", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Instead run an abridged version of the evidence string pipeline with only trait mappings\n", + "clinvar_xml = os.path.join(os.getenv('BATCH_ROOT'), 'batch-2025-12/clinvar/clinvar.xml.gz')\n", + "latest_mappings_file = os.path.join(os.getenv('BATCH_ROOT'), 'manual_curation/2025-10-02/trait_names_to_ontology_mappings.tsv')" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "0f1f33a7-d5e9-4634-ac95-8de880fb7fc2", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cmat.output_generation:15972 ontology mappings loaded for ontology EFO\n" + ] + } + ], + "source": [ + "latest_mappings, _ = load_ontology_mapping(latest_mappings_file)" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "id": "a7508c8e-f548-4586-abfb-adf2a8e54186", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100000 records processed\n", + "200000 records processed\n", + "300000 records processed\n", + "400000 records processed\n", + "500000 records processed\n", + "600000 records processed\n", + "700000 records processed\n", + "800000 records processed\n", + "900000 records processed\n", + "1000000 records processed\n", + "1100000 records processed\n", + "1200000 records processed\n", + "1300000 records processed\n", + "1400000 records processed\n", + "1500000 records processed\n", + "1600000 records processed\n", + "1700000 records processed\n", + "1800000 records processed\n", + "1900000 records processed\n", + "2000000 records processed\n", + "2100000 records processed\n", + "2200000 records processed\n", + "2300000 records processed\n", + "2400000 records processed\n", + "2500000 records processed\n", + "2600000 records processed\n", + "2700000 records processed\n", + "2800000 records processed\n", + "2900000 records processed\n", + "3000000 records processed\n", + "3100000 records processed\n", + "3200000 records processed\n", + "3300000 records processed\n", + "3400000 records processed\n", + "3500000 records processed\n", + "3600000 records processed\n", + "3700000 records processed\n", + "3800000 records processed\n", + "3900000 records processed\n", + "4000000 records processed\n", + "4100000 records processed\n", + "4200000 records processed\n", + "4300000 records processed\n", + "4400000 records processed\n", + "4500000 records processed\n", + "4600000 records processed\n", + "4700000 records processed\n", + "Problem getting mappings for RCV003883131: MultipleClinicalClassificationsError('Found multiple descriptions for one ClinicalClassification in RCV003883131')\n", + "4800000 records processed\n", + "4900000 records processed\n", + "4961110 records processed\n" + ] + } + ], + "source": [ + "mappings_in_evidence = {}\n", + "\n", + "dataset = ClinVarDataset(clinvar_xml)\n", + "clinvar_total = 0\n", + "for clinvar_set in dataset.iter_cvs():\n", + " clinvar_total += 1\n", + " if clinvar_total % 100000 == 0:\n", + " print(f'{clinvar_total} records processed')\n", + "\n", + " try:\n", + " # Records skipped by evidence string pipeline\n", + " if not filter_by_submission(clinvar_set):\n", + " continue\n", + " clinvar_record = clinvar_set.rcv\n", + " \n", + " if len(clinvar_record.clinical_classifications) > 1:\n", + " continue\n", + " if not clinvar_record.traits_with_valid_names:\n", + " continue\n", + " if not clinvar_record.valid_clinical_significances:\n", + " continue\n", + " if clinvar_record.measure is None:\n", + " continue\n", + "\n", + " # Get EFO mappings\n", + " for trait in clinvar_record.traits_with_valid_names:\n", + " for trait_name in trait.all_names:\n", + " for uri, label in latest_mappings.get(trait_name.lower(), []):\n", + " # Store the full URI and whether the trait name is preferred or not\n", + " mappings_in_evidence[(trait_name.lower(), uri.split('/')[-1])] = (uri, trait_name.lower() == trait.preferred_or_other_valid_name.lower())\n", + "\n", + " except Exception as e:\n", + " print(f'Problem getting mappings for {clinvar_set.rcv.accession}: {repr(e)}')\n", + " continue\n", + " \n", + "print(f'{clinvar_total} records processed')" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "id": "830659b9-f6d1-4c33-b166-3d98fd49e883", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Dump mappings_in_evidence so we don't need to rerun\n", + "with open('mappings_in_evidence.csv', 'w') as f:\n", + " writer = csv.writer(f, delimiter=',')\n", + " for row in mappings_in_evidence:\n", + " writer.writerow(row)" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "id": "b51e56d0-a718-45b0-9077-274b37574a19", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "13689" + ] + }, + "execution_count": 201, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(mappings_in_evidence)" + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "id": "b12b2124-74c1-460b-a1d8-2105da7a8afa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15975 /nfs/production/keane/eva/opentargets/manual_curation/latest_mappings.tsv\n" + ] + } + ], + "source": [ + "!wc -l ${BATCH_ROOT}/manual_curation/latest_mappings.tsv" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "id": "70aabc71-01a3-4b1f-84e9-440329a6afc2", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8569014084507042" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Percentage of mappings being used in latest evidence\n", + "13689/15975" + ] + }, + { + "cell_type": "markdown", + "id": "2e75d1dd-2767-4e77-aa56-b0dda80d6ad7", + "metadata": { + "tags": [] + }, + "source": [ + "### Origin of mappings used in evidence\n", + "\n", + "[Top of page](#Investigations-for-cleaning-up-trait-mappings)\n", + "\n", + "* How many mappings are being used but are bypassing curation completely (high confidence from Zooma or exact match from OLS)?\n", + "* Are there any mappings that are used in evidence strings but aren’t in the most recent curated and automated mappings?" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "id": "03afccef-12bc-424b-85d4-99fd21584954", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Check where these mappings come from: most recent automated mappings, most recent manual curation, or neither\n", + "\n", + "# Use a dict so we can hash on (trait_name, ontology_id), but keep the URI to check obsoleteness\n", + "automated_mappings = {}\n", + "with open(os.path.join(os.getenv('BATCH_ROOT'), 'manual_curation/2025-10-02/automated_trait_mappings.tsv')) as f:\n", + " for line in f:\n", + " trait_name, ontology_uri, ontology_label = line.strip().split('\\t')\n", + " automated_mappings[(trait_name.lower(), ontology_uri.split('/')[-1])] = ontology_uri" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "id": "5cdfe873-d59e-4b2c-b718-688c5b3abeb1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "11075" + ] + }, + "execution_count": 129, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(automated_mappings)" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "295e5d5b-55bf-4afc-9ce9-70e25b0441e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "curated_mappings = {}\n", + "with open(os.path.join(os.getenv('BATCH_ROOT'), 'manual_curation/2025-10-02/finished_curation_spreadsheet.csv')) as f:\n", + " reader = csv.reader(f, dialect='excel')\n", + " # skip header\n", + " next(reader)\n", + " next(reader)\n", + " for row in reader:\n", + " if row[5] == 'DONE' and row[0] and row[7]:\n", + " curated_mappings[(row[7].lower(), row[0].split('/')[-1])] = row[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "id": "e494d978-06f7-44d5-8a03-a5b378de2e15", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "371" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(curated_mappings)" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "id": "708b29d7-b996-4b6c-802c-0fd7e6ed2120", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4529" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Mappings in latest carried over from previous (not from automated or curated)\n", + "15975 - (11075 + 371)" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "id": "3304cec8-ae43-4e44-a246-91c24df342d6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "mappings_used_in_automated = set()\n", + "mappings_used_in_curated = set()\n", + "mappings_used_in_neither = set() # these are \"previous mappings\" only\n", + "mappings_used_in_both = set() # sanity check - this should never happen!\n", + "\n", + "for mapping in mappings_in_evidence:\n", + " if mapping in automated_mappings and mapping not in curated_mappings:\n", + " mappings_used_in_automated.add(mapping)\n", + " if mapping not in automated_mappings and mapping in curated_mappings:\n", + " mappings_used_in_curated.add(mapping)\n", + " if mapping in automated_mappings and mapping in curated_mappings:\n", + " mappings_used_in_both.add(mapping)\n", + " if mapping not in automated_mappings and mapping not in curated_mappings:\n", + " mappings_used_in_neither.add(mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "id": "1a56b935-6ecf-492f-aa2c-ed548b52133d", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "11059" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(mappings_used_in_automated)" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "id": "37fb3cbc-1101-483c-aa98-d67f723f8b20", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "366" + ] + }, + "execution_count": 136, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(mappings_used_in_curated)" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "id": "57e769b0-fb11-4ec5-b02a-cfc9722a76e5", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2264" + ] + }, + "execution_count": 140, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(mappings_used_in_neither)" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "id": "5b731a9c-20e6-4738-b159-e71cb28259c4", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(mappings_used_in_both)" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "id": "fb3fe02f-608b-4633-9e7e-1456aa5e2268", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "13689" + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Confirm these add up to the number of mappings used in the evidence\n", + "11059 + 366 + 2264" + ] + }, + { + "cell_type": "markdown", + "id": "03e897b2-b234-4ae5-b959-9b8af954c049", + "metadata": { + "tags": [] + }, + "source": [ + "* How many mappings in each of these categories (automated, curated, or previous) are obsolete?" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "id": "2dc5ce63-417d-4404-a311-9f95e3b508ba", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def get_num_obsolete(mapping_set):\n", + " num_obsolete = 0\n", + " for mapping in mapping_set:\n", + " if not is_current_and_in_ontology(mappings_in_evidence[mapping]):\n", + " num_obsolete += 1\n", + " return num_obsolete " + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "id": "b7e67021-48b0-4e89-8d66-f2ee27bf81b3", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "13" + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Note these are from a couple months ago, so it's expected that a handful will have been deprecated since then\n", + "get_num_obsolete(mappings_used_in_automated)" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "id": "0e37140b-eec3-469f-9083-ee06c3466b63", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_num_obsolete(mappings_used_in_curated)" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "id": "a58b7167-f668-43d7-9401-4647e88ebd5c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "717" + ] + }, + "execution_count": 154, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_num_obsolete(mappings_used_in_neither)" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "id": "462b0f29-1f84-41b7-9598-7ea9c7046ca2", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1547" + ] + }, + "execution_count": 157, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Number of current EFO mappings used in the current evidence that are only present in previous mappings,\n", + "# i.e. not in the latest automated or curated mappings.\n", + "2264-717" + ] + }, + { + "cell_type": "markdown", + "id": "cea245be-5a38-4e96-9748-81a48ff829e4", + "metadata": {}, + "source": [ + "This exceeds the 716 multiple mappings found previously, so these can't all be duplicate terms. The question is, where are these coming from and why are they not present in Zooma or automated mappings more generally?" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "15a91776-3791-44a9-a839-e17f17b1227c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5wAAAGVCAYAAACSIv4wAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAqSFJREFUeJzs3Xd4VFXixvHvnZn0HpLQSei9d+nSVARRUbAilnUt2Lu4omv9raIrlrWCBVSaCtKkhd5776GTENJ7pvz+mGRgmAQCMtT38zx5Zubcc++cO0DIm9MMh8PhQEREREREROQ8M13sBoiIiIiIiMiVSYFTREREREREvEKBU0RERERERLxCgVNERERERES8QoFTREREREREvEKBU0RERERERLxCgVNERERERES8QoFTREREREREvEKBU0RERERERLxCgVNERERERES8QoFTREREREREvEKBU0RERERERLxCgVNERERERES8QoFTREREREREvEKBU0RERERERLxCgVNERERERES8QoFTREREREREvEKBU0RERERERLxCgVNERERERES8QoFTREREREREvEKBU0RERERERLxCgVNERERERES8QoFTREREREREvEKBU0RERERERLxCgVNERERERES8QoFTREREREREvMJysRsgct4lboG0fRe7FSJXL8MEY28v8ZDDDlldf7+w7RERNwcffbTUY7UWrMaanHsBWyMip/KvF4lhMi52M84bBU65LMW9NLXUYwl35ULCwgvYGhFxYyr9vxaHA7Li4y9cW0TkrFiTcsjbkXqxmyFyVTv+w5ZSj1V5r9MFbMn5oSG1IiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi4hUKnCIiIiIiIuIVCpwiIiIiIiLiFQqcIiIiIiIi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ITs7mz59+jBw4ECys7PZuXMnn3/+OR988AEWi4XXX3+d0aNHs2/fPl5//XXXezVr1qxM91hQUEDPnj3Jy8tj4MCBJCYmMm7cOHr06MGSJUvo3bs3FStW5O6772bXrl1MmTKFPn36sHXrVre/XC+//DK+vr507NiRihUrcuzYMSZPnsyAAQP45JNPGDp0qMd779mzhw4dOtCiRQseeeQR9u3bx/jx4+ncuTNz5851fRYnu/3221m7di233nor4Ax3TzzxBAkJCXz44YdluufCwkJ69epFamoqt956Kzk5Ofzyyy/cfvvtzJgxg169ernqHjp0iGuuuYYjR45w3XXX0bx5c7Zv307Pnj259tprPa79xRdf8Oijj1KxYkVuvvlmypUrx9GjR1mxYgW//fabq90iV4oJLzn/80vLymftniRe/WkpLZ/5hUkv9eHaplXPcPaJ5dZjwgOZ+PINBPr5ANCndXW+GdqdG96YzIe/r+X6lnGuc6au3MudH87kxtbVmTzsRmKjQ9l3LIN//7qSwR/PYtO+4/zfkI6u+h892ImOL03g8S/nM2XFXprERbHrSDp/rNhDk7goNiQkY9I8eBER+Rs+G/o+nw19/4z1OjZqS8rEHWd17SVbVmIYBk/d/LDHsQ8ffqPM16kSVZH/PvL2Wb13sXb1WjJ+2LfndO6VwGuBs379+hw5coTIyEi38nnz5tGjRw/eeustvv76a8AZOBMSEpg/fz733XcfXbt29bjevffey5EjR5gxYwa9e/d2lQ8bNoxWrVrx0EMPsWGD8zfwEydOJC0tjY8//pgnn3zS7TopKSlYLM7bHj58OPHx8ezbt++cVmM9cuQIHTt2ZOzYsa5rNm/enBdffJH27dszZMgQPvzwQ9cwtEcffZQvvviCP/74g1tuOdF9Pm3aNGrUqOF27aysLK655hpee+01HnjgAQIDA92OL1y4kJdeeol3333XVTZ48GCuu+46t8/iZDt27GDTpk2EhTl/Y/PGG2/Qtm1bPvroI+644w5atfJcdORUhw8fpnXr1sTHx+Pr69zb784776RHjx6MGDHCLXC+9NJLHDlyhLfffptXXjmx+td3333HAw884HHtb775Bl9fX9atW0dMjPuy1sePl32bCJHLTXiwH92aVGXG8BjqPvIj9378F3u/vg8fy+l/6xkW6PxNao+mVV1hs1jv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Bvfdd1+pK8ye6vrrrwfgvffeIy8vz1V+/PhxPv74YwDS0tJOe429e/cyb948qlWrRs+ePT2OBwYG8tprr7F69WrS0tJISUlh9uzZtGnThp9++qnM4VhERERERC496uG8At18881ur+Pi4nj88cepX78+PXv2ZNiwYfTr1++M17nzzjsZPXo08+bNo3Hjxlx33XUUFhby+++/U758eQBMptP/zuK7777D4XAwZMiQEuvGxMTw5ptvupV1796d9u3b06JFCyZNmsSaNWto0aLFGdsrIiIiIiKXFvVwXkW6d+9OzZo12bhxIxkZGWesb7FYmD59OsOHD8dkMvHVV18xadIkbrrpJiZMmAA4A2Np7HY7o0ePxmQycf/9959VWwMDA10LDC1evPiszhURERERkUuDAudVpnheZk5OTpnq+/n58frrr7N9+3by8/NJSkriyy+/5NChQwC0atWq1HNnzJjBwYMH6dmzJ9WqVTvntmZnZ5/1uSIiIiIicvEpcF5FsrOz2bx5M0FBQa4wd67GjBkDwKBBg0qtU5bFgk5n+fLlAG77fIqIiIiIyOVDgfMKk5mZWeLKsbm5uTz00ENkZmZy++23Y7G4T9+Ni4vDMAwSEhLcyksaejthwgS+++47WrduzS233FJiO44dO8aUKVOIjo4+7XzRtWvX4nA4PMonTZrE999/T0REhGvxIhERERERubxo0aDLxDfffMOiRYsA2Lhxo6ssPj4egI4dO/Lggw9y/Phx6tWrR+vWralfvz4VKlQgMTGR2bNnc/DgQRo3bsx//vMfj+vb7XYAjyDatm1bqlatSv369fH392fFihXEx8dTo0YNxo8fj9lsLrG9P/zwA4WFhdxzzz34+vqWel9PP/00u3fvpn379lSpUgWbzcaaNWtYtGgRfn5+jB49mrCwsLP+vERERERE5OJT4LxMLFq0iO+//96tbPHixW4L6jz44INERkby6KOPsmLFCqZNm0ZqaioBAQHUr1+fJ554gscff5yAgAC366SlpXHo0CE6dOhAlSpV3I4NHDiQSZMmsWzZMgoLC6levTrDhg3j+eefJzQ0tNT2lnU47d13383EiRNZtmwZycnJ2O12KleuzIMPPsizzz5LvXr1yvT5iIiIiIjIpcdwlDSeUa4qf/75J3379mXq1KnccMMNF7s5ZRL30tRSjyXclQsJCy9ga0TEjckCK78p8ZDdBonGUxe2PSLiJm3cuFKPxU1YSN6O1AvYGhE5VfaKo6Ueq/JepwvYkvNDcziFhQsX0qxZs8smbIqIiIiIyOVBgVN4//33Wbt27cVuhoiIiIiIXGEUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKxQ4RURERERExCsUOEVERERERMQrFDhFRERERETEKywXuwEiInL1sGMmqcH1ABhG8Zfhen3qY/Fzs9nAbAazpejRbDi/LM7nFjMYphPXEpHSRT3yT3wqVizxWGZqBvlhQUWvDMBx2muZzWb8/Pzw9/PHYtGPlXJlcjgcYHPgsNqLvhw4Cu3gem13O4bVjqOw6LXNAY6if0cOwOFwvnQrO6n8DP/mLkf6ziAiIheOyUSKLdwrlzYMA4vFhNnH+WUpejRbTFh8ix5PPmYxu9VzPfqaMZkUXOXy17VrV+bPn+/8YbmMQiJCCYkILXN9q9VKXl4emfnZ2HJsJdYxm82EhITg6+tb5uuKnE8OuwNHgQ17vg1HnhVHQVEYLDwpKBa6P3LK8SswB14wCpwiInJFcDgcFBbaKCws+Yfes+Hja8bX34yPvwVffzO+ARZ8T3ru4292vTaZL4/ZKQkJCVSvXv20dVJTUwkPD78wDbpK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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualise what we have so far\n", + "plt.figure(figsize=(10, 5))\n", + "flows = [\n", + " ('Latest mappings', 'Used in evidence', 13689),\n", + " ('Latest mappings', 'Not used', 15975-13689),\n", + " ('Used in evidence', 'From automated', 11059),\n", + " ('Used in evidence', 'From curated', 366),\n", + " ('Used in evidence', 'From previous', 2264),\n", + " ('From automated', 'Current', 11059-13),\n", + " ('From curated', 'Current', 366-3),\n", + " ('From previous', 'Current', 2264-717),\n", + " ('From automated', 'Obsolete', 13),\n", + " ('From curated', 'Obsolete', 3),\n", + " ('From previous', 'Obsolete', 717),\n", + "]\n", + "s = Sankey(flows=flows)\n", + "s.draw()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "8fc6e1f1-5b0f-4a59-be00-e3ad718cfe38", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Filter mappings_used_in_neither to remove obsolete mappings and terms that are present in automated or curated\n", + "# The latter should in the future be \"overwritten\" by the automated and curated mappings in each round\n", + "\n", + "automated_trait_names = {trait_name for trait_name, ontology_id in mappings_used_in_automated}\n", + "curated_trait_names = {trait_name for trait_name, ontology_id in mappings_used_in_curated}" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "id": "0d95aedb-89a6-4c53-8881-4039166d69bd", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "previous_mappings_for_distinct_traits = set()\n", + "for mapping in mappings_used_in_neither:\n", + " if is_current_and_in_ontology(mappings_in_evidence[mapping][0]):\n", + " trait_name = mapping[0]\n", + " if trait_name not in automated_trait_names and trait_name not in curated_trait_names:\n", + " previous_mappings_for_distinct_traits.add(mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "id": "9707c003-54a9-4aa2-bedf-35bfef880a0d", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1546" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(previous_mappings_for_distinct_traits)" + ] + }, + { + "cell_type": "markdown", + "id": "7464eb9c-9838-4cfd-9d87-77bb94e0f3cc", + "metadata": {}, + "source": [ + "These are mappings that:\n", + "1. Do not appear in the most recent automated and curated mappings\n", + "2. Are used the most recent evidence strings\n", + "2. Are not obsolete\n", + "3. Are not for traits that appear in the automated/curated mappings" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "id": "7dd1d578-86de-4f14-a192-f98b80469f19", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "with open('suspicious_mappings.csv', 'w') as f:\n", + " writer = csv.writer(f, delimiter=',')\n", + " for row in previous_mappings_for_distinct_traits:\n", + " writer.writerow(row)" + ] + }, + { + "cell_type": "markdown", + "id": "1490270f-491c-453a-a766-c419c513d422", + "metadata": {}, + "source": [ + "An example mapping here is `dystonia` => `HP_0001332`, which is an exact match via OLS and thus should be an automated mapping. (It's also a high confidence mapping from Zooma, but that might be affected by the Zooma feedback we've imported since the curation happened.)\n", + "\n", + "So the only reason this wouldn't show up in automated mappings is if it appeared among all trait names (used for evidence generation) but NOT among preferred trait names (used for generating automated and curated mappings) - or (less likely), if it appeared in the version of ClinVar used for evidence generation but NOT the version of ClinVar used for generating mappings and curation.\n", + "\n", + "My main conclusion from this is that barring some unusual behaviour from Zooma, there is no need to keep previous mappings as long as we either attempt to map all trait names, or only annotate preferred trait names.\n", + "\n", + "Below we check both Zooma behaviour as well as the preferred vs. all trait name hypothesis." + ] + }, + { + "cell_type": "markdown", + "id": "447e8d5c-7ed6-475d-ad22-c4d70e5900c9", + "metadata": {}, + "source": [ + "### Preferred vs. all trait names\n", + "\n", + "[Top of page](#Investigations-for-cleaning-up-trait-mappings)\n", + "\n", + "* Are previous mappings being used in evidence because annotations are being done with all trait names rather than just preferred?" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "id": "b8dea049-63fd-4e3f-ab46-4ac36540b776", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Filter for previous mappings applied to preferred names only\n", + "previous_preferred_mappings = set()\n", + "for mapping in previous_mappings_for_distinct_traits:\n", + " if mappings_in_evidence[mapping][1]:\n", + " previous_preferred_mappings.add(mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "id": "59cbe777-3366-4349-8024-b39cd4de3883", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "469" + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(previous_preferred_mappings)" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "id": "391c9e25-3fef-401c-a240-8d1fbd076c56", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('posterior polymorphous corneal dystrophy 3', 'MONDO_0020364')\n", + "('hyperhomocysteinemia, thrombotic, cbs-related', 'Orphanet_394')\n", + "('trichoepithelioma, multiple familial, 1', 'MONDO_0011512')\n", + "('immunodeficiency 65, susceptibility to viral infections', 'MONDO_0021094')\n", + "('sitosterolemia 1', 'MONDO_0008863')\n", + "('psoriasis 1, susceptibility to', 'EFO_0000676')\n", + "('intellectual disability, anterior maxillary protrusion, and strabismus', 'HP_0001249')\n", + "('metaphyseal chondrodysplasia', 'MONDO_0009597')\n", + "('myopathy, congenital, with structured cores and z-line abnormalities', 'MONDO_0019952')\n", + "('intellectual disability, autosomal dominant 46', 'MONDO_0015802')\n", + "('nephronophthisis 20', 'MONDO_0019005')\n" + ] + } + ], + "source": [ + "print_set(previous_preferred_mappings)" + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "id": "415566b2-d7d7-4947-9475-53bf4172567b", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABF4AAAGVCAYAAADHUzUvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAiPpJREFUeJzs3Xd4VMUCxuHf7qaSSgsEAgm9N+m9F0FEijSlqldRQcEG2LAgYEEEOwgICoig9CItoffea0IntISaunv/CFmy7CYEyBLK9z6PN9mZOXPm7G5y2S8zcwwWi8WCiIiIiIiIiIhkOGNmD0BERERERERE5FGl4EVERERERERExEkUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScRMGLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExEkUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScRMGLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExEkUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScRMGLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExElcMnsAIiLiBMc3wdXIzB6FyOPLzQsK1HFYlXjlCtfWb7jPAxKRlDxKFMc1MNBh3ZnDB7ly8fx9HpGIJDO5uhFStkJmDyNDGSwWiyWzByEiIncupP/cVOvC25yEMzvv42hExIZXACz/0mFV/DUj5zz63OcBiUhKUVOnploX/8MIzhw6cB9HIyIpuXt5sWHW9FTr3/przn0cTcbQUiMRERERERERESdR8CIiIiIiIiIi4iQKXkREREREREREnETBi4iIiIiIiIiIkyh4ERERERERERFxEgUvIiIiIiIiIiJOouBFRERERERERMRJFLyIiIiIiIiIiDiJghcRERERERERESdR8CIiIiIiIiIi4iQKXkREREREREREnETBi4iIiIiIiIiIkyh4ERERERERERFxEgUvIiIiIiIiIiJOouBFRERERETkMZOQmMiE2fPo/uGntHitL01e7s2qrdsye1j35KvxE2nycm9O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hz4Ozz177X8AdGn07B2P+2Gk4EVEHllVqlQhNDSUunXr2pSvWLGChg0b0qtXL5555hnc3d1T7cNkMvH555/z6quvkjVrVmt5fHw8bdu2Zfbs2fzwww+88847Nsf179+fOXPmMHToUN577z2bOrPZnOa433vvPSIjIxkwYAAffPBBei9XRERERB4T9crVvOc+JiyeCsBHz71lDV0AujfpyKiZY5i2YjZf9HgfT3fHs7uT/bFkGgDPN2yXrvNuOrCNPUf3U6ZACcoVLHWXo3+4aHNdEXlktWnTxi50Aahduzb169fn4sWL7NixI80+XF1def/9921Cl+TyAQMGABAWFmZTd+LECb7//ntq165tF7oAGI1GjEbHv36XLVvGDz/8wPDhw8mb1/FUThERERGRexETF8umA9sokqeA3fIhg8FAvXI1uRpzja2H0v638vXYGKatmI27qxsd6rZK17knLv4bgC4NH4/ZLqDgRUQeU66urgC4uNz9xL/U+pg2bRoJCQk8++yzXL58mT///JMhQ4YwduxYTpxIff3t5cuX6dGjB02aNKFnz553PS4RERERkbQcOX0Us9lMwcAQh/UFA4MBOHQqIs1+Zq1ZwKVrl2lRpTFZffxve96rMdf4Z9VcPN08eLbO03c67IeWlhqJyGPn6NGjLF68mMDAQMqUKXPX/YwdOxaAJk2a2JRv2rQJgKioKIoVK8apU6esdW5ubgwdOpS+ffva9de3b18uXrzI6NGj73pMIiIiIiK3c+naZQB8vRzvOejj6W3TLjV/LE1aZpTevVpmrl7AletXaV/nafy8fNM73IeeZryIyGMlPj6eLl26EBsby7BhwzCZTHfVz/z58/nll18oUaIEL7zwgk1dZGQkAJ988gnlypVj165dXLp0iTlz5pAjRw769evH/Pnz7fr77bff+Oqrr8iXL9/dXZyIiIiIyH1y+FQEq3dvIDggiDplqqfrmD+WJi0zev4xWmYECl5E5DFiNpvp3r07y5cv56WXXqJLly531c+GDRvo0KEDfn5+/P3333ab8yZvnhsQEMD06dMpWbIkPj4+tGjRgjFjxgDwzTc3d56/ePEiL774Ig0bNuR///vfXV6diIiIiEj6+GZJmuly6arjGS2Xr1+xaefIn0unYbFYeK5hO5vNeVNz4MRh1u7ZRMHcwdQqXfUuRv3wUvAiIo8Fs9lMz549mTRpEs8//zw///zzXfWzceNGmjRpgtFoZOHChZQqZb8Tu5+fHwCNGjWyu81006ZNcXd3Z+PGjdayfv36ER0dbQ1lREREREScKSRXPoxGI4dPhTusP3xjb5dCN/Z6uVViYiJTQv/FZDTRuX6bdJ3zTu9+9ChR8CIijzyz2UyPHj34/fff6dSpE+PHj0/1rkJp2bhxI40bN8ZsNrNw4UIqV67ssF2xYsUA8Pf3t6szGo34+Phw/fp1a9mWLVu4evUqBQoUwGAwWP/r0aMHAAMGDMBgMPDmm2/e8ZhFRERERG7l6e7BE4XLcuDkEY5F2t78wWKxELptFV4eWShfyPF+iIs2h3HqQiQNK9QmT/bctz1fQmICf4XNwMXkQqd0BjWPEm2uKyKPtOTQZcKECXTo0IGJEyfe1b4uyaFLYmIiCxcupGrV1KdHNmjQgMGDB7N79267urNnz3Lu3DmKFi1qLWvTpg2VKlWya3vgwAGWL19O5cqVKVu2LNWrp2/trIiIiIhIsklL/+H1H/rTqV5rfug9zFrerXEHNu7fyqd/fsOvb35jXS40/r8phJ85RrfGHfB093DY5x9LkvdqSd/slYUblxEZdY4nKzckV9ac93hFDx8FLyLyyEpeXjRhwgSeffZZ/vjjjzRDl/Hjx9OjRw+6devG+PHjreWbNm2icePGJCQksGDBgtsGIHXr1qVEiRIsWbKERYsW0bhxYyDprwcDBw4EoH379tb2H330UarjWb58OW3atKF///7pvWwRERERecRNWDyVdXuS7qS5++h+ACYumcqqXesAqFqiIl0bJf1702xJ2n/w1n8Hd6rXmn9XzWP6yjlERB6nZsnKHD59lDnr/iM4IIj3O9nfhRMgMuoc/20OI8A/B80qNUjXeJOXGXV5zDbVTabgRUQeWZ9++im///473t7eFC1alM8//9yuzTPPPEP58uWBm5viurjc/NV44cIFGjduTFRUFM2aNWPRokUsWrTIpg9/f3+bZUAmk4lx48bRoEEDmjdvTps2bQgKCmLlypWsX7+eJ554QkGKiIiIiNy1dXs2MTn0X9uyvZtZt3ez9XFy8LLnRjDTpmYLm/ZGo5E/+//EiH9/YWrYTH6aM56s3v4837Ad73fqSw6/bA7PPSX0XxISE+hYrzUupttHCqcunGHxluUEZgug8RN17+g6HxUKXkTkkRUeHg7AlStXGDx4sMM2ISEh1uBl586dAHTs2NFaf+nSJS5evAjAggULWLBggV0fwcHBdvuvVK1alfXr1/Pxxx+zZMkSLl26RP78+RkwYAADBw7Ey8vrHq9ORERERB5XP/QeZrNsKC1r9mzkiSJlqVeupl2du6sb77XvzXvte6f73H2eeYk+z7yU7vaB2XJx9u896W7/KDJYLBZLZg9CRORBUKlSJUwmE+vWrcvsoaRLSP+5qdaFtzkJZ3bex9GIiA2vAFj+pcOq+GtGznn0uc8DEpGUoqZOTbUu/4RlxB13fItdkYfN5etXKNi1MuPfHkmLqo0zezjpYvB04UrY8VTrg4bWvo+jyRia8SIiAly+fJmtW7cybdq0zB6KiIiIiEiG8PH0fuxnmzwIFLyIiAA+Pj4kJCRk9jBEREREROQRY8zsAYiIiIiIiIiIPKoUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScRMGLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExEkUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScRMGLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExEkUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScRMGLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExEkUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScRMGLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExEkUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScRMGLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExEkUvIiIiIjIAyPPZ5/SdsLvmT2MNL05cyZ5PvuUY1FRmTqOthN+J89nnz60/YuIPC5cMnsAIiIiIvJgudMP2yc//MhJI0ny5syZTN2+jXW9+5DP39+p55KM9XVYKMOXL2da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DGcSboY0sYlY4nQXpweZghcRERERkcfMHYU0iWbirycSa064bVuFNCIZx2AyYMjimv6QJi6VpU43AhrrcieFNPedghcREREREUmVyWTE5J2+IOVOQpq0GE0GXNyMmFyMGAy656/I7RhMBgyeLhg9b/8R32K2YEkwY4k3Y0kww42v1v/iU3xNtGCJT7zRxmLXBrO2jE0PBS8iIiIiIpIh7iSkSY3FYsGcYCEhwUzc9fjbH3AX3DxMuLiZnNK3yIPOYDRgcDNBBvwMWBItdqENKcObhKTwBosl6c5PFpL+50bRzfKkAMdiAYPLoxe2KngREREREZEHhsFgwORqSLqFtmdmj0ZE0mIwGTCYTOCesUFmlqE5M7S/zKbFlyIiIiIiIiIiTqLgRUREREREHmp//PEHL7/8MpUqVcLd3R2DwcD48eMze1giIoCWGomIiIiIyEPugw8+ICIighw5chAYGEhERERmD0lExEozXkRERERE5KE2ZswYwsPDOXv2LK+88kpmD0dExIZmvIiIiIiIyEOtUaNGmT0EEZFUacaLiIiIiIiIiIiTKHgREREREREREXESBS8iIiIiIiIiIk6i4EVERERERERExEkUvIiIiIiIiIiIOImCFxERERERERERJ1HwIiIiIiIiIiLiJApeREREREREREScxCWzByAiIiIiInIvxowZw8qVKwHYsWOHtSw0NBSAWrVq8eKLL2bW8ETkMafgRUREREREHmorV67k999/tylbtWoVq1atsj5W8CIimUXBi4iIiIiIPNTGjx/P+PHjM3sYIiIOaY8XEREREREREREnUfAiIiIiIiIiIuIkCl5ERERERERERJxEwYuIiIjcsW/bfMu3bb7N7GFwZPMRBtUYxLIxyzJ7KCIiIiIOaXNdERER4cimI2ycsZFjO45x9eJVXD1cyVkgJyXrlaRS60q4urtm9hCdKjlE6vtP30weiYiIiDxqFLyIiIg8xhITEpn3zTw2zdyEq6crRaoVIVtQNmKuxHBo/SEWjlzIxhkb6fx1Z7IHZc/s4YqIiIg8dBS8iIiIPMaW/LyETTM3kadEHjoO7YhvTl9rnTnRTNi4MMLGhvFH3z94efzLeHh5ZOJoRURERB4+Cl5EREQeU+eOnmPNlDV4+nrS+avOeGfztqk3mozUf7E+F45fYMd/O1g9aTUNXmpg0+b65ess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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualise what we have so far\n", + "plt.figure(figsize=(10, 5))\n", + "flows = [\n", + " ('Previous mappings used in evidence', 'Current', 1547),\n", + " ('Previous mappings used in evidence', 'Obsolete', 717),\n", + " ('Current', 'Traits only in previous', 1546),\n", + " ('Current', 'Traits also in latest', 1),\n", + " ('Traits only in previous', 'Preferred trait name', 469),\n", + " ('Traits only in previous', 'Other trait name', 1546-469),\n", + "]\n", + "s = Sankey(flows=flows)\n", + "s.draw()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e723d17a-3fe6-40f8-aea1-6a13bc23ee65", + "metadata": {}, + "source": [ + "In fact there are still preferred trait names who get their mappings only from previous mappings, not automated or curated. So while aligning the sets of trait names we map vs. annotate would help with a lot of issues, it doesn't remove the need to keep our memory of previous mappings" + ] + }, + { + "cell_type": "markdown", + "id": "1a6433c8-b0d2-4d53-ada8-50bc623e2e17", + "metadata": { + "tags": [] + }, + "source": [ + "### Zooma behaviour\n", + "\n", + "[Top of page](#Investigations-for-cleaning-up-trait-mappings)\n", + "\n", + "* Are there mappings that used to be high confidence in automated mapping and subsequently were mapped with low confidence?" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "id": "6a5f8abf-a892-427f-b7e5-71d6d3b81349", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-02-03_test 2023-05-26_test 2024-07-02\t 2025-10-02\n", + "2022-03-03\t 2023-06-06\t 2024-09-05_test eva_clinvar.txt\n", + "2022-05-11\t 2023-06-06_counts 2024-10-11\t latest_comments.tsv\n", + "2022-08-18\t 2023-07-24\t 2025-01-16\t latest_mappings.tsv\n", + "2022-10-17_test 2023-10-03\t 2025-02-25_test\n", + "2023-01-09\t 2024-01-19\t 2025-04-15\n", + "2023-03-01\t 2024-04-11\t 2025-06-20\n" + ] + } + ], + "source": [ + "!ls $BATCH_ROOT/manual_curation" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "id": "815a346f-75b2-4451-ace8-bc0c23a36af5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Start with first date that uses current spreadsheet export method\n", + "dates = ['2023-01-09', '2023-03-01', '2023-06-06', '2023-07-24', '2023-10-03', \n", + " '2024-01-19', '2024-04-11', '2024-07-02', '2024-10-11', \n", + " '2025-01-16', '2025-04-15', '2025-06-20', '2025-10-02']" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "id": "488538bb-14d7-4407-b6ad-dc964b5b19e7", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Check past batches for terms that move from automated mappings to mappings for curation\n", + "automated_terms_through_time = []\n", + "curated_terms_through_time = []\n", + "\n", + "for date in dates:\n", + " automated_terms = set()\n", + " with open(os.path.join(os.getenv('BATCH_ROOT'), f'manual_curation/{date}/automated_trait_mappings.tsv')) as f:\n", + " for line in f:\n", + " trait_name, ontology_uri, ontology_label = line.strip().split('\\t')\n", + " automated_terms.add(trait_name)\n", + " curated_terms = set()\n", + " with open(os.path.join(os.getenv('BATCH_ROOT'), f'manual_curation/{date}/finished_curation_spreadsheet.csv')) as f:\n", + " reader = csv.reader(f, dialect='excel')\n", + " # skip header\n", + " next(reader)\n", + " next(reader)\n", + " for row in reader:\n", + " if row[5] == 'DONE' and row[0] and row[7]:\n", + " curated_terms.add(row[7].lower())\n", + " automated_terms_through_time.append(automated_terms)\n", + " curated_terms_through_time.append(curated_terms)" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "id": "1a4bbf7a-f372-4807-9dce-07bd23068f84", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Following terms were automated in 2023-06-06 but curated in 2023-07-24:\n", + "{'orofacial cleft 7', 'heterotaxy', 'spinocerebellar ataxia 7', 'qualitative or quantitative defects of beta-myosin heavy chain (myh7)', 'spheroid body myopathy', 'infantile hypercalcemia'}\n", + "\n", + "Following terms were automated in 2023-07-24 but curated in 2023-10-03:\n", + "{'multisystemic smooth muscle dysfunction syndrome', 'li-fraumeni syndrome 1'}\n", + "\n", + "Following terms were automated in 2023-10-03 but curated in 2024-01-19:\n", + "{'qualitative or quantitative defects of calpain', 'severe myoclonic epilepsy in infancy', 'dilated cardiomyopathy 1kk', 'dilated cardiomyopathy 1m', 'hereditary angioedema with normal c1inh', 'dilated cardiomyopathy 1gg', 'congenital myopathy with cores', 'apolipoprotein a-i (munster3b)', 'isolated anorectal malformation', 'non-syndromic renal or urinary tract malformation', 'dilated cardiomyopathy 1e', 'dilated cardiomyopathy 1ee', 'dilated cardiomyopathy 1aa', 'qualitative or quantitative defects of merosin', 'dilated cardiomyopathy 1ff', 'congenital cornea plana', 'hypoalphalipoproteinemia, primary, 2', 'dilated cardiomyopathy 1w', 'ovarioleukodystrophy', 'dilated cardiomyopathy 1p', 'oligosynaptic infertility', 'apolipoprotein a-i deficiency', 'dilated cardiomyopathy 1o', 'dilated cardiomyopathy 1u', 'apolipoprotein a-i (munster4)', 'microcephalic primordial dwarfism', 'pure or complex autosomal recessive spastic paraplegia', 'pik3ca related overgrowth syndrome', 'dilated cardiomyopathy 1bb', 'apolipoprotein a-i (munster3c)', 'sodium channelopathy-related small fiber neuropathy', 'familial isolated restrictive cardiomyopathy', 'apolipoprotein a-i (norway)', 'primary bone dysplasia with multiple joint dislocations', 'cerebellar malformation', 'dilated cardiomyopathy 1i', 'familial hypoalphalipoproteinemia', 'dilated cardiomyopathy 1v', 'apolipoprotein a-i (milano)', 'syndromic retinitis pigmentosa', 'anophthalmia-microphthalmia syndrome', 'resistance to thyroid hormone due to a mutation in thyroid hormone receptor beta', 'apolipoprotein a-i (marburg)', 'idiopathic and/or familial pulmonary arterial hypertension', 'duchenne and becker muscular dystrophy', 'semilobar holoprosencephaly', 'male infertility with azoospermia or oligozoospermia due to single gene mutation', 'dilated cardiomyopathy 2b', 'autosomal dominant hereditary axonal motor and sensory neuropathy', 'htra1-related cerebral small vessel disease', 'primary bone dysplasia with increased bone density', 'brain malformation', 'brachycephaly', 'severe brain malformation', 'dilated cardiomyopathy 1l', 'familial isolated dilated cardiomyopathy', 'dilated cardiomyopathy 1x', 'short stature, microcephaly, and endocrine dysfunction', 'pura-related severe neonatal hypotonia-seizures-encephalopathy syndrome', 'spermatogenic failure 14', 'sagittal craniosynostosis', 'dilated cardiomyopathy 1hh', 'dilated cardiomyopathy 1g', 'dilated cardiomyopathy 1ii', 'bleeding diathesis due to thromboxane synthesis deficiency', 'sickle cell disease and related diseases', 'dilated cardiomyopathy 2a', 'syndromic anorectal malformation', 'qualitative or quantitative defects of myotubularin', 'apolipoprotein a-i (giessen)', 'dilated cardiomyopathy 1dd', 'non-syndromic male infertility due to sperm motility disorder', 'dilated cardiomyopathy 1cc', 'spermatogenic failure 13', 'dilated cardiomyopathy 1jj', 'inherited prion disease', 'imperforated anus', 'dilated cardiomyopathy 1z', 'arx-related epileptic encephalopathy', 'joint hyperflexibility', 'col4a1 or col4a2-related cerebral small vessel disease', 'dilated cardiomyopathy 1t'}\n", + "\n", + "Following terms were automated in 2024-07-02 but curated in 2024-10-11:\n", + "{'difficulty walking', 'low-set, posteriorly rotated ears'}\n", + "\n", + "Following terms were automated in 2024-10-11 but curated in 2025-01-16:\n", + "{'global developmental delay-neuro-ophthalmological abnormalities-seizures-intellectual disability syndrome', 'intellectual disability, autosomal dominant 55, with seizures'}\n", + "\n", + "Following terms were automated in 2025-04-15 but curated in 2025-06-20:\n", + "{'11p partial monosomy syndrome'}\n", + "\n", + "Following terms were automated in 2025-06-20 but curated in 2025-10-02:\n", + "{'hydrocephalus due to aqueductal stenosis', 'langereis blood group', 'plasma triglyceride level quantitative trait locus', 'methylmalonic acidemia with homocystinuria cblc', 'hypogonadotropic hypogonadism 15 with anosmia', 'polycystic kidney disease, adult type', 'increased responsiveness to growth hormone', 'renier-gabreels-jasper syndrome', 'pulmonary arterial hypertension related to hereditary hemorrhagic telangiectasia', 'short-rib thoracic dysplasia 10 with polydactyly', 'skin/hair/eye pigmentation, variation in, 10', 'sensorineural deafness and migraine', 'lissencephaly, recessive', 'hurthle cell carcinoma of thyroid', 'pten hamartoma tumor syndromes', 'warfarin sensitivity, x-linked', 'marfan syndrome, severe classic', 'long qt syndrome 2/3, digenic', 'niemann-pick disease, type d', 'skin/hair/eye pigmentation, variation in, 2', 'migraine, sporadic hemiplegic, with progressive cerebellar ataxia', 'setbp1-related disorder', 'pseudoachondroplasia, severe', 'lipoprotein lipase (olbia)', 'microtia with or without hearing impairment', 'pituitary dependent hypercortisolism', 'inherited immunodeficiency diseases', 'pelizaeus-merzbacher disease, mild', 'hypophosphatemic rickets, recessive', 'joint laxity', 'pex7-related disorder', 'papulosquamous eruptions', 'structural brain abnormalities', 'neuronal ceroid-lipofuscinosis, recessive', 'isolated coronal synostosis', 'neurodevelopmental disability', 'hutchinson-gilford progeria syndrome, atypical', 'late-onset citrullinemia', 'malignant rhabdoid tumor, somatic', 'psoriasis 2, pustular', 'voriconazole response', 'osteogenesis imperfecta type 2, thin-bone', 'smarca4-related bafopathy', 'nephrolithiasis/nephrocalcinosis', 'mandibuloacral dysplasia with type a lipodystrophy, atypical', 'progressive cone dystrophy (without rod involvement)', 'malformation of the heart and great vessels', 'nonsyndromic hearing loss, mixed', 'hypohidrotic ectodermal dysplasia, recessive', 'scid due to ada deficiency, delayed onset', 'piebaldism, progressive', 'long qt syndrome 2/9, digenic', 'properdin deficiency, type ii', 'macular dystrophy, retinal, 5', 'non-syndromic oligodontia', 'myocardial infarction, susceptibility to, 1', 'smarca2-related bafopathy', 'thrombocytopenia, x-linked, intermittent', 'rh-null, amorph type', 'retinitis pigmentosa, juvenile', 'usp7-related neurodevelopmental disorder', 'osteogenesis imperfecta type 1, mild', 'hypotrichosis with juvenile macular dystrophy', 'limb-girdle muscular dystrophy, dominant', 'von hippel-lindau syndrome, modifier of', 'mitochondrial cytopathy', 'intellectual disability, recessive', 'transient neonatal diabetes, recessive', 'primary microcephaly, recessive', 'rett syndrome, congenital variant', 'infantile epilepsy', 'ryr1-related disorder', 'phenytoin response', 'pacs1-related syndrome', 'multiple epiphyseal dysplasia, dominant', 'iodotyrosine deiodination defect', 'inherited erythromelalgia', 'muscle amp deaminase deficiency', 'pelizaeus-merzbacher disease, atypical', 'mannosidosis, alpha-, types i and ii', 'hypogonadotropic hypogonadism 26 with anosmia', 'limb-girdle muscular dystrophy, recessive', 'wfs1-related spectrum disorders', 'parkes weber syndrome', 'pazopanib response', 'spherocytosis, recessive', 'men2 phenotype: unclassified', 'transient neonatal diabetes, dominant', 'vater/vacterl association with cns malformations', 'van buchem disease type 2', 'skin/hair/eye pigmentation 2, blond hair/fair skin', 'marfan syndrome, mild', 'hypogonadotropic hypogonadism 20 without anosmia', 'isolated thoracic aortic aneurysm', 'thyroglobulin synthesis defect', 'mucopolysaccharidosis, type vi, intermediate', 'hypogonadotropic hypogonadism 2 with anosmia', 'long qt syndrome 3/6, digenic', 'mycotic aneurysm, intracranial', 'syndrome with a dandy-walker malformation as major feature', 'neurodevelopmental disorders', 'seizures, benign familial infantile, 6', 'hypogonadotropic hypogonadism 18 with anosmia', 'irinotecan response', 'ventricular tachycardia, somatic', 'spinocerebellar ataxia, x-linked', 'parathyroid adenoma, somatic', 'intellectual disability, dominant', 'leydig hypoplasia, type i', 'persistent mullerian duct syndrome, type ii', 'hypodysfibrinogenemia', 'peroxisomal biogenesis disorder 3b', 'idiopathic and/or familial pulmonary arterial hypertension', 'language retardation', 'stargardt disease, recessive', 'serum calcium level', 'polg2-related spectrum disorders', 'methylmalonic aciduria due to complete methylmalonyl-coa mutase deficiency', 'tyrosine kinase inhibitor response', 'lynch-like syndrome', 'methemoglobinemia, type i', 'kat6b-related disorder', 'ubtf-related disorder', 'migalastat response', 'methylmalonic aciduria, mut(-) type', 'intractable seizure', 'myotonia congenita, atypical, acetazolamide-responsive', 'pancreatic cancer, susceptibility to', 'osteogenesis imperfecta, type iii/iv', 'lipoatrophy with diabetes, hepatic steatosis, hypertrophic cardiomyopathy, and leukomelanodermic papules', 'hypertension, early-onset, autosomal dominant, with exacerbation in pregnancy', 'isolated gnrh deficiency', 'joubert syndrome 12/15, digenic', 'stevens-johnson syndrome, susceptibility to', 'mucopolysaccharidosis, type ii, mild form', 'malaria, severe, susceptibility to', 'poor coordination', 'thalassemia intermedia', 'methylmalonic aciduria and homocystinuria, cblc type, digenic', 'prkag2 syndrome', 'properdin deficiency, type iii', 'russell-silver syndrome', 'persistent mullerian duct syndrome, type i', 'isovaleric acidemia, type iii', 'tobacco use disorder', 'ugdh-related disorder', 'invasive medullary breast carcinoma', 'pelizaeus-merzbacher disease, connatal', 'hypogonadotropic hypogonadism 10 without anosmia', 'oculoectodermal syndrome, somatic', 'rlbp1-related disorder', 'magel2-related disorder', 'intermediate muscular dystrophy', 'severe brain malformation', 'myokymia 1', 'parkinson disease, dominant/recessive', 'leukemia, acute myeloid, reduced survival in, somatic', 'monogenic non-syndromic obesity', 'nonsyndromic otitis media', 'single ventricle defect', 'hypogonadotropic hypogonadism 8 without anosmia', 'mucopolysaccharidosis, type vi, severe', 'small vessel cerebrovascular disease', 'primary degenerative dementia of the alzheimer type, presenile onset', 'severe combined immunodeficiency, b cell-negative', 'sertraline response', 'retinitis punctata albescens, autosomal dominant', 'ovarian dysgenesis', 'ventral septal defect', 'leukemia, acute myeloid, m0 subtype', 'spastic paraplegia, autosomal dominant', 'intellectual disability, cask-related, x-linked', 'isolated hereditary giant platelet disorder', 'nemaline myopathy, recessive', 'lesch-nyhan syndrome, neurologic variant', 'left ventricular noncompaction 3', 'hypereosinophilic syndrome, idiopathic, resistant to imatinib', 'multiple congenital anomalies', 'short-rib thoracic dysplasia 10 without polydactyly', 'robinow syndrome, autosomal recessive, with brachy-syn-polydactyly', 'spina bifida, susceptibility to', 'myh9-related disorder', 'porphyria, acute intermittent, nonerythroid variant', 'isolated nonsyndromic congenital heart disease', 'hypogonadotropic hypogonadism 5 without anosmia', 'moyamoya angiopathy', 'waardenburg syndrome type 2e, without neurologic involvement', 'normokalemic periodic paralysis, potassium-sensitive', 'mitochondrial complex i deficiency, mitochondrial type 2', 'optic nerve hypoplasia and abnormalities of the central nervous system', 'pfeiffer syndrome variant', 'mycobacterium tuberculosis, susceptibility to infection by', 'satb2-associated syndrome', 'impaired social interactions', 'prkag2 cardiac syndrome', 'marshall/stickler syndrome', 'isovaleric acidemia, type ii', 'metachromatic leukodystrophy, severe', 'long qt syndrome 1/2, digenic', 'sleep-wake schedule disorder, delayed phase type', 'short qt syndrome 4', 'renal agenesis and hypodysplasia', 'zonular pulverulent cataract', 'vexas', 'hypogonadotropic hypogonadism 3 without anosmia', 'wars2-related disorder', 'type ii collagenopathies', 'ovarian cancers', 'retinitis pigmentosa, dominant', 'wdr26-related disorder', 'hypogonadotropic hypogonadism 22 with anosmia', 'nonsyndromic hearing loss, dominant', 'skin/hair/eye pigmentation, variation in, 4', 'severe intellectual deficiency', 'methylmalonic aciduria, mut(0) type', 'retinitis pigmentosa, recessive', 'tmem67-related disorder', 'refsum disease, adult, 1', 'iminoglycinuria, digenic', 'juvenile polyposis', 'isovaleric acidemia, type i', 'slc26a2-related disorder', 'myo7a-related disorder', 'joubert syndrome 12', 'wiskott-aldrich syndrome, attenuated', 'hypogonadotropic hypogonadism 14 with anosmia', 'sphingolipid activator protein 1 deficiency', 'myoclonic encephalopathy', 'short qt syndrome 5', 'xeroderma pigmentosum group g/cockayne syndrome', 'warfarin response', 'microphthalmia, cataracts, and iris abnormalities', 'subcortical laminar heterotopia, x-linked', 'nonsyndromic cleft lip palate', 'mycobacterium tuberculosis, susceptibility to', 'spherocytosis, dominant', 'rheumatoid arthritis, progression of', 'severe cystic degeneration of the brain', 'progressive neurodegenerative disease', 'mild obesity', 'marfan syndrome, atypical', 'invasive pneumococcal disease, recurrent isolated', 'tlk2-related neurodevelopmental disorder', 'hypohidrotic ectodermal dysplasia, dominant', 'macular corneal dystrophy, type ii', 'multiple joint dislocations, short stature, craniofacial dysmorphism, with or without congenital heart defects', 'osteopoikilosis with or without melorheostosis', 'inclusion body myopathy, recessive', 'marfan syndrome, mild variable', 'normal pregnancy', 'megacystis-microcolon hypoperistalsis syndrome 1', 'mucopolysaccharidosis, type vi, mild', 'low-set, posteriorly rotated ears', 'mastocytosis, systemic, somatic', 'intellectual disability with language impairment and autistic features', 'smith-magenis syndrome-like', 'sparse and thin eyebrow', 'metachromatic leukodystrophy, mild', 'plasma factor xi deficiency', 'usher syndrome, type id/f, digenic', 'niemann-pick disease, type c1, juvenile form', 'optic atrophy, dominant', 'leukemia, acute lymphoblastic, susceptibility to', 'infantile hypercalcemia', 'male infertility due to obstructive azoospermia', 'menkes disease, mild', 'polg-related spectrum disorders', 'nonsyndromic oculocutaneous albinism', 'sandhoff disease, chronic', 'joubert syndrome 9/15, digenic', 'nephronophthisis-like nephropathy', 'rhabdomyosarcoma, somatic', 'warfarin response - dosage', 'ocular albinism with congenital sensorineural hearing loss', 'prph2-related disorder', 'rrm2b-related mitochondrial disease', 'retinal dystrophy, early-onset severe, lrat-related', 'hyperinsulinism, dominant', 'joint hyperflexibility', 'pyruvate carboxylase deficiency', 'infantile axial hypotonia', 'skin/hair/eye pigmentation, variation in, 8', 'intellectual deficiency', 'nonsyndromic hearing loss and deafness, autosomal recessive', 'macular degeneration, age-related, neovascular type', 'severe microlissencephaly', 'spastic paraplegia, recessive', 'zap70-related severe combined immunodeficiency', 'nr2e3-related disorder', 'sepn1-related disorder', 'nephronophthisis 8', 'mucolipidosis iii alpha/beta, atypical', 'tramadol response', 'pallister-killian syndrome', 'thyroid dyshormonogenesis', 'mitochondrial complex i deficiency, mitochondrial type 3', 'ivacaftor response - efficacy', 'leigh syndrome due to mitochondrial complex i deficiency', 'poor motor coordination', 'muscular dystrophy, congenital, merosin deficient or partially deficient', 'prednisolone response'}\n", + "\n" + ] + } + ], + "source": [ + "for i in range(1, len(dates)):\n", + " moved_terms = automated_terms_through_time[i-1].intersection(curated_terms_through_time[i])\n", + " if moved_terms:\n", + " print(f'Following terms were automated in {dates[i-1]} but curated in {dates[i]}:')\n", + " print(moved_terms)\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "id": "a7b2f393-15b0-4939-a572-369c60912d8b", + "metadata": { + "tags": [] + }, + "source": [ + "Manually checked some of these by searching for them in the relevant curation spreadsheet and seeing how they were annotated there. Some findings:\n", + "\n", + "* Besides June and October 2025, most of the above traits that I've checked manually were moved from automated to needing curation due to mappings being deprecated.\n", + " * This includes the large batch in January 2024, which I believe is when EFO did some large-scale deprecations (I haven't checked all these terms though).\n", + " * A notable exception is `qualitative or quantitative defects of beta-myosin heavy chain (myh7)` => `MONDO_0016195`, which was automated in 2023-06-06 but [curated in 2023-07-24](https://docs.google.com/spreadsheets/d/1IYfPY_K0aPsVwH9usVb2U2eUft1_yls5RWXxy-lq1SU/edit?gid=88027652#gid=88027652&range=6100:6100), at which point it was given the same mapping as previous. This is when the spreadsheet still reported Zooma confidence, so we can see explicitly that the Zooma confidence for the mapping was `GOOD` rather than `HIGH`.\n", + " * The July 2023 curation spreadsheet provides a good example of what I remember seeing: lots of previous mappings which are still going through curation with Zooma confidence `GOOD`. I don't understand why this would be the case, maybe a Zooma issue?\n", + " * One example is `nephronophthisis` which disappears from automated mappings throughout 2023 despite always being present in our final latest_mappings file:\n", + "\n", + "```\n", + "$ grep -Pie '^nephronophthisis\\t' */automated_trait_mappings.tsv \n", + "2022-02-03_test/automated_trait_mappings.tsv:nephronophthisis http://www.orpha.net/ORDO/Orphanet_655 Nephronophthisis\n", + "2022-03-03/automated_trait_mappings.tsv:nephronophthisis http://www.orpha.net/ORDO/Orphanet_655 Nephronophthisis\n", + "2022-05-11/automated_trait_mappings.tsv:nephronophthisis http://www.orpha.net/ORDO/Orphanet_655 Nephronophthisis\n", + "2022-08-18/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2022-10-17_test/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-01-19/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-04-11/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-07-02/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-09-05_test/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-10-11/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-01-16/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-02-25_test/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-04-15/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-06-20/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-06-20/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/HP_0000090 Nephronophthisis\n", + "2025-10-02/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/HP_0000090 Nephronophthisis\n", + "2025-10-02/automated_trait_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "\n", + "$ grep -Pie '^nephronophthisis\\t' */trait_names_to_ontology_mappings.tsv\n", + "2022-02-03_test/trait_names_to_ontology_mappings.tsv:nephronophthisis http://www.orpha.net/ORDO/Orphanet_655 Nephronophthisis\n", + "2022-03-03/trait_names_to_ontology_mappings.tsv:nephronophthisis http://www.orpha.net/ORDO/Orphanet_655 Nephronophthisis\n", + "2022-05-11/trait_names_to_ontology_mappings.tsv:nephronophthisis http://www.orpha.net/ORDO/Orphanet_655 Nephronophthisis\n", + "2022-08-18/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2022-10-17_test/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2023-01-09/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2023-03-01/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2023-05-26_test/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2023-06-06/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2023-07-24/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2023-10-03/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-01-19/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-04-11/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-07-02/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2024-10-11/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-01-16/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-04-15/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-06-20/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/HP_0000090 Nephronophthisis\n", + "2025-06-20/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "2025-10-02/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/HP_0000090 Nephronophthisis\n", + "2025-10-02/trait_names_to_ontology_mappings.tsv:nephronophthisis http://purl.obolibrary.org/obo/MONDO_0019005 nephronophthisis\n", + "```\n", + "\n", + "* For June and October 2025, most mappings I've checked were NOT deprecated, but returned to needing curation for an unknown reason. Since the spreadsheet no longer reports Zooma confidence, we can't confirm what the Zooma confidence was at the time of spreadsheet generation, since we've now provided Zooma feedback for the October batch and it may be incorporated already.\n", + " * For example, `severe cystic degeneration of the brain` => `HP_0007313`, which was an automated mapping through 2025-06-20 but had to go through [curation in 2025-10-02](https://docs.google.com/spreadsheets/d/1dYIHJ4QfC8cjCwJFzXnYzLglmg2V7h4wIicRqIVqxdg/edit?gid=88027652#gid=88027652&range=6279:6279), at which point it was given the same mapping as previous.\n", + " * Around June 2025 was the major revamp of the manual curation pipeline ([see PR](https://github.com/EBIvariation/CMAT/pull/465)), so maybe the influx of \"previously automated, now curated\" terms indicates an issue in the new pipeline. We should definitely look into this.\n", + " \n", + "Basically, my conclusion here is that due to a potential problem in the new pipeline, as well as uncertainty around how Zooma behaves and how reliable it is, we should for now maintain our memory of previous mappings including automated ones, and not rely solely on Zooma for this." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "38f44bcd-7778-4b5a-a432-22e88ee1ceee", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "my-pyenv", + "language": "python", + "name": "my-pyenv" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tests/trait_mapping/test_main.py b/tests/trait_mapping/test_main.py index 1821595e..5afa8578 100644 --- a/tests/trait_mapping/test_main.py +++ b/tests/trait_mapping/test_main.py @@ -91,7 +91,7 @@ def test_ols_exact_match(self): # Only goes through OLS as it finds an exact match in EFO trait = Trait('chédiak-higashi syndrome', None, None) processed_trait = self.run_process_trait(trait) - assert len(processed_trait.ols_result_list) == 3 + assert len(processed_trait.ols_result_list) == 8 assert processed_trait.is_finished def test_zooma_high_confidence(self):