{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true, "nbsphinx": "hidden" }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Filtering" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Operations looking to remove compounds from a collection are implemented as `Filter`s in **scikit-chem**. These are implemented in the `skchem.filters` packages:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['ChiralFilter',\n", " 'SMARTSFilter',\n", " 'PAINSFilter',\n", " 'ElementFilter',\n", " 'OrganicFilter',\n", " 'AtomNumberFilter',\n", " 'MassFilter',\n", " 'Filter']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "skchem.filters.__all__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They are used very much like `Transformer`s:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "of = skchem.filters.OrganicFilter()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [], "source": [ "benzene = skchem.Mol.from_smiles('c1ccccc1', name='benzene')\n", "ferrocene = skchem.Mol.from_smiles('[cH-]1cccc1.[cH-]1cccc1.[Fe+2]', name='ferrocene')\n", "norbornane = skchem.Mol.from_smiles('C12CCC(C2)CC1', name='norbornane')\n", "dicyclopentadiene = skchem.Mol.from_smiles('C1C=CC2C1C3CC2C=C3')\n", "ms = [benzene, ferrocene, norbornane, dicyclopentadiene]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", "OrganicFilter: 25% (1 of 4) |############ | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "OrganicFilter: 50% (2 of 4) |######################## | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "OrganicFilter: 75% (3 of 4) |#################################### | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "OrganicFilter: 100% (4 of 4) |#################################################| Elapsed Time: 0:00:00 Time: 0:00:00\n" ] }, { "data": { "text/plain": [ "benzene \n", "norbornane \n", "3 \n", "Name: structure, dtype: object" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "of.filter(ms)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Filter`s essentially use a *predicate* function to decide whether to keep or remove instances. The result of this function can be returned using `transform`:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", "OrganicFilter: 25% (1 of 4) |############ | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "OrganicFilter: 50% (2 of 4) |######################## | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "OrganicFilter: 75% (3 of 4) |#################################### | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "OrganicFilter: 100% (4 of 4) |#################################################| Elapsed Time: 0:00:00 Time: 0:00:00\n" ] }, { "data": { "text/plain": [ "benzene True\n", "ferrocene False\n", "norbornane True\n", "3 True\n", "dtype: bool" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "of.transform(ms)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Filters are Transformers\n", "\n", "As `Filter`s have a transform method, they are themselves `Transformer`s, that transform a molecule into the result of the predicate!" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "issubclass(skchem.filters.Filter, skchem.base.Transformer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The predicate functions should return `None`, `False` or `np.nan` for negative results, and anything else for positive results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating your own Filter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can create your own filter by passing a predicate function to the `Filter` class. For example, perhaps you only wanted compounds to keep compounds that had a name:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "is_named = skchem.filters.Filter(lambda m: m.name is not None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We carelessly did not set dicyclopentadiene's name previously, so we want this to get filtered out:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", "Filter: 25% (1 of 4) |############## | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "Filter: 50% (2 of 4) |############################ | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "Filter: 75% (3 of 4) |########################################## | Elapsed Time: 0:00:00 ETA: 0:00:00\r", "Filter: 100% (4 of 4) |########################################################| Elapsed Time: 0:00:00 Time: 0:00:00\n" ] }, { "data": { "text/plain": [ "benzene \n", "ferrocene \n", "norbornane \n", "Name: structure, dtype: object" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "is_named.filter(ms)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It worked!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Transforming and Filtering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A common functionality in cheminformatics is to convert a molecule into *something else*, and if the conversion fails, to just remove the compound. An example of this is **standardization**, where one might want to throw away compounds that fail to standardize, or **geometry optimization** where one might throw away molecules that fail to converge.\n", "\n", "This functionality is similar to but crucially **different from simply `filtering`**, as filtering returns the original compounds, rather than the transformed compounds. Instead, there are special `Filter`s, called `TransformFilter`s, that can perform this task in a single method call. To give an example of the functionality, we will use the `UFF` class:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "issubclass(skchem.forcefields.UFF, skchem.filters.base.TransformFilter)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They are instanciated the same way as normal `Transformers` and `Filter`s:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [], "source": [ "uff = skchem.forcefields.UFF()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An example molecule that fails is taken from the NCI DTP Diversity set III:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "mol_that_fails = skchem.Mol.from_smiles('C[C@H](CCC(=O)O)[C@H]1CC[C@@]2(C)[C@@H]3C(=O)C[C@H]4C(C)(C)[C@@H](O)CC[C@]4(C)[C@H]3C(=O)C[C@]12C', \n", " name='7524')" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "skchem.vis.draw(mol_that_fails)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ms.append(mol_that_fails)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/rich/projects/scikit-chem/skchem/forcefields/base.py:54: UserWarning: Failed to Embed Molecule 7524\n", " warnings.warn(msg)\n", "UFF: 100% (5 of 5) |###########################################################| Elapsed Time: 0:00:01 Time: 0:00:01\n" ] }, { "data": { "text/plain": [ "benzene \n", "ferrocene \n", "norbornane \n", "3 \n", "Name: structure, dtype: object" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res = uff.filter(ms); res" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. note::\n", " \n", " `filter` returns the *original* molecules, which have **not** been optimized:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "skchem.vis.draw(res.ix[3])" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/rich/projects/scikit-chem/skchem/forcefields/base.py:54: UserWarning: Failed to Embed Molecule 7524\n", " warnings.warn(msg)\n", "UFF: 100% (5 of 5) |###########################################################| Elapsed Time: 0:00:01 Time: 0:00:01\n" ] }, { "data": { "text/plain": [ "benzene \n", "ferrocene " ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "skchem.vis.draw(res.ix[3])" ] } ], "metadata": { "celltoolbar": "Raw Cell Format", "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.1" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 0 }