{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Demonstrates mapping between GO GAF Codes (IEA, ISS, etc) and ECO classes.\n",
    "\n",
    "See http://purl.obolibrary.org/obo/eco/gaf-eco-mapping.txt\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "## Create an EcoMap object, for mapping to and from ECO classes\n",
    "from ontobio.ecomap import EcoMap\n",
    "m = EcoMap()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "## Create an ontology object for ECO;\n",
    "## This is optional; we use this in this notebook\n",
    "## to look up ECO class labels, and parentage\n",
    "from ontobio.ontol_factory import OntologyFactory\n",
    "ontol = OntologyFactory().create('eco')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'ECO:0000501'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Given a code 'IEA' and no further information, map it\n",
    "m.coderef_to_ecoclass('IEA')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Including a specific reference, such as [GO_REF:000002 Gene Ontology annotation through association of InterPro records with GO terms](http://purl.obolibrary.org/obo/go/references/0000002) can increase the specificity of the mapping"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'ECO:0000256'"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Given a combination of a code plus a reference,\n",
    "## we can map this to a more precise evidence type\n",
    "cls = m.coderef_to_ecoclass('IEA','GO_REF:0000002')\n",
    "cls"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'match to sequence model evidence used in automatic assertion'"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ontol.label(cls)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[\"ECO:0000202 'match to sequence model evidence'\",\n",
       " \"ECO:0000501 'evidence used in automatic assertion'\",\n",
       " \"ECO:0000044 'sequence similarity evidence'\",\n",
       " \"ECO:0000000 'evidence'\",\n",
       " \"ECO:0000249 'sequence similarity evidence used in automatic assertion'\",\n",
       " \"ECO:0000203 'automatic assertion'\",\n",
       " \"ECO:0000041 'similarity evidence'\",\n",
       " \"ECO:0000217 'assertion method'\",\n",
       " \"ECO:0000251 'similarity evidence used in automatic assertion'\"]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[\"{} '{}'\".format(c, ontol.label(c)) for c in ontol.ancestors(cls)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('IEA', None)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m.ecoclass_to_coderef('ECO:0000501')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('IEA', 'GO_REF:0000002')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m.ecoclass_to_coderef('ECO:0000256')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "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.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}