diff options
author | Navan Chauhan <navanchauhan@gmail.com> | 2021-05-26 23:58:29 +0530 |
---|---|---|
committer | Navan Chauhan <navanchauhan@gmail.com> | 2021-05-26 23:58:29 +0530 |
commit | bfd3a825c2d73bd842769cdfaf11ad0319a3bd6e (patch) | |
tree | 7b2c052bdf539f433ed3ab6bd133b6d46c7ff7e5 /Content/posts/2020-07-01-Install-rdkit-colab.md | |
parent | 2cb28c0dd749611e6edd4688955769bda3381453 (diff) |
added code and content
Diffstat (limited to 'Content/posts/2020-07-01-Install-rdkit-colab.md')
-rw-r--r-- | Content/posts/2020-07-01-Install-rdkit-colab.md | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/Content/posts/2020-07-01-Install-rdkit-colab.md b/Content/posts/2020-07-01-Install-rdkit-colab.md new file mode 100644 index 0000000..c456aa8 --- /dev/null +++ b/Content/posts/2020-07-01-Install-rdkit-colab.md @@ -0,0 +1,100 @@ +--- +date: 2020-07-01 14:23 +description: Install RDKit on Google Colab with one code snippet. +tags: Tutorial, Code-Snippet, Colab +--- + +# Installing RDKit on Google Colab + +RDKit is one of the most integral part of any Cheminfomatic specialist's toolkit but it is notoriously difficult to install unless you already have `conda` installed. I originally found this in a GitHub Gist but I have not been able to find that gist again :/ + +Just copy and paste this in a Colab cell and it will install it 👍 + +```python +import sys +import os +import requests +import subprocess +import shutil +from logging import getLogger, StreamHandler, INFO + + +logger = getLogger(__name__) +logger.addHandler(StreamHandler()) +logger.setLevel(INFO) + + +def install( + chunk_size=4096, + file_name="Miniconda3-latest-Linux-x86_64.sh", + url_base="https://repo.continuum.io/miniconda/", + conda_path=os.path.expanduser(os.path.join("~", "miniconda")), + rdkit_version=None, + add_python_path=True, + force=False): + """install rdkit from miniconda + ``` + import rdkit_installer + rdkit_installer.install() + ``` + """ + + python_path = os.path.join( + conda_path, + "lib", + "python{0}.{1}".format(*sys.version_info), + "site-packages", + ) + + if add_python_path and python_path not in sys.path: + logger.info("add {} to PYTHONPATH".format(python_path)) + sys.path.append(python_path) + + if os.path.isdir(os.path.join(python_path, "rdkit")): + logger.info("rdkit is already installed") + if not force: + return + + logger.info("force re-install") + + url = url_base + file_name + python_version = "{0}.{1}.{2}".format(*sys.version_info) + + logger.info("python version: {}".format(python_version)) + + if os.path.isdir(conda_path): + logger.warning("remove current miniconda") + shutil.rmtree(conda_path) + elif os.path.isfile(conda_path): + logger.warning("remove {}".format(conda_path)) + os.remove(conda_path) + + logger.info('fetching installer from {}'.format(url)) + res = requests.get(url, stream=True) + res.raise_for_status() + with open(file_name, 'wb') as f: + for chunk in res.iter_content(chunk_size): + f.write(chunk) + logger.info('done') + + logger.info('installing miniconda to {}'.format(conda_path)) + subprocess.check_call(["bash", file_name, "-b", "-p", conda_path]) + logger.info('done') + + logger.info("installing rdkit") + subprocess.check_call([ + os.path.join(conda_path, "bin", "conda"), + "install", + "--yes", + "-c", "rdkit", + "python=={}".format(python_version), + "rdkit" if rdkit_version is None else "rdkit=={}".format(rdkit_version)]) + logger.info("done") + + import rdkit + logger.info("rdkit-{} installation finished!".format(rdkit.__version__)) + + +if __name__ == "__main__": + install() +``` |