From 8269c2c5f58570150edc259eb57578eb113dccff Mon Sep 17 00:00:00 2001 From: dvklopfenstein Date: Thu, 14 Feb 2019 12:24:05 -0500 Subject: [PATCH] Added more info for Lin's similarity score https://github.com/tanghaibao/goatools/issues/120 --- goatools/gosubdag/gosubdag.py | 1 - notebooks/images/nb_lin_go.png | Bin 0 -> 83372 bytes notebooks/semantic_similarity.ipynb | 98 ++++++++++++++++++++-------- tests/semantic_i88.py | 18 ++--- 4 files changed, 81 insertions(+), 36 deletions(-) create mode 100644 notebooks/images/nb_lin_go.png diff --git a/goatools/gosubdag/gosubdag.py b/goatools/gosubdag/gosubdag.py index ad071fb9..d544e6c3 100644 --- a/goatools/gosubdag/gosubdag.py +++ b/goatools/gosubdag/gosubdag.py @@ -17,7 +17,6 @@ class GoSubDag(object): """Manages a user-specified subset of a GO DAG.""" - def __init__(self, go_sources, go2obj, relationships=None, **kws): # kws _Init: rcntobj relationships # tic = timeit.default_timer() diff --git a/notebooks/images/nb_lin_go.png b/notebooks/images/nb_lin_go.png new file mode 100644 index 0000000000000000000000000000000000000000..a2653e55aa6a8b7cf0a319460de047d57006f696 GIT binary patch literal 83372 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 vqA_?);NO#K_j!c=JxQ$*Q}*vU+0?Uh4ZH;\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -107,21 +151,21 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "The semantic similarity between terms GO:0048364 and GO:0044707 is 0.2.\n" + "The semantic similarity between terms GO:0048364 and GO:0032501 is 0.2.\n" ] } ], "source": [ "from goatools.semantic import semantic_similarity\n", "\n", - "sim = semantic_similarity(go_id3, go_id4, go)\n", + "sim = semantic_similarity(go_id3, go_id4, godag)\n", "print('The semantic similarity between terms {} and {} is {}.'.format(go_id3, go_id4, sim))" ] }, @@ -134,14 +178,14 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Information content (GO:0048364) = 7.563008960488486\n" + "Information content (GO:0048364) = 7.561470454226915\n" ] } ], @@ -149,7 +193,7 @@ "from goatools.semantic import TermCounts, get_info_content\n", "\n", "# First get the counts of each GO term.\n", - "termcounts = TermCounts(go, associations)\n", + "termcounts = TermCounts(godag, associations)\n", "\n", "# Calculate the information content\n", "go_id = \"GO:0048364\"\n", @@ -166,21 +210,21 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Resnik similarity score (GO:0048364, GO:0044707) = 3.2948111361632906\n" + "Resnik similarity score (GO:0048364, GO:0032501) = 3.2954984390672677\n" ] } ], "source": [ "from goatools.semantic import resnik_sim\n", "\n", - "sim_r = resnik_sim(go_id3, go_id4, go, termcounts)\n", + "sim_r = resnik_sim(go_id3, go_id4, godag, termcounts)\n", "print('Resnik similarity score ({}, {}) = {}'.format(go_id3, go_id4, sim_r))" ] }, @@ -201,21 +245,21 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Lin similarity score (GO:0048364, GO:0044707) = -0.5053524651601573\n" + "Lin similarity score (GO:0048364, GO:0032501) = -0.5055771852871896\n" ] } ], "source": [ "from goatools.semantic import lin_sim\n", "\n", - "sim_l = lin_sim(go_id3, go_id4, go, termcounts)\n", + "sim_l = lin_sim(go_id3, go_id4, godag, termcounts)\n", "print('Lin similarity score ({}, {}) = {}'.format(go_id3, go_id4, sim_l))" ] } diff --git a/tests/semantic_i88.py b/tests/semantic_i88.py index 29b19b62..dda5d5e8 100755 --- a/tests/semantic_i88.py +++ b/tests/semantic_i88.py @@ -6,9 +6,11 @@ import os from goatools import obo_parser +from goatools.gosubdag.gosubdag import GoSubDag from goatools.associations import dnld_assc from goatools.semantic import semantic_similarity from goatools.semantic import TermCounts, get_info_content +from goatools.semantic import deepest_common_ancestor from goatools.semantic import resnik_sim from goatools.semantic import lin_sim @@ -18,26 +20,26 @@ def test_semantic_i88(): """Computing basic semantic similarities between GO terms.""" godag = obo_parser.GODag("go-basic.obo") + goids = set(go for go, o in godag.items() if go == o.id) + goids = set(godag.keys()) # Get all the annotations from arabidopsis. fin_gaf = os.path.join(REPO, "tair.gaf") # dnld_assc includes read_gaf associations = dnld_assc(fin_gaf, godag, prt=None) + # First get the counts and information content for each GO term. + termcounts = TermCounts(godag, associations) + gosubdag = GoSubDag(goids, godag, tcntobj=termcounts) + # Now we can calculate the semantic distance and semantic similarity, as so: # "The semantic similarity between terms GO:0048364 and GO:0044707 is 0.25. go_id3 = 'GO:0048364' # BP level-03 depth-04 root development go_id4 = 'GO:0044707' # BP level-02 depth-02 single-multicellular organism process + go_root = deepest_common_ancestor([go_id3, go_id4], godag) sim = semantic_similarity(go_id3, go_id4, godag) print('\nThe semantic similarity between terms {GO1} and {GO2} is {VAL}.'.format( GO1=go_id3, GO2=go_id4, VAL=sim)) - print(godag[go_id3]) - print(godag[go_id4]) - - # Then we can calculate the information content of the single term, GO:0048364. - # "Information content (GO:0048364) = 7.75481392334 - - # First get the counts of each GO term. - termcounts = TermCounts(godag, associations) + gosubdag.prt_goids([go_root, go_id3, go_id4]) # Calculate the information content go_id = "GO:0048364"