From d3d3c7afdb8fba58bb549c357c9d8ea365897c72 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 24 Jan 2021 11:57:46 +0100 Subject: [PATCH 01/55] inital code dump --- .../compounds/standardization/__init__.py | 27 + .../compounds/standardization/_version.py | 556 ++++++++++++++++++ .../standardization/assign_stereochemistry.py | 23 + .../standardization/convert_format.py | 156 +++++ .../standardization/detect_inorganic.py | 43 ++ .../standardization/disconnect_metals.py | 24 + .../standardization/handle_charges.py | 41 ++ .../standardization/handle_fragments.py | 47 ++ .../standardization/handle_hydrogens.py | 25 + .../standardization/handle_tautomers.py | 58 ++ .../standardization/normalize_molecules.py | 32 + .../compounds/standardization/remove_salts.py | 80 +++ .../standardization/sanitize_molecules.py | 22 + .../standardization/standardization.py | 34 ++ opencadd/compounds/standardization/utils.py | 21 + .../standardization/validate_molecules.py | 175 ++++++ 16 files changed, 1364 insertions(+) create mode 100644 opencadd/compounds/standardization/__init__.py create mode 100644 opencadd/compounds/standardization/_version.py create mode 100644 opencadd/compounds/standardization/assign_stereochemistry.py create mode 100644 opencadd/compounds/standardization/convert_format.py create mode 100644 opencadd/compounds/standardization/detect_inorganic.py create mode 100644 opencadd/compounds/standardization/disconnect_metals.py create mode 100644 opencadd/compounds/standardization/handle_charges.py create mode 100644 opencadd/compounds/standardization/handle_fragments.py create mode 100644 opencadd/compounds/standardization/handle_hydrogens.py create mode 100644 opencadd/compounds/standardization/handle_tautomers.py create mode 100644 opencadd/compounds/standardization/normalize_molecules.py create mode 100644 opencadd/compounds/standardization/remove_salts.py create mode 100644 opencadd/compounds/standardization/sanitize_molecules.py create mode 100644 opencadd/compounds/standardization/standardization.py create mode 100644 opencadd/compounds/standardization/utils.py create mode 100644 opencadd/compounds/standardization/validate_molecules.py diff --git a/opencadd/compounds/standardization/__init__.py b/opencadd/compounds/standardization/__init__.py new file mode 100644 index 00000000..3b51307e --- /dev/null +++ b/opencadd/compounds/standardization/__init__.py @@ -0,0 +1,27 @@ +""" +standardization +A tool to standardize compounds. +""" + +# Add imports here +from .standardization import * +from .assign_stereochemistry import * +from .convert_format import * +from .detect_inorganic import * +from .disconnect_metals import * +from .handle_charges import * +from .handle_fragments import * +from .handle_hydrogens import * +from .normalize_molecules import * +from .remove_salts import * +from .sanitize_molecules import * +from .validate_molecules import * + + +# Handle versioneer +from ._version import get_versions + +versions = get_versions() +__version__ = versions["version"] +__git_revision__ = versions["full-revisionid"] +del get_versions, versions diff --git a/opencadd/compounds/standardization/_version.py b/opencadd/compounds/standardization/_version.py new file mode 100644 index 00000000..8038dfd1 --- /dev/null +++ b/opencadd/compounds/standardization/_version.py @@ -0,0 +1,556 @@ +# This file helps to compute a version number in source trees obtained from +# git-archive tarball (such as those provided by githubs download-from-tag +# feature). Distribution tarballs (built by setup.py sdist) and build +# directories (produced by setup.py build) will contain a much shorter file +# that just contains the computed version number. + +# This file is released into the public domain. Generated by +# versioneer-0.18 (https://github.com/warner/python-versioneer) + +"""Git implementation of _version.py.""" + +import errno +import os +import re +import subprocess +import sys + + +def get_keywords(): + """Get the keywords needed to look up the version information.""" + # these strings will be replaced by git during git-archive. + # setup.py/versioneer.py will grep for the variable names, so they must + # each be defined on a line of their own. _version.py will just call + # get_keywords(). + git_refnames = "$Format:%d$" + git_full = "$Format:%H$" + git_date = "$Format:%ci$" + keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} + return keywords + + +class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + + +def get_config(): + """Create, populate and return the VersioneerConfig() object.""" + # these strings are filled in when 'setup.py versioneer' creates + # _version.py + cfg = VersioneerConfig() + cfg.VCS = "git" + cfg.style = "pep440" + cfg.tag_prefix = "" + cfg.parentdir_prefix = "None" + cfg.versionfile_source = "standardizer/_version.py" + cfg.verbose = False + return cfg + + +class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +LONG_VERSION_PY = {} +HANDLERS = {} + + +def register_vcs_handler(vcs, method): # decorator + """Decorator to mark a method as the handler for a particular VCS.""" + + def decorate(f): + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} + HANDLERS[vcs][method] = f + return f + + return decorate + + +def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None): + """Call the given command(s).""" + assert isinstance(commands, list) + p = None + for c in commands: + try: + dispcmd = str([c] + args) + # remember shell=False, so use git.cmd on windows, not just git + p = subprocess.Popen( + [c] + args, + cwd=cwd, + env=env, + stdout=subprocess.PIPE, + stderr=(subprocess.PIPE if hide_stderr else None), + ) + break + except EnvironmentError: + e = sys.exc_info()[1] + if e.errno == errno.ENOENT: + continue + if verbose: + print("unable to run %s" % dispcmd) + print(e) + return None, None + else: + if verbose: + print("unable to find command, tried %s" % (commands,)) + return None, None + stdout = p.communicate()[0].strip() + if sys.version_info[0] >= 3: + stdout = stdout.decode() + if p.returncode != 0: + if verbose: + print("unable to run %s (error)" % dispcmd) + print("stdout was %s" % stdout) + return None, p.returncode + return stdout, p.returncode + + +def versions_from_parentdir(parentdir_prefix, root, verbose): + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both + the project name and a version string. We will also support searching up + two directory levels for an appropriately named parent directory + """ + rootdirs = [] + + for i in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return { + "version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, + "error": None, + "date": None, + } + else: + rootdirs.append(root) + root = os.path.dirname(root) # up a level + + if verbose: + print( + "Tried directories %s but none started with prefix %s" + % (str(rootdirs), parentdir_prefix) + ) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + +@register_vcs_handler("git", "get_keywords") +def git_get_keywords(versionfile_abs): + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. + keywords = {} + try: + f = open(versionfile_abs, "r") + for line in f.readlines(): + if line.strip().startswith("git_refnames ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["refnames"] = mo.group(1) + if line.strip().startswith("git_full ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["full"] = mo.group(1) + if line.strip().startswith("git_date ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["date"] = mo.group(1) + f.close() + except EnvironmentError: + pass + return keywords + + +@register_vcs_handler("git", "keywords") +def git_versions_from_keywords(keywords, tag_prefix, verbose): + """Get version information from git keywords.""" + if not keywords: + raise NotThisMethod("no keywords at all, weird") + date = keywords.get("date") + if date is not None: + # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because + # it's been around since git-1.5.3, and it's too difficult to + # discover which version we're using, or to work around using an + # older one. + date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + refnames = keywords["refnames"].strip() + if refnames.startswith("$Format"): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") + refs = set([r.strip() for r in refnames.strip("()").split(",")]) + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " + tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %d + # expansion behaves like git log --decorate=short and strips out the + # refs/heads/ and refs/tags/ prefixes that would let us distinguish + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". + tags = set([r for r in refs if re.search(r"\d", r)]) + if verbose: + print("discarding '%s', no digits" % ",".join(refs - tags)) + if verbose: + print("likely tags: %s" % ",".join(sorted(tags))) + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] + if verbose: + print("picking %s" % r) + return { + "version": r, + "full-revisionid": keywords["full"].strip(), + "dirty": False, + "error": None, + "date": date, + } + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") + return { + "version": "0+unknown", + "full-revisionid": keywords["full"].strip(), + "dirty": False, + "error": "no suitable tags", + "date": None, + } + + +@register_vcs_handler("git", "pieces_from_vcs") +def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* + expanded, and _version.py hasn't already been rewritten with a short + version string, meaning we're inside a checked out source tree. + """ + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + + out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True) + if rc != 0: + if verbose: + print("Directory %s not under git control" % root) + raise NotThisMethod("'git rev-parse --git-dir' returned error") + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) + describe_out, rc = run_command( + GITS, + [ + "describe", + "--tags", + "--dirty", + "--always", + "--long", + "--match", + "%s*" % tag_prefix, + ], + cwd=root, + ) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() + full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + + pieces = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out + + # look for -dirty suffix + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: + git_describe = git_describe[: git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX + mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe) + if not mo: + # unparseable. Maybe git-describe is misbehaving? + pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out + return pieces + + # tag + full_tag = mo.group(1) + if not full_tag.startswith(tag_prefix): + if verbose: + fmt = "tag '%s' doesn't start with prefix '%s'" + print(fmt % (full_tag, tag_prefix)) + pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % ( + full_tag, + tag_prefix, + ) + return pieces + pieces["closest-tag"] = full_tag[len(tag_prefix):] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) + + # commit: short hex revision ID + pieces["short"] = mo.group(3) + + else: + # HEX: no tags + pieces["closest-tag"] = None + count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root) + pieces["distance"] = int(count_out) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() + date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[ + 0 + ].strip() + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +def plus_or_dot(pieces): + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +def render_pep440(pieces): + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you + get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty + + Exceptions: + 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += plus_or_dot(pieces) + rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + else: + # exception #1 + rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +def render_pep440_pre(pieces): + """TAG[.post.devDISTANCE] -- No -dirty. + + Exceptions: + 1: no tags. 0.post.devDISTANCE + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += ".post.dev%d" % pieces["distance"] + else: + # exception #1 + rendered = "0.post.dev%d" % pieces["distance"] + return rendered + + +def render_pep440_post(pieces): + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards + (a dirty tree will appear "older" than the corresponding clean one), + but you shouldn't be releasing software with -dirty anyways. + + Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += plus_or_dot(pieces) + rendered += "g%s" % pieces["short"] + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += "+g%s" % pieces["short"] + return rendered + + +def render_pep440_old(pieces): + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + + Eexceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + return rendered + + +def render_git_describe(pieces): + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render_git_describe_long(pieces): + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. + The distance/hash is unconditional. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render(pieces, style): + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return { + "version": "unknown", + "full-revisionid": pieces.get("long"), + "dirty": None, + "error": pieces["error"], + "date": None, + } + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": + rendered = render_git_describe(pieces) + elif style == "git-describe-long": + rendered = render_git_describe_long(pieces) + else: + raise ValueError("unknown style '%s'" % style) + + return { + "version": rendered, + "full-revisionid": pieces["long"], + "dirty": pieces["dirty"], + "error": None, + "date": pieces.get("date"), + } + + +def get_versions(): + """Get version information or return default if unable to do so.""" + # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have + # __file__, we can work backwards from there to the root. Some + # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which + # case we can only use expanded keywords. + + cfg = get_config() + verbose = cfg.verbose + + try: + return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, verbose) + except NotThisMethod: + pass + + try: + root = os.path.realpath(__file__) + # versionfile_source is the relative path from the top of the source + # tree (where the .git directory might live) to this file. Invert + # this to find the root from __file__. + for i in cfg.versionfile_source.split("/"): + root = os.path.dirname(root) + except NameError: + return { + "version": "0+unknown", + "full-revisionid": None, + "dirty": None, + "error": "unable to find root of source tree", + "date": None, + } + + try: + pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) + return render(pieces, cfg.style) + except NotThisMethod: + pass + + try: + if cfg.parentdir_prefix: + return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) + except NotThisMethod: + pass + + return { + "version": "0+unknown", + "full-revisionid": None, + "dirty": None, + "error": "unable to compute version", + "date": None, + } diff --git a/opencadd/compounds/standardization/assign_stereochemistry.py b/opencadd/compounds/standardization/assign_stereochemistry.py new file mode 100644 index 00000000..0ad8e5df --- /dev/null +++ b/opencadd/compounds/standardization/assign_stereochemistry.py @@ -0,0 +1,23 @@ +""" +This method assigns stereochemistry to molecules. +""" +from rdkit import Chem + +__all__ = ["assign_stereochemistry"] + + +def assign_stereochemistry(mol, *args, **kwargs): + """Does Stereochemistry assignment following the Cahn–Ingold–Prelog + priority rules. + + Parameters + --------- + mol: rdkit.Chem.Mol + The molecule that needs a stereochemistry assignment. + + Returns + ------- + mol: rdkit.Chem.Mol + A new molecule with a stereochemistry assigned. + """ + return Chem.AssignStereochemistry(mol, force=True, cleanIt=True, *args, **kwargs) diff --git a/opencadd/compounds/standardization/convert_format.py b/opencadd/compounds/standardization/convert_format.py new file mode 100644 index 00000000..a9c3fd44 --- /dev/null +++ b/opencadd/compounds/standardization/convert_format.py @@ -0,0 +1,156 @@ +""" +This function converts: +-SMILES +-InChI +-SDF +""" +from rdkit import Chem +from rdkit.Chem import inchi +from rdkit.Chem import SDMolSupplier +from standardizer.utils import data_path + +__all__ = [ + "convert_smiles_to_mol", + "convert_inchi_to_mol", + "convert_mol_to_smiles", + "convert_mol_to_inchi", + "convert_sdf_to_mol_array", + "convert_mol_to_sdf", +] + + +def _check_transform_file_ending(fn, f_format=".sdf"): + """Checks if there is sdf(or optional other) file ending. If not it + adds a file ending. + """ + if fn.endswith(f_format): + return fn + else: + return fn + f_format + + +def convert_smiles_to_mol(smiles, *args, **kwargs): + """Converts SMILES to mol. + + Parameters + --------- + smiles: str + The SMILES string that has to be converted. + + Returns + ------- + mol: rdkit.Chem.Mol + The molecule genrated from the SMILES string. + """ + mol = Chem.MolFromSmiles(smiles, *args, **kwargs) + return mol + + +def convert_inchi_to_mol(inchi, *args, **kwargs): + """Converts InChI to mol. + + Parameters + --------- + inchi: str + The InChI string that has to be converted. + + Returns + ------- + mol: rdkit.Chem.Mol + The molecule genrated from the InChI string. + """ + mol = Chem.MolFromInchi(inchi, *args, **kwargs) + return mol + + +def convert_mol_to_smiles(mol, *args, **kwargs): + """Converts mol to SMILES. + + Parameters + --------- + mol: rdkit.Chem.Mol + The mol string that has to be converted. + + Returns + ------- + smiles: str + The SMILES string genrated from the mol. + """ + smiles = Chem.MolToSmiles(mol, *args, **kwargs) + return smiles + + +def convert_mol_to_inchi(mol, *args, **kwargs): + """Converts mol to InChI. + + Parameters + --------- + mol: rdkit.Chem.Mol + The mol string that has to be converted. + + Returns + ------- + inchi: str + The InchI string genrated from the mol. + """ + inchi = Chem.MolToInchi(mol, *args, **kwargs) + return inchi + + +def convert_sdf_to_mol_array(fn): + """Converts molecules stored in an file to mol. + + Parameters + --------- + fn: str + The filename of the sdf-file containing the molecules. + + Returns + ------- + mol_array: list of rdkit.Chem.Mol + A list of all molecules contained in the input sdf-file. + + Notes + ----- + Files are load from the data folder. + """ + # #This version doesn't work + # suppl = Chem.SDMolSupplier(data_path(_check_transform_file_ending(fn))) + # mol_array = [] + # for mol in suppl: + # mol_array.append(mol) + # return mol_array + suppl = Chem.SDMolSupplier(_check_transform_file_ending(fn)) + mol_array = [] + for mol in suppl: + mol_array.append(mol) + return mol_array + + +def convert_mol_to_sdf(mol_array, fn="unnamed_mol_file"): + """Generates an sdf-file containing molecules. + + Parameters + --------- + mol_array: list of rdkit.Chem.Mol + A list of mol strings. + fn: str, optional + The name of the to be generated file. + + Returns + ------- + fn.sdf: sdf-file + Returns a sdf-file with the dafault-name "unnamed_mol_file.sdf" + if not customized + + Notes + ----- + Files are saved to the data folder. + """ + # #This version doesn't work + # w = Chem.SDWriter(data_path(_check_transform_file_ending(fn))) + # for mol in mol_array: + # w.write(mol) + w = Chem.SDWriter(_check_transform_file_ending(fn)) + for mol in mol_array: + w.write(mol) diff --git a/opencadd/compounds/standardization/detect_inorganic.py b/opencadd/compounds/standardization/detect_inorganic.py new file mode 100644 index 00000000..997a2e55 --- /dev/null +++ b/opencadd/compounds/standardization/detect_inorganic.py @@ -0,0 +1,43 @@ +""" +This module detects all inorganic substructures. +""" +import logging +from rdkit import Chem + +__all__ = ["detect_inorganic"] + +inorganic_elements = Chem.MolFromSmarts( + "[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#35&!#53]" +) + + +def detect_inorganic(mol, *args, **kwargs): + """Detects all inorganic substructures. + + Has a list of SMARTS which explicitly exludes all organic elemtents + and searches if there is a substructure match with an non-organic + element. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule which has to be searched for non-organic + substructures. + + Returns + ------- + boolean: bool + Returns if the stucture contains a non-organic element (True), + or not (False). + + Notes + ----- + To organic structures we count the following:Hydrogen, Carbon, + Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Bromine, + Iodine. + + """ + if mol.GetSubstructMatch(inorganic_elements, *args, **kwargs): + logging.debug("Structure contains a inorganic element") + return True + return False diff --git a/opencadd/compounds/standardization/disconnect_metals.py b/opencadd/compounds/standardization/disconnect_metals.py new file mode 100644 index 00000000..6e73cc68 --- /dev/null +++ b/opencadd/compounds/standardization/disconnect_metals.py @@ -0,0 +1,24 @@ +""" +This module disconnects metals from structures. +""" +from rdkit import Chem +from rdkit.Chem.MolStandardize import rdMolStandardize + +__all__ = ["disconnect_metals"] + + +def disconnect_metals(mol): + """Disconnects metal atoms that are defined as covalently bonded to + non-metals. + + Parameters + --------- + mol: rdkit.Chem.Mol + The molecule to be modified. + + Returns + ------- + mol: rdkit.Chem.Mol + A new molecule with metals disconnected. + """ + return rdMolStandardize.MetalDisconnector().Disconnect(mol) diff --git a/opencadd/compounds/standardization/handle_charges.py b/opencadd/compounds/standardization/handle_charges.py new file mode 100644 index 00000000..2d98144e --- /dev/null +++ b/opencadd/compounds/standardization/handle_charges.py @@ -0,0 +1,41 @@ +""" +This module performs changes on charges. +""" +from rdkit import Chem +from rdkit.Chem.MolStandardize import rdMolStandardize + +__all__ = ["uncharge", "reionize"] + + +def uncharge(mol): + """Attempts to neutralize charges by adding and/or removing + hydrogens where possible. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule where the charges have to be neutralized. + + Returns + ------- + mol: rdkit.Chem.Mol + Returns a neutralized molecule. + """ + return rdMolStandardize.Uncharger().uncharge(mol) + + +def reionize(mol): + """Ensure the strongest acid groups ionize first in partially + ionized molecules. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The partially ionized molecule. + + Returns + ------- + mol: rdkit.Chem.Mol + Returns a molecule, with strongest acid groups ionized first. + """ + return rdMolStandardize.Reionizer().reionize(mol) diff --git a/opencadd/compounds/standardization/handle_fragments.py b/opencadd/compounds/standardization/handle_fragments.py new file mode 100644 index 00000000..28525f38 --- /dev/null +++ b/opencadd/compounds/standardization/handle_fragments.py @@ -0,0 +1,47 @@ +""" +This module handles different operations with fragments. +""" +from rdkit import Chem +from rdkit.Chem.MolStandardize import rdMolStandardize + +__all__ = ["remove_fragments", "choose_largest_fragment"] + + +def remove_fragments(mol): + """Filters out fragments. + + A predefined list contains numerous known fragments which can be + filtered out. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule with various fragments. + + Returns + ------- + mol: rdkit.Chem.Mol + Returns a molecule filtered from known fragments. + + Notes + ----- + The predefined list containing fragments is a list REMOVE_FRAGMENTS + saved in rdkit/Chem/MolStandardize/fragments.py + """ + return rdMolStandardize.FragmentRemover().remove(mol) + + +def choose_largest_fragment(mol): + """Gets the largest fragment. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule with various fragments in various sizes. + + Returns + ------- + mol: rdkit.Chem.Mol + Returns a molecule containing the largest fragment. + """ + return rdMolStandardize.LargestFragmentChooser().choose(mol) diff --git a/opencadd/compounds/standardization/handle_hydrogens.py b/opencadd/compounds/standardization/handle_hydrogens.py new file mode 100644 index 00000000..137f3b3c --- /dev/null +++ b/opencadd/compounds/standardization/handle_hydrogens.py @@ -0,0 +1,25 @@ +""" +This module handles different tasks concerning hydrogen. +""" +from rdkit import Chem + +__all__ = ["remove_hydrogens"] + + +def remove_hydrogens(mol): + """Removes any hydrogens from the graph of a molecule. + + This is a wrapper around rdkit.Chem.rdmolops.RemoveHs. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule to be modified. + + Returns + ------- + mol: rdkit.Chem.Mol + A new molecule with the hydrogens removed. + """ + mol = Chem.RemoveHs(mol) + return mol diff --git a/opencadd/compounds/standardization/handle_tautomers.py b/opencadd/compounds/standardization/handle_tautomers.py new file mode 100644 index 00000000..e53398e8 --- /dev/null +++ b/opencadd/compounds/standardization/handle_tautomers.py @@ -0,0 +1,58 @@ +""" +This module performs tautomer enumeration and canonicalization. +""" +from rdkit import Chem +from rdkit.Chem.MolStandardize.standardize import ( + enumerate_tautomers_smiles, + canonicalize_tautomer_smiles, +) + +__all__ = ["enumerate_tautomer", "canonicalize_tautomer"] + + +def enumerate_tautomer(smiles): + """Generates all possible tautomers. + + During the enumeration it generates all possible tautomers using a + series of tranformation rules. It also removes stereochemistry from + double bonds that are single in at least 1 tautomer. + + Parameters + ---------- + smiles: str + + Returns + ------- + possible_tautomers: list of str + + Notes + ----- + The default list of Tautomer Transforms is saved in the list: + TAUTOMER_TRANSFORMS in rdkit/Chem/MolStandardize/tautomer.py + + """ + possible_tautomers = enumerate_tautomers_smiles(smiles) + return possible_tautomers + + +def canonicalize_tautomer(smiles): + """Generates a canonicalized tautomer. + + During the canonicalization it also enumerates all possible + tautomers, but after that it uses a scoring system to determine a + canonical tautomer. + + Parameters + ---------- + smiles: str + + Returns + ------- + smiles: str + + Notes + ----- + The default list of Tautomer Scores is saved in the list: + TAUTOMER_SCORES in rdkit/Chem/MolStandardize/tautomer.py + """ + return canonicalize_tautomer_smiles(smiles) diff --git a/opencadd/compounds/standardization/normalize_molecules.py b/opencadd/compounds/standardization/normalize_molecules.py new file mode 100644 index 00000000..0d752f86 --- /dev/null +++ b/opencadd/compounds/standardization/normalize_molecules.py @@ -0,0 +1,32 @@ +""" +This module performs Normalization transformations +to correct functional groups and recombine charges. +""" +from rdkit import Chem +from rdkit.Chem.MolStandardize import rdMolStandardize + +__all__ = ["normalize"] + + +def normalize(mol): + """Applies a series of Normalization transforms to correct + functional groups and recombine charges. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + + Returns + ------- + mol: rdkit.Chem.Mol + Returns a molecule where various Normalization transforms to + correct functional groups and recombine charges have been + performed on. + + Notes + ----- + The Normalization transformations are saved in the list + NORMALIZATIONS contained in rdkit/Chem/MolStandardize/normalize.py + """ + return rdMolStandardize.Normalizer().normalize(mol) diff --git a/opencadd/compounds/standardization/remove_salts.py b/opencadd/compounds/standardization/remove_salts.py new file mode 100644 index 00000000..a805fe25 --- /dev/null +++ b/opencadd/compounds/standardization/remove_salts.py @@ -0,0 +1,80 @@ +""" +This module removes salt fragments. +""" +from rdkit import Chem +from rdkit.Chem.SaltRemover import SaltRemover +import csv +import logging +from rdkit import RDLogger +from standardizer.utils import data_path + +__all__ = ["remove_salts"] + + +def _extract_row_from_csv(row_num, filename="salts.tsv", delimiter="\t"): + """Extracts a row from a CSV File""" + with open(data_path(filename)) as csvfile: + input_csv = csv.reader(csvfile, delimiter=delimiter) + new_array = [] + for row in input_csv: + new_read = row[row_num] + new_array.append(new_read) + return new_array + + +def remove_salts(mol, dictionary=True, *args, **kwargs): + """Removes salts from a molecule. + + This function removes detected salts following a salts dictionary by + default. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule to be modified. + dictionary: bool, optional + True (default): Activates the use of the salt dictionary. + False: Uses the standard StripMol functionality, provided by + rdkit.Chem.SaltRemover. + defnData: list of str, optional + If the dictionary is set to False, a custom dictionary can be + set up. If not rdkit default values from + '/scratch/RDKit_git/Data/Salts.txt' are used. + + Returns + ------- + mol: rdkit.Chem.Mol + A new molecule with salts removed. + + Notes + ----- + The Salts Dictionary + The dictionary used is a derived version from the ChEMBL salt + dictionary, created for the flatkinson standardiser. The salts + are stored as list of (neutral) SMILES. + """ + lg = RDLogger.logger() + lg.setLevel(RDLogger.ERROR) + i = 0 + + if dictionary == True: + salts = _extract_row_from_csv(0) + salt_names = _extract_row_from_csv(1) + list_len = len(salts) + + while i < list_len: + salt = salts[i] + salt_name = salt_names[i] + test = Chem.MolToInchi(mol) + i += 1 + remover = SaltRemover(defnData=salt) + stripped_mol = remover.StripMol(mol) + test_inchi = Chem.MolToInchi(stripped_mol) + if test_inchi != test: + logging.debug("Following salt was stripped: %s", salt_name) + mol = stripped_mol + continue + else: + mol = SaltRemover(*args, **kwargs).StripMol(mol) + + return mol diff --git a/opencadd/compounds/standardization/sanitize_molecules.py b/opencadd/compounds/standardization/sanitize_molecules.py new file mode 100644 index 00000000..a2eb49b2 --- /dev/null +++ b/opencadd/compounds/standardization/sanitize_molecules.py @@ -0,0 +1,22 @@ +""" +This module performs sanitizations on molecules. +""" +from rdkit import Chem + +__all__ = ["sanitize_all"] + + +def sanitize_all(mol, *args, **kwargs): + """Performs sanitization on molecules. + + Parameters + --------- + mol: rdkit.Chem.Mol + The molecule that has to be sanitized. + + Returns + ------- + mol: rdkit.Chem.Mol + A new sanitized molecule. + """ + return Chem.SanitizeMol(mol, *args, **kwargs) diff --git a/opencadd/compounds/standardization/standardization.py b/opencadd/compounds/standardization/standardization.py new file mode 100644 index 00000000..f5ae3e1f --- /dev/null +++ b/opencadd/compounds/standardization/standardization.py @@ -0,0 +1,34 @@ +""" +standardization.py +A tool to standardize compounds. + +Handles the primary functions +""" + + +def canvas(with_attribution=True): + """ + Placeholder function to show example docstring (NumPy format) + + Replace this function and doc string for your own project + + Parameters + ---------- + with_attribution : bool, Optional, default: True + Set whether or not to display who the quote is from + + Returns + ------- + quote : str + Compiled string including quote and optional attribution + """ + + quote = "The code is but a canvas to our imagination." + if with_attribution: + quote += "\n\t- Adapted from Henry David Thoreau" + return quote + + +if __name__ == "__main__": + # Do something if this file is invoked on its own + print(canvas()) diff --git a/opencadd/compounds/standardization/utils.py b/opencadd/compounds/standardization/utils.py new file mode 100644 index 00000000..bcc4579d --- /dev/null +++ b/opencadd/compounds/standardization/utils.py @@ -0,0 +1,21 @@ +""" +This module contains helper and utility functions. +""" +from pathlib import Path + +__all__ = ["data_path"] + + +def data_path(fn): + """Leads to files saved in the data folder + + Parameters + ---------- + fn: str + The whole filename. + + Returns + ------- + The path of the file in the current working system. + """ + return Path(__file__).parent / "data" / fn diff --git a/opencadd/compounds/standardization/validate_molecules.py b/opencadd/compounds/standardization/validate_molecules.py new file mode 100644 index 00000000..57da49d4 --- /dev/null +++ b/opencadd/compounds/standardization/validate_molecules.py @@ -0,0 +1,175 @@ +""" +This module provides all validation methods included in rdMolStandardize +""" +from rdkit import Chem +from rdkit.Chem.rdchem import Atom +from rdkit.Chem.MolStandardize import rdMolStandardize + +__all__ = [ + "check_valency", + "validate_allowed_atoms", + "validate_disallowed_atoms", + "validate_default", + "validate_if_no_atom", + "validate_fragment", + "validate_neutrality", + "validate_isotopes", +] + + +def check_valency(mol): + """Validates the valency of every atom in the molecule. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + + Returns + ------- + message: str + """ + message = rdMolStandardize.RDKitValidation().validate(mol) + return message or None + + +def validate_allowed_atoms(mol, atomlist): + """Validates by a list of allowed atoms. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + atomlist: list of int + The atomic number of the allowed atoms. + + Returns + ------- + message: str + Error Message with every atom that is not on atomlist. + """ + if len(atomlist) == 0: + return + else: + allowed_atoms = [Atom(i) for i in atomlist] + vm = rdMolStandardize.AllowedAtomsValidation(allowed_atoms) + message = vm.validate(mol) + return message or None + + +def validate_disallowed_atoms(mol, atomlist): + """ + Validates by a list of disallowed atoms. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + atomlist: list of int + The atomic number of the disallowed atoms. + + Returns + ------- + message: str + Error Message with every atom that is on the atomlist. + + """ + if len(atomlist) == 0: + return + else: + disallowed_atoms = [Atom(i) for i in atomlist] + vm = rdMolStandardize.DisallowedAtomsValidation(disallowed_atoms) + message = vm.validate(mol) + return message or None + + +def validate_default(mol): + """Performs the default validation which occurs in MolVS. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + + Returns + ------- + message: str + + Notes + ----- + Default is to do all following validations: + validate_if_no_atom, validate_fragment, validate_neutrality, + validate_isotopes + """ + message = rdMolStandardize.MolVSValidation().validate(mol) + return message or None + + +def validate_if_no_atom(mol): + """Logs an error if the molecule has zero atoms. + + If the molecule has no atoms, no subsequent validations will run. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + + Returns + ------- + message: str + """ + validation = [rdMolStandardize.NoAtomValidation()] + message = rdMolStandardize.MolVSValidation(validation).validate(mol) + return message or None + + +def validate_fragment(mol): + """Logs if certain fragments are present. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + + Returns + ------- + message: str + """ + validation = [rdMolStandardize.FragmentValidation()] + message = rdMolStandardize.MolVSValidation(validation).validate(mol) + return message or None + + +def validate_neutrality(mol): + """Logs if not an overall neutral system. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + + Returns + ------- + message: str + """ + validation = [rdMolStandardize.NeutralValidation()] + message = rdMolStandardize.MolVSValidation(validation).validate(mol) + return message or None + + +def validate_isotopes(mol): + """Logs if molecule contains isotopes. + + Parameters + ---------- + mol: rdkit.Chem.Mol + A molecule. + + Returns + ------- + message: str + """ + validation = [rdMolStandardize.IsotopeValidation()] + message = rdMolStandardize.MolVSValidation(validation).validate(mol) + return message or None From 66a8be21b41e5240fa6f4a2604b48c380f8616d7 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 24 Jan 2021 11:58:11 +0100 Subject: [PATCH 02/55] data for modules and tests --- opencadd/data/README.md | 1 + opencadd/data/salts.tsv | 142 ++++++++++++++++++ opencadd/tests/data/compounds/new_mol.sdf | 130 ++++++++++++++++ .../result_of_test_convert_mol_to_sdf.sdf | 130 ++++++++++++++++ 4 files changed, 403 insertions(+) create mode 100644 opencadd/data/salts.tsv create mode 100644 opencadd/tests/data/compounds/new_mol.sdf create mode 100644 opencadd/tests/data/compounds/result_of_test_convert_mol_to_sdf.sdf diff --git a/opencadd/data/README.md b/opencadd/data/README.md index 7141123b..050adaa5 100644 --- a/opencadd/data/README.md +++ b/opencadd/data/README.md @@ -20,3 +20,4 @@ correct files. * `look_and_say.dat`: first entries of the "Look and Say" integer series, sequence [A005150](https://oeis.org/A005150) * `klifs_ids.YYYYMMDD.csv.zip`: KLIFS structure and kinase IDs that are available at wwww.klifs.net by the time of YYYYMMDD. +* `salts.tsv`: The Salts Dictionary from flatkinson standardiser: This is used to identify counterions and solvent molecules, and is derived from the ChEMBL salt dictionary. It is stored as a list of (neutral) SMILES. diff --git a/opencadd/data/salts.tsv b/opencadd/data/salts.tsv new file mode 100644 index 00000000..cdbe95a0 --- /dev/null +++ b/opencadd/data/salts.tsv @@ -0,0 +1,142 @@ +CNCC(O)C(O)C(O)C(O)CO (di)meglumine +CC(=O)O acetate uncharged +CC(=O)C acetone +CC(=O)NCC(=O)O aceturate uncharged +CCCCCCCCCCCCCCCCCC(=O)O acistrate or stearate +OC(=O)CCCCC(=O)O Adipate +[Al] Aluminium +N ammonia or ammonium +OCC(O)C1OC(=O)C(=C1O)O ascorbate +NC(CC(=O)O)C(=O)O Aspartate +[Ba] Barium +C(Cc1ccccc1)NCc2ccccc2 benethamine +C(CNCc1ccccc1)NCc2ccccc2 benzathine +OC(=O)c1ccccc1 benzoate +OS(=O)(=O)c1ccccc1 besilate or besylate +[Bi] bismuth +Br Bromide +CCCC=O butyraldehyde +CCCC(=O)OCC butyrate +[Ca] Calcium +CC1(C)C2CCC1(CS(=O)(=O)O)C(=O)C2 camsilate or camsylate uncharged +OC(=O)O carbonate +Cl Chloride +OCC[N+](C)(C)C choline +OC(=O)CC(O)(CC(=O)O)C(=O)O citrate +OS(=O)(=O)c1ccc(Cl)cc1 closylate +OS(=O)(=O)NC1CCCCC1 cyclamate +OC(=O)C(Cl)Cl dichloroacetate +CCNCC diethylamine +CC(C)(N)CO dimethylethanolamine +CS(=O)C dimethylsulphoxide +OCCNCCO diolamine +NCCN edamine +OS(=O)(=O)CCS(=O)(=O)O edisylate +OCCN1CCCC1 Epolamine +CC(C)(C)N erbumine +CCCCCCCCCCCCOS(=O)(=O)O estolate or laurylsulfate +CCS(=O)(=O)O esylate uncharged +CCO ethanol +CCOS(=O)(=O)O ethylsulfate no charge +F Fluoride +C(=O)O formic acid +OC(=O)C=CC(=O)O fumarate +OCC(O)C(O)C(O)C(O)C(O)C(=O)O gluceptate +OCC(O)C(O)C(O)C(O)C(=O)O gluconate +OC1OC(C(O)C(O)C1O)C(=O)O glucuronate +NC(CCC(=O)O)C(=O)O glutamate +OCC(O)CO glycerate +OCC(O)COP(=O)(O)O glycerophosphate +OC(=O)CNC(=O)c1ccccc1 hippurate charged +OP=O hypophosphite uncharged +OC(C=O)C(O)C(O)C(O)C(=O)O incorrect glucuronate +OC(=O)c5c(O)cc6ccccc6c5Cc7c(C(=O)O)c(O)cc8ccccc78 incorrect pamoate +OC1OC(C(O)C(O)C1O)C(O)=O incorrect ring gluconate +OC(C(O)C(=O)O)C(=O)O incorrect tartrate uncharged no stereo +I Iodide +OCCS(=O)(=O)O isethionate +[K] Potassium +CC(O)C(=O)O lactate uncharged +OCC(O)C(OC1OC(CO)C(O)C(O)C1O)C(O)C(O)C(=O)O lactobionate +[Li] Lithium +NCCCCC(N)C(=O)O lysine +OC(CC(=O)O)C(=O)O malate +OC(=O)C=CC(=O)O maleate +CS(=O)(=O)O mesylate +OP(=O)=O metaphosphate uncharged +COS(=O)(=O)O methosulfate +O[Mg+] Mg monohydroxide (looks odd but OK in drug) +[Mg] Magnesium +OP(F)(O)=O monofluorophosphate +[Na] Sodium +OS(=O)(=O)c1cccc2c(cccc12)S(=O)(=O)O napadisilate +OS(=O)(=O)c1ccc2ccccc2c1 napsylate +O[N+](=O)O nitrate uncharged +NCCO olamine or ethanolamide +OC(=O)C(=O)O oxalate +CCCCCCCCCCCCCCCC(=O)O palmitate +OC(=O)c1cc2ccccc2c(Cc3c(O)c(cc4ccccc34)C(=O)O)c1O pamoate +OCl(=O)(=O)=O perchlorate uncharged +Nc1ccc(cc1)P(=O)(O)O phosphanilate +OP(=O)(O)O phosphate +Oc1c(cc(cc1[N+](=O)[O-])[N+](=O)[O-])[N+](=O)[O-] picrate +C1CNCCN1 piperazine +CC(O)CO propylene glycol +OC(C(O)C(O)C(=O)O)C(O)C(=O)O Saccharate +O=C1NS(=O)(=O)c2ccccc12 saccharin +OC(=O)c1ccccc1O salicylate uncharged +[Ag] Silver +[Sr] Strontium +OC(=O)CCC(=O)O succinate +OS(=O)(=O)O sulfate +c1ccc(C(=O)O)c(O)c1S(=O)(=O)O sulfosalicylate +S sulphide +OC(=O)c1ccc(cc1)C(=O)O terephthalate +Cc1ccc(cc1)S(=O)(=O)O tosilate or tosylate uncharged +Oc1cc(Cl)c(Cl)cc1Cl triclofenate +CCN(CC)CC triethylamine +OC(=O)C(c1ccccc1)(c2ccccc2)c3ccccc3 trifenatate +OC(=O)C(F)(F)F triflutate +NC(CO)(CO)CO tromethamine +CCCCC1CCC(CC1)C(=O)O U_buciclate +CCCC(=O)O U_butyrate +CCCCCC(=O)O U_caproate +CC12C=CC(C(=O)O)(CC2)CC1 U_cyclotate +C1CCCC1CCC(=O)O U_cypionate +CN(C)CCC(=O)O U_daproate +OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O U_EDTA +OC(=O)CCCCCCCC=CCCCCCCCC U_elaidate +CCCCCCC(=O)O U_enanthate +CCOC(=O)O U_etabonate +COCCO U_ethanediol +c1ccccc1C(=O)NCC(=O)O U_etiprate +OCOC(=O)C(CC)CC U_etzadroxil +CCCCCCCCCCCCCCOP(=O)(O)O U_fostedate +OC(=O)c1ccco1 U_furoate +c1cc(O)ccc1C(=O)c2ccccc2C(=O)O U_hybenzate +CCCCCCCCCCCC(=O)O U_laurate +CC=C(C)C(=O)O U_mebutate +CC(O)(C)CCCC(O)(C(=O)O)CC(=O)OC U_mepesuccinate +OC(=O)c1cccc(c1)S(=O)(=O)O U_metazoate +CSCCC(N)C(=O)C U_methionil +c1ccncc1C(=O)O U_nicotinate +CCCCCCCCC=CCCCCCCCC(=O)O U_oleate +OO U_peroxide +c1ccccc1CCC(=O)O U_phenpropionate +c1ccccc1CC(=O)O U_phenylacetate +CC(C)(C)C(=O)O U_pivalate +CCC(=O)O U_propionate +CC(C)(C)CC(=O)O U_tebutate +OCCN(CCO)CCO U_trolamine +CCCCCCCCCCC(=O)O U_undecylate +OC(=O)CCCCCCCCC=C undecylenate +CCCCC(=O)O valerate uncharged +O water or hydroxide +OC(=O)c1ccc2ccccc2c1O xinafoate +[Zn] Zinc +[N+](=O)([O-])O nitrate +OS(=O)(=O)C(F)(F)F trifluorosulphonate +O[Cl+3](O)(O)O perchlorate_rdkit +c1nnn[nH]1 tetrazole +CN methyl-amine +C1CCCCC1N cyclohexyl-amine diff --git a/opencadd/tests/data/compounds/new_mol.sdf b/opencadd/tests/data/compounds/new_mol.sdf new file mode 100644 index 00000000..0c0242a2 --- /dev/null +++ b/opencadd/tests/data/compounds/new_mol.sdf @@ -0,0 +1,130 @@ +NCGC00261900-01 + RDKit 2D + + 53 59 0 0 1 0 0 0 0 0999 V2000 + 0.4125 0.7145 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8250 -0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.6500 -0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4125 -0.7145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + -0.4125 -0.7145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + -0.8250 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + -0.4125 0.7145 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + -1.6500 0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3627 2.9072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5781 3.1622 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.0932 2.4947 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5781 1.8273 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3232 1.0427 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.8752 0.4296 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5162 0.8712 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2613 0.0865 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4543 -0.0850 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1994 -0.8696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7514 -1.4827 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5584 -1.3112 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8133 -0.5266 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4964 -2.2673 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.6895 -2.4389 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 5.4345 -3.2235 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9866 -3.8366 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7935 -3.6650 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0485 -2.8804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3456 -4.2781 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1740 -5.0851 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8885 -5.4976 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5016 -4.9456 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1661 -4.1919 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 4.6276 -3.3950 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 4.0145 -2.8430 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3.3000 -3.2555 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3.4715 -4.0624 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 4.2920 -4.1487 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3627 2.0822 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.4215 1.2593 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0772 1.6697 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7917 2.0822 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7917 2.9072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0772 3.3197 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0772 4.1447 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7917 4.5572 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5061 4.1447 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.2206 4.5572 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9351 4.1447 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6496 4.5572 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9351 3.3197 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.2206 2.9072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5061 3.3197 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5061 2.4947 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 + 2 3 2 0 + 2 4 1 0 + 4 5 2 0 + 5 6 1 0 + 6 7 1 0 + 6 8 2 0 + 9 10 1 1 + 10 11 1 0 + 11 12 1 0 + 12 13 1 1 + 13 14 2 0 + 13 15 1 0 + 15 16 1 0 + 16 17 1 0 + 17 18 1 0 + 18 19 1 0 + 19 20 1 0 + 20 21 1 0 + 16 21 1 0 + 19 22 1 0 + 22 23 2 0 + 23 24 1 0 + 24 25 2 0 + 25 26 1 0 + 26 27 2 0 + 22 27 1 0 + 26 28 1 0 + 28 29 1 0 + 29 30 1 0 + 30 31 1 0 + 31 32 1 0 + 28 32 1 0 + 24 33 1 0 + 33 34 1 0 + 34 35 1 0 + 35 36 1 0 + 36 37 1 0 + 33 37 1 0 + 12 38 1 0 + 9 38 1 0 + 38 39 1 1 + 38 40 1 0 + 40 41 1 0 + 41 42 2 0 + 43 42 1 0 + 9 43 1 0 + 43 44 1 6 + 44 45 1 0 + 45 46 1 0 + 46 47 2 0 + 47 48 1 0 + 48 49 2 0 + 48 50 1 0 + 50 51 2 0 + 51 52 1 0 + 42 52 1 0 + 46 52 1 0 + 52 53 1 1 +M END +> (1) +U 5882 + +> (1) +NCGC00261900 + +> (1) +NCGC00261900-01 + +> (1) +0 + +$$$$ diff --git a/opencadd/tests/data/compounds/result_of_test_convert_mol_to_sdf.sdf b/opencadd/tests/data/compounds/result_of_test_convert_mol_to_sdf.sdf new file mode 100644 index 00000000..0c0242a2 --- /dev/null +++ b/opencadd/tests/data/compounds/result_of_test_convert_mol_to_sdf.sdf @@ -0,0 +1,130 @@ +NCGC00261900-01 + RDKit 2D + + 53 59 0 0 1 0 0 0 0 0999 V2000 + 0.4125 0.7145 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8250 -0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.6500 -0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4125 -0.7145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + -0.4125 -0.7145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + -0.8250 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + -0.4125 0.7145 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + -1.6500 0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3627 2.9072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5781 3.1622 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.0932 2.4947 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5781 1.8273 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3232 1.0427 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.8752 0.4296 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5162 0.8712 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2613 0.0865 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4543 -0.0850 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1994 -0.8696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7514 -1.4827 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5584 -1.3112 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8133 -0.5266 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4964 -2.2673 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.6895 -2.4389 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 5.4345 -3.2235 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9866 -3.8366 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7935 -3.6650 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0485 -2.8804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3456 -4.2781 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1740 -5.0851 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8885 -5.4976 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5016 -4.9456 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1661 -4.1919 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 4.6276 -3.3950 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 4.0145 -2.8430 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3.3000 -3.2555 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3.4715 -4.0624 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 4.2920 -4.1487 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3627 2.0822 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.4215 1.2593 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0772 1.6697 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7917 2.0822 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7917 2.9072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0772 3.3197 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0772 4.1447 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7917 4.5572 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5061 4.1447 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.2206 4.5572 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9351 4.1447 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6496 4.5572 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9351 3.3197 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.2206 2.9072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5061 3.3197 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5061 2.4947 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 + 2 3 2 0 + 2 4 1 0 + 4 5 2 0 + 5 6 1 0 + 6 7 1 0 + 6 8 2 0 + 9 10 1 1 + 10 11 1 0 + 11 12 1 0 + 12 13 1 1 + 13 14 2 0 + 13 15 1 0 + 15 16 1 0 + 16 17 1 0 + 17 18 1 0 + 18 19 1 0 + 19 20 1 0 + 20 21 1 0 + 16 21 1 0 + 19 22 1 0 + 22 23 2 0 + 23 24 1 0 + 24 25 2 0 + 25 26 1 0 + 26 27 2 0 + 22 27 1 0 + 26 28 1 0 + 28 29 1 0 + 29 30 1 0 + 30 31 1 0 + 31 32 1 0 + 28 32 1 0 + 24 33 1 0 + 33 34 1 0 + 34 35 1 0 + 35 36 1 0 + 36 37 1 0 + 33 37 1 0 + 12 38 1 0 + 9 38 1 0 + 38 39 1 1 + 38 40 1 0 + 40 41 1 0 + 41 42 2 0 + 43 42 1 0 + 9 43 1 0 + 43 44 1 6 + 44 45 1 0 + 45 46 1 0 + 46 47 2 0 + 47 48 1 0 + 48 49 2 0 + 48 50 1 0 + 50 51 2 0 + 51 52 1 0 + 42 52 1 0 + 46 52 1 0 + 52 53 1 1 +M END +> (1) +U 5882 + +> (1) +NCGC00261900 + +> (1) +NCGC00261900-01 + +> (1) +0 + +$$$$ From 711dd9da67bca1b37603cc723d244d45b53f57ce Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 24 Jan 2021 11:58:43 +0100 Subject: [PATCH 03/55] imported tests --- .../standardization/test_convert_format.py | 98 ++++ .../standardization/test_detect_inorganic.py | 68 +++ .../standardization/test_disconnect_metals.py | 49 ++ .../standardization/test_handle_charges.py | 125 ++++ .../standardization/test_handle_fragments.py | 80 +++ .../standardization/test_handle_hydrogens.py | 30 + .../standardization/test_handle_tautomers.py | 543 ++++++++++++++++++ .../test_normalize_molecules.py | 67 +++ .../standardization/test_remove_salts.py | 74 +++ .../standardization/test_standardizer.py | 14 + .../test_validate_molecules.py | 95 +++ 11 files changed, 1243 insertions(+) create mode 100644 opencadd/tests/compounds/standardization/test_convert_format.py create mode 100644 opencadd/tests/compounds/standardization/test_detect_inorganic.py create mode 100644 opencadd/tests/compounds/standardization/test_disconnect_metals.py create mode 100644 opencadd/tests/compounds/standardization/test_handle_charges.py create mode 100644 opencadd/tests/compounds/standardization/test_handle_fragments.py create mode 100644 opencadd/tests/compounds/standardization/test_handle_hydrogens.py create mode 100644 opencadd/tests/compounds/standardization/test_handle_tautomers.py create mode 100644 opencadd/tests/compounds/standardization/test_normalize_molecules.py create mode 100644 opencadd/tests/compounds/standardization/test_remove_salts.py create mode 100644 opencadd/tests/compounds/standardization/test_standardizer.py create mode 100644 opencadd/tests/compounds/standardization/test_validate_molecules.py diff --git a/opencadd/tests/compounds/standardization/test_convert_format.py b/opencadd/tests/compounds/standardization/test_convert_format.py new file mode 100644 index 00000000..1a9a96fb --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_convert_format.py @@ -0,0 +1,98 @@ +""" +test for the module `convert_format` +""" +import pytest +import sys +import rdkit +import os +from pathlib import Path +from rdkit import Chem + +from opencadd.compounds.standardization import convert_format + + +def _evaluation_mol_generator(test_smiles=None, test_inchi=None): + """Creates mol files directly with rdkits functions for evaluation. + """ + if test_smiles is not None: + return Chem.MolFromSmiles(test_smiles) + if test_inchi is not None: + return Chem.MolFromInchi(test_inchi) + + +def _evaluation_inchi(test_result): + test_result = Chem.MolFromSmiles(test_result) + test_result = Chem.MolToInchi(test_result) + return test_result + + +def _test_path(fn): + """Leads to files saved in the data folder + + Parameters + ---------- + fn: str + The whole filename. + + Returns + ------- + The path of the file in the current working system. + """ + return Path(__file__).parent / "data" / fn + + +def test_convert_smiles_to_mol(test_smiles="C(C1C(C(C(C(O1)O)O)O)O)O"): + """Tests if the created file is a mol file. + """ + test_result = convert_format.convert_smiles_to_mol(test_smiles) + assert isinstance(test_result, rdkit.Chem.rdchem.Mol) == True + + +def test_convert_inchi_to_mol( + test_inchi="InChI=1S/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3-,4+,5-,6?/m1/s1" +): + """Tests if the created file is a mol file. + """ + test_result = convert_format.convert_inchi_to_mol(test_inchi) + assert isinstance(test_result, rdkit.Chem.rdchem.Mol) == True + + +def test_convert_mol_to_smiles( + test_inchi="InChI=1S/C8H7O4S.Na/c9-8(10)7-3-1-6(2-4-7)5-13(11)12;/h1-4H,5H2,(H,9,10);/q;+1/p-1" +): + """Tests if the created file matches the file it originated from. + """ + test_result = convert_format.convert_mol_to_smiles( + _evaluation_mol_generator(test_inchi=test_inchi), canonical=False + ) + test_result = _evaluation_inchi(test_result) + assert test_result == test_inchi + + +def test_convert_mol_to_inchi( + test_inchi="InChI=1S/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3-,4+,5-,6?/m1/s1" +): + """Tests if the created file matches the file it originated from. + """ + test_result = convert_format.convert_mol_to_inchi( + _evaluation_mol_generator(test_inchi=test_inchi) + ) + assert test_result == test_inchi + + +def test_convert_sdf_to_mol_array(): + fn = "new_mol" + mol_array = convert_format.convert_sdf_to_mol_array(str(_test_path(fn))) + mol = mol_array[0] + assert isinstance(mol, rdkit.Chem.rdchem.Mol) == True + + +def test_convert_mol_to_sdf(): + fn = "new_mol" + mol_array = convert_format.convert_sdf_to_mol_array(str(_test_path(fn))) + convert_format.convert_mol_to_sdf( + mol_array, fn=str(_test_path("result_of_test_convert_mol_to_sdf.sdf")) + ) + assert ( + os.path.isfile(str(_test_path("result_of_test_convert_mol_to_sdf.sdf"))) == True + ) diff --git a/opencadd/tests/compounds/standardization/test_detect_inorganic.py b/opencadd/tests/compounds/standardization/test_detect_inorganic.py new file mode 100644 index 00000000..310144e7 --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_detect_inorganic.py @@ -0,0 +1,68 @@ +""" +test for the module `detect_inorganic` +""" +import pytest +import sys +import rdkit + +from rdkit import Chem + +from opencadd.compounds.standardization import detect_inorganic + + +def _evaluation_mol_generator(test_smiles=None, test_inchi=None): + """Creates mol files directly with rdkits functions for evaluation. + """ + if test_smiles is not None: + return Chem.MolFromSmiles(test_smiles) + if test_inchi is not None: + return Chem.MolFromInchi(test_inchi) + + +def _atom_test(test_inchi=None, test_smiles=None): + mol = _evaluation_mol_generator(test_inchi=test_inchi, test_smiles=test_smiles) + return detect_inorganic(mol) + + +def test_organic(): + """Tests if organic structures are not detected as inorganic. + Organic atoms: + hydrogen, carbon, nitrogen, oxygen, + fluorine, phosphorus, sulfur, chlorine, bromine, iodine + """ + assert _atom_test(test_inchi="InChI=1S/H") == False + assert _atom_test(test_inchi="InChI=1S/C") == False + assert _atom_test(test_inchi="InChI=1S/N") == False + assert _atom_test(test_inchi="InChI=1S/O") == False + assert _atom_test(test_inchi="InChI=1S/F") == False + assert _atom_test(test_inchi="InChI=1S/P") == False + assert _atom_test(test_inchi="InChI=1S/S") == False + assert _atom_test(test_inchi="InChI=1S/Cl") == False + assert _atom_test(test_inchi="InChI=1S/Br") == False + assert _atom_test(test_inchi="InChI=1S/I") == False + + +def test_inorganic(): + """Tests if inorganic structures are detected as inorganic. + Example atoms: + aluminum, selenium, sodium, magnesium + """ + assert _atom_test(test_inchi="InChI=1S/Al") == True + assert _atom_test(test_inchi="InChI=1S/Se") == True + assert _atom_test(test_inchi="InChI=1S/Na") == True + assert _atom_test(test_inchi="InChI=1S/Mg") == True + + +def test_organic_inorganic_combination(): + """Tests if inorganic atoms are detected in combination with organic + atoms. + """ + assert _atom_test(test_smiles="c1ccccc1C(=O)O[Ca]OC(=O)c1ccccc1") == True + + +def test_organic_organic_combination(): + """Tests if a combination of organic atoms doesn't resolve in a + detection of a inorganic structure. + Tested here: nitro group + """ + assert _atom_test(test_smiles="[N](=O)(=O)O") == False diff --git a/opencadd/tests/compounds/standardization/test_disconnect_metals.py b/opencadd/tests/compounds/standardization/test_disconnect_metals.py new file mode 100644 index 00000000..adab99be --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_disconnect_metals.py @@ -0,0 +1,49 @@ +""" +test for the module `disconnect_metals` + +derived from MolVS's tests: +https://github.com/mcs07/MolVS/blob/master/tests/test_metal.py +""" +import pytest +import sys + +from rdkit import Chem + +from opencadd.compounds.standardization import disconnect_metals + + +def _disconnect_metals_smiles(smiles): + mol = Chem.MolFromSmiles(smiles) + mol = disconnect_metals(mol) + if mol: + return Chem.MolToSmiles(mol) + + +def test_disconnect_metals1(): + assert ( + _disconnect_metals_smiles("NC(CC(=O)O)C(=O)[O-].O.O.[Na+]") + == "NC(CC(=O)O)C(=O)[O-].O.O.[Na+]" + ) + + +def test_covalent_metal(): + """Test if covalent metal is disconnected.""" + assert _disconnect_metals_smiles("CCC(=O)O[Na]") == "CCC(=O)[O-].[Na+]" + + +def test_no_accidental_deletion(): + """Test metal ion is untouched.""" + assert _disconnect_metals_smiles("CCC(=O)[O-].[Na+]") == "CCC(=O)[O-].[Na+]" + + +def test_dimethylmercury(): + """Test dimethylmercury is not disconnected.""" + assert _disconnect_metals_smiles("C[Hg]C") == "C[Hg]C" + + +def test_zirconium(): + """Test zirconium (IV) ethoxide.""" + assert ( + _disconnect_metals_smiles("CCO[Zr](OCC)(OCC)OCC") + == "CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]" + ) diff --git a/opencadd/tests/compounds/standardization/test_handle_charges.py b/opencadd/tests/compounds/standardization/test_handle_charges.py new file mode 100644 index 00000000..a87e80a5 --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_handle_charges.py @@ -0,0 +1,125 @@ +""" +test for the module `handle_charges` + +derived from MolVS's tests: https://github.com/mcs07/MolVS/blob/master/tests/test_charge.py +""" +import pytest +import sys + +from rdkit import Chem + +from opencadd.compounds.standardization import handle_charges + + +def _uncharge_smiles(smiles): + """Utility function that returns the uncharged SMILES for a given + SMILES string. + """ + mol = Chem.MolFromSmiles(smiles) + mol = handle_charges.uncharge(mol) + if mol: + return Chem.MolToSmiles(mol, isomericSmiles=True) + + +def test_neutralization(): + """Test neutralization of ionized acids and bases.""" + assert ( + _uncharge_smiles("C(C(=O)[O-])(Cc1n[n-]nn1)(C[NH3+])(C[N+](=O)[O-])") + == "NCC(Cc1nn[nH]n1)(C[N+](=O)[O-])C(=O)O" + ) + + +def test_zwitterion(): + """Test preservation of zwitterion.""" + assert _uncharge_smiles("n(C)1cc[n+]2cccc([O-])c12") == "Cn1cc[n+]2cccc([O-])c12" + + +def test_choline(): + """Choline should be left with a positive charge.""" + assert _uncharge_smiles("C[N+](C)(C)CCO") == "C[N+](C)(C)CCO" + + +def test_hydrogen(): + """This should have the hydrogen removed to give deanol as a charge parent.""" + assert _uncharge_smiles("C[NH+](C)CCO") == "CN(C)CCO" + + +def test_neutrality(): + """Overall system is already neutral.""" + assert _uncharge_smiles("[Na+].O=C([O-])c1ccccc1") == "O=C([O-])c1ccccc1.[Na+]" + + +def test_benzoate(): + """Benzoate ion to benzoic acid.""" + assert _uncharge_smiles("O=C([O-])c1ccccc1") == "O=C(O)c1ccccc1" + + +def test_histidine(): + """Charges in histidine should be neutralized.""" + assert _uncharge_smiles("[NH3+]C(Cc1cnc[nH]1)C(=O)[O-]") == "NC(Cc1cnc[nH]1)C(=O)O" + + +def test_fragment_neutralization(): + """Neutralize both fragments.""" + assert _uncharge_smiles("C[NH+](C)(C).[Cl-]") == "CN(C)C.Cl" + + +def test_oxigen_neutralisation(): + """Neutralise one oxygen.""" + assert _uncharge_smiles("[N+](=O)([O-])[O-]") == "O=[N+]([O-])[O-]" + + +def test_prefer_organic_fragments(): + """Smaller organic fragment should be chosen over larger inorganic fragment.""" + assert _uncharge_smiles("[N+](=O)([O-])[O-].[CH2]") == "O=[N+]([O-])[O-].[CH2]" + + +def test_oxygen_balancing(): + """Single oxygen should be protonated, the other left to balance the positive nitrogen.""" + assert _uncharge_smiles("C[N+](C)(C)CC([O-])C[O-]") == "C[N+](C)(C)CC([O-])CO" + + +def test_strongest_acid(): + """Strongest acid should be left ionized.""" + assert ( + _uncharge_smiles("[O-]C(=O)C[n+]1ccn2cccc([O-])c12") + == "O=C([O-])C[n+]1ccn2cccc(O)c21" + ) + + +def test_charge_neutralization(): + """All charges should be neutralized.""" + assert _uncharge_smiles("[NH+](C)(C)CC([O-])C[O-]") == "CN(C)CC(O)CO" + + +def test_uncharge(): + """All charges should be neutralized.""" + assert _uncharge_smiles("CNCC([O-])C[O-]") == "CNCC(O)CO" + + +# Tests for Reionize + + +def _reionize_smiles(smiles): + """Utility function that returns the uncharged SMILES for a given + SMILES string. + """ + mol = Chem.MolFromSmiles(smiles) + mol = handle_charges.reionize(mol) + if mol: + return Chem.MolToSmiles(mol) + + +def test_proton_to_weak_acid(): + """Test reionizer moves proton to weaker acid.""" + assert ( + _reionize_smiles("C1=C(C=CC(=C1)[S]([O-])=O)[S](O)(=O)=O") + == "O=S(O)c1ccc(S(=O)(=O)[O-])cc1" + ) + + +def test_charged_carbon(): + """Test charged carbon doesn't get recognised as + alpha-carbon-hydrogen-keto. + """ + assert _reionize_smiles("CCOC(=O)C(=O)[CH-]C#N") == "CCOC(=O)C(=O)[CH-]C#N" diff --git a/opencadd/tests/compounds/standardization/test_handle_fragments.py b/opencadd/tests/compounds/standardization/test_handle_fragments.py new file mode 100644 index 00000000..8a57be61 --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_handle_fragments.py @@ -0,0 +1,80 @@ +""" +test for the module `handle fragments` + +derived from MolVS's tests: https://github.com/mcs07/MolVS/blob/master/tests/test_fragment.py +""" +import pytest +import sys + +from rdkit import Chem + +from opencadd.compounds.standardization import handle_fragments + + +def _remove_fragment_smiles(smiles): + """Utility function that returns the result SMILES after + remove_fragments is applied to given a SMILES string.""" + mol = Chem.MolFromSmiles(smiles) + mol = handle_fragments.remove_fragments(mol) + return Chem.MolToSmiles(mol) + + +def test_remove_single_salt(): + """Single Salt removal.""" + assert _remove_fragment_smiles("CN(C)C.Cl") == "CN(C)C" + + +def test_remove_multiple_salts(): + """Multiple salt removal.""" + assert _remove_fragment_smiles("CN(C)C.Cl.Cl.Br") == "CN(C)C" + + +def test_fragment_patterns(): + """FragmentPatterns should match entire fragments only, matches + within larger fragments should be left. + """ + assert _remove_fragment_smiles("CN(Br)Cl") == "CN(Cl)Br" + assert _remove_fragment_smiles("CN(Br)Cl.Cl") == "CN(Cl)Br" + + +def test_charged_salts(): + """Charged salts.""" + assert _remove_fragment_smiles("C[NH+](C)(C).[Cl-]") == "C[NH+](C)C" + + +def test_last_match(): + """Last match should be left.""" + assert _remove_fragment_smiles("CC(=O)O.[Na]") == "CC(=O)O" + + +def test_left_identical(): + """Multiple identical last fragments should all be left.""" + assert _remove_fragment_smiles("Br.Br") == "Br.Br" + + +def test_remove_multiple_fragment(): + """Test multiple fragment removal.""" + assert ( + _remove_fragment_smiles("[Na+].OC(=O)Cc1ccc(CN)cc1.OS(=O)(=O)C(F)(F)F") + == "NCc1ccc(CC(=O)O)cc1" + ) + + +def test_1_4_Dioxiane(): + """1,4-Dioxane should be removed.""" + assert _remove_fragment_smiles("c1ccccc1O.O1CCOCC1") == "Oc1ccccc1" + + +def test_benzene(): + """Benzene should be removed.""" + assert _remove_fragment_smiles("c1ccccc1.CCCBr") == "CCCBr" + + +def test_remove_various_fragments(): + """Various fragments should be removed.""" + assert ( + _remove_fragment_smiles( + "CC(NC1=CC=C(O)C=C1)=O.CCCCC.O.CCO.CCCO.C1CCCCC1.C1CCCCCC1" + ) + == "CC(=O)Nc1ccc(O)cc1" + ) diff --git a/opencadd/tests/compounds/standardization/test_handle_hydrogens.py b/opencadd/tests/compounds/standardization/test_handle_hydrogens.py new file mode 100644 index 00000000..fd9fa436 --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_handle_hydrogens.py @@ -0,0 +1,30 @@ +""" +test for the module `handle_hydrogens` +""" +import pytest + +from rdkit import Chem + +from opencadd.compounds.standardization import handle_hydrogens + + +def _evaluation_mol_generator(test_smiles=None, test_inchi=None): + """Creates mol files directly with rdkits functions for evaluation. + """ + if test_smiles is not None: + return Chem.MolFromSmiles(test_smiles, sanitize=False) + if test_inchi is not None: + return Chem.MolFromInchi(test_inchi) + + +def test_remove_hydrogen(): + assert ( + Chem.MolToInchi( + handle_hydrogens.remove_hydrogens( + _evaluation_mol_generator( + test_inchi="InChI=1S/2C7H6O2.Ca/c2*8-7(9)6-4-2-1-3-5-6;/h2*1-5H,(H,8,9);/q;;+2/p-2" + ) + ) + ) + == "InChI=1S/2C7H6O2.Ca/c2*8-7(9)6-4-2-1-3-5-6;/h2*1-5H,(H,8,9);/q;;+2/p-2" + ) diff --git a/opencadd/tests/compounds/standardization/test_handle_tautomers.py b/opencadd/tests/compounds/standardization/test_handle_tautomers.py new file mode 100644 index 00000000..e6985037 --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_handle_tautomers.py @@ -0,0 +1,543 @@ +""" +test for the module `handle_tautomers` + +Partially derived from MolVS's tests and RDKIT MolStandardize tutorial: +https://github.com/mcs07/MolVS/blob/master/tests/test_tautomer.py +""" +import pytest + +from rdkit import Chem + +from opencadd.compounds.standardization.handle_tautomers import enumerate_tautomer, canonicalize_tautomer + + +def test_1_3_keto_enol_enumeration(): + """Enumerate 1,3 keto/enol tautomer.""" + assert enumerate_tautomer("C1(=CCCCC1)O") == {"OC1=CCCCC1", "O=C1CCCCC1"} + assert enumerate_tautomer("C1(CCCCC1)=O") == {"OC1=CCCCC1", "O=C1CCCCC1"} + + +def test_acetophenone_keto_enol_enumeration(): + """Enumerate acetophenone keto/enol tautomer.""" + assert enumerate_tautomer("C(=C)(O)C1=CC=CC=C1") == { + "C=C(O)c1ccccc1", + "CC(=O)c1ccccc1", + } + assert enumerate_tautomer("CC(C)=O") == {"CC(C)=O", "C=C(C)O"} + + +def test_1_5_keto_enol_enumeration3(): + """1,5 keto/enol tautomer""" + assert enumerate_tautomer("C1(=CC=CCC1)O") == { + "O=C1C=CCCC1", + "OC1=CCC=CC1", + "OC1=CC=CCC1", + "O=C1CC=CCC1", + "OC1=CCCC=C1", + } + + +def test_aliphatic_imine_enumeration(): + """aliphatic imine tautomer""" + assert enumerate_tautomer("C1(CCCCC1)=N") == {"N=C1CCCCC1", "NC1=CCCCC1"} + assert enumerate_tautomer("C1(=CCCCC1)N") == {"N=C1CCCCC1", "NC1=CCCCC1"} + + +def test_special_imine_enumeration(): + """special imine tautomer""" + assert enumerate_tautomer("C1(C=CC=CN1)=CC") == { + "CC=C1C=CC=CN1", + "CCc1ccccn1", + "CC=C1C=CCC=N1", + } + assert enumerate_tautomer("C1(=NC=CC=C1)CC") == { + "CC=C1C=CC=CN1", + "CCc1ccccn1", + "CC=C1C=CCC=N1", + } + + +def test_1_3_aromatic_heteroatom_enumeration(): + """1,3 aromatic heteroatom H shift""" + assert enumerate_tautomer("O=c1cccc[nH]1") == {"Oc1ccccn1", "O=c1cccc[nH]1"} + assert enumerate_tautomer("Oc1ccccn1") == {"Oc1ccccn1", "O=c1cccc[nH]1"} + assert enumerate_tautomer("Oc1ncc[nH]1") == {"Oc1ncc[nH]1", "O=c1[nH]cc[nH]1"} + + +def test_1_3_heteroatom_enumeration(): + """1,3 heteroatom H shift""" + assert enumerate_tautomer("OC(C)=NC") == {"CN=C(C)O", "CNC(C)=O", "C=C(O)NC"} + assert enumerate_tautomer("CNC(C)=O") == {"CN=C(C)O", "CNC(C)=O", "C=C(O)NC"} + assert enumerate_tautomer("S=C(N)N") == {"N=C(N)S", "NC(N)=S"} + assert enumerate_tautomer("SC(N)=N") == {"N=C(N)S", "NC(N)=S"} + assert enumerate_tautomer("N=c1[nH]ccn(C)1") == {"Cn1ccnc1N", "Cn1cc[nH]c1=N"} + assert enumerate_tautomer("CN=c1[nH]cncc1") == { + "CN=c1ccnc[nH]1", + "CNc1ccncn1", + "CN=c1cc[nH]cn1", + } + + +def test_1_5_aromatic_heteroatom_enumeration(): + """1,5 aromatic heteroatom H shift""" + assert enumerate_tautomer("Oc1cccc2ccncc12") == { + "O=c1cccc2cc[nH]cc1-2", + "Oc1cccc2ccncc12", + } + assert enumerate_tautomer("O=c1cccc2cc[nH]cc1-2") == { + "O=c1cccc2cc[nH]cc1-2", + "Oc1cccc2ccncc12", + } + assert enumerate_tautomer("Cc1n[nH]c2ncnn12") == { + "C=C1NNc2ncnn21", + "Cc1n[nH]c2ncnn12", + "Cc1nnc2[nH]cnn12", + "C=C1NN=C2N=CNN12", + "Cc1nnc2nc[nH]n12", + "C=C1NN=C2NC=NN12", + } + assert enumerate_tautomer("Cc1nnc2nc[nH]n12") == { + "C=C1NNc2ncnn21", + "Cc1n[nH]c2ncnn12", + "Cc1nnc2[nH]cnn12", + "C=C1NN=C2N=CNN12", + "Cc1nnc2nc[nH]n12", + "C=C1NN=C2NC=NN12", + } + assert enumerate_tautomer("Oc1ccncc1") == {"Oc1ccncc1", "O=c1cc[nH]cc1"} + assert enumerate_tautomer("Oc1c(cccc3)c3nc2ccncc12") == { + "Oc1c2ccccc2nc2ccncc12", + "O=c1c2ccccc2[nH]c2ccncc12", + "O=c1c2c[nH]ccc-2nc2ccccc12", + } + assert enumerate_tautomer("C2(=C1C(=NC=N1)[NH]C(=N2)N)O") == { + "N=c1[nH]c2ncnc-2c(O)[nH]1", + "Nc1nc(O)c2ncnc-2[nH]1", + "N=c1nc(O)c2nc[nH]c2[nH]1", + "Nc1nc2ncnc-2c(O)[nH]1", + "N=c1nc2nc[nH]c2c(O)[nH]1", + "N=c1[nH]c(=O)c2nc[nH]c2[nH]1", + "N=c1nc(O)c2[nH]cnc2[nH]1", + "N=c1[nH]c(=O)c2[nH]cnc2[nH]1", + "Nc1nc(=O)c2nc[nH]c2[nH]1", + "Nc1nc(O)c2nc[nH]c2n1", + "Nc1nc(=O)c2[nH]cnc2[nH]1", + "N=c1nc2[nH]cnc2c(O)[nH]1", + "Nc1nc2[nH]cnc2c(=O)[nH]1", + "Nc1nc2nc[nH]c2c(=O)[nH]1", + "Nc1nc(O)c2[nH]cnc2n1", + } + assert enumerate_tautomer("C2(C1=C([NH]C=N1)[NH]C(=N2)N)=O") == { + "N=c1[nH]c2ncnc-2c(O)[nH]1", + "Nc1nc(O)c2ncnc-2[nH]1", + "N=c1nc(O)c2nc[nH]c2[nH]1", + "Nc1nc2ncnc-2c(O)[nH]1", + "N=c1nc2nc[nH]c2c(O)[nH]1", + "N=c1[nH]c(=O)c2nc[nH]c2[nH]1", + "N=c1nc(O)c2[nH]cnc2[nH]1", + "N=c1[nH]c(=O)c2[nH]cnc2[nH]1", + "Nc1nc(=O)c2nc[nH]c2[nH]1", + "Nc1nc(O)c2nc[nH]c2n1", + "Nc1nc(=O)c2[nH]cnc2[nH]1", + "N=c1nc2[nH]cnc2c(O)[nH]1", + "Nc1nc2[nH]cnc2c(=O)[nH]1", + "Nc1nc2nc[nH]c2c(=O)[nH]1", + "Nc1nc(O)c2[nH]cnc2n1", + } + assert enumerate_tautomer("Oc1n(C)ncc1") == { + "Cn1nccc1O", + "CN1N=CCC1=O", + "Cn1[nH]ccc1=O", + } + assert enumerate_tautomer("O=c1nc2[nH]ccn2cc1") == { + "O=c1ccn2cc[nH]c2n1", + "Oc1ccn2ccnc2n1", + "O=c1ccn2ccnc2[nH]1", + } + assert enumerate_tautomer("N=c1nc[nH]cc1") == { + "N=c1cc[nH]cn1", + "N=c1ccnc[nH]1", + "Nc1ccncn1", + } + assert enumerate_tautomer("N=c(c1)ccn2cc[nH]c12") == { + "N=c1ccn2cc[nH]c2c1", + "Nc1ccn2ccnc2c1", + } + assert enumerate_tautomer("CN=c1nc[nH]cc1") == { + "CN=c1ccnc[nH]1", + "CNc1ccncn1", + "CN=c1cc[nH]cn1", + } + + +def test_1_3_1_5_aromatic_heteroatom_enumeration(): + """1,3 and 1,5 aromatic heteroatom H shift""" + assert enumerate_tautomer("Oc1ncncc1") == { + "Oc1ccncn1", + "O=c1ccnc[nH]1", + "O=c1cc[nH]cn1", + } + + +def test_1_7_aromatic_heteroatom_enumeration(): + """1,7 aromatic heteroatom H shift""" + assert enumerate_tautomer("c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1") == { + "c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1", + "c1ccc2c(c1)=NC(c1nc3ccccc3[nH]1)N=2", + "c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2", + } + assert enumerate_tautomer("c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2") == { + "c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1", + "c1ccc2c(c1)=NC(c1nc3ccccc3[nH]1)N=2", + "c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2", + } + + +def test_1_9_aromatic_heteroatom_enumeration(): + """1,9 aromatic heteroatom H shift""" + assert enumerate_tautomer("CNc1ccnc2ncnn21") == { + "CN=c1cc[nH]c2ncnn12", + "CN=c1ccnc2nc[nH]n12", + "CN=c1ccnc2[nH]cnn12", + "CNc1ccnc2ncnn12", + } + assert enumerate_tautomer("CN=c1ccnc2nc[nH]n21") == { + "CN=c1ccnc2nc[nH]n12", + "CN=c1cc[nH]c2ncnn12", + "CN=c1ccnc2[nH]cnn12", + "CNc1ccnc2ncnn12", + } + + +def test_1_11_aromatic_heteroatom_enumeration(): + """1,11 aromatic heteroatom H shift""" + assert enumerate_tautomer("Nc1ccc(C=C2C=CC(=O)C=C2)cc1") == { + "Nc1ccc(C=C2C=CC(=O)C=C2)cc1", + "N=C1C=CC(=CC2C=CC(=O)C=C2)C=C1", + "N=C1C=CC(=Cc2ccc(O)cc2)C=C1", + "N=C1C=CC(C=C2C=CC(=O)C=C2)C=C1", + } + assert enumerate_tautomer("N=C1C=CC(=Cc2ccc(O)cc2)C=C1") == { + "Nc1ccc(C=C2C=CC(=O)C=C2)cc1", + "N=C1C=CC(=CC2C=CC(=O)C=C2)C=C1", + "N=C1C=CC(=Cc2ccc(O)cc2)C=C1", + "N=C1C=CC(C=C2C=CC(=O)C=C2)C=C1", + } + + +def test_heterocyclic_enumeration(): + """heterocyclic tautomer""" + assert enumerate_tautomer("n1ccc2ccc[nH]c12") == { + "c1c[nH]c2nccc-2c1", + "c1cnc2[nH]ccc2c1", + } + assert enumerate_tautomer("c1cc(=O)[nH]c2nccn12") == { + "O=c1ccn2cc[nH]c2n1", + "Oc1ccn2ccnc2n1", + "O=c1ccn2ccnc2[nH]1", + } + assert enumerate_tautomer("c1cnc2c[nH]ccc12") == { + "c1cc2cc[nH]c2cn1", + "c1cc2cc[nH]cc-2n1", + } + assert enumerate_tautomer("n1ccc2c[nH]ccc12") == { + "c1cc2[nH]ccc2cn1", + "c1cc2c[nH]ccc-2n1", + } + assert enumerate_tautomer("c1cnc2ccc[nH]c12") == { + "c1c[nH]c2ccnc-2c1", + "c1cnc2cc[nH]c2c1", + } + + +def test_furanone_enumeration(): + """furanone tautomer""" + assert enumerate_tautomer("C1=CC=C(O1)O") == {"Oc1ccco1", "O=C1CC=CO1"} + assert enumerate_tautomer("O=C1CC=CO1") == {"Oc1ccco1", "O=C1CC=CO1"} + + +def test_keten_ynol_enumeration(): + """keten/ynol tautomer""" + assert enumerate_tautomer("CC=C=O") == {"CC=C=O", "CC#CO"} + assert enumerate_tautomer("CC#CO") == {"CC=C=O", "CC#CO"} + + +def test_ionic_nitro_aci_nitro_enumeration(): + """ionic nitro/aci-nitro tautomer""" + assert enumerate_tautomer("C([N+](=O)[O-])C") == { + "CC[N+](=O)[O-]", + "CC=[N+]([O-])O", + } + assert enumerate_tautomer("C(=[N+](O)[O-])C") == { + "CC[N+](=O)[O-]", + "CC=[N+]([O-])O", + } + + +def test_oxim_nitroso_enumeration(): + """oxim nitroso tautomer""" + assert enumerate_tautomer("CC(C)=NO") == {"CC(C)N=O", "CC(C)=NO", "C=C(C)NO"} + assert enumerate_tautomer("CC(C)N=O") == {"CC(C)N=O", "CC(C)=NO", "C=C(C)NO"} + assert enumerate_tautomer("O=Nc1ccc(O)cc1") == { + "O=NC1C=CC(=O)C=C1", + "O=C1C=CC(=NO)C=C1", + "O=Nc1ccc(O)cc1", + } + assert enumerate_tautomer("O=C1C=CC(=NO)C=C1") == { + "O=NC1C=CC(=O)C=C1", + "O=C1C=CC(=NO)C=C1", + "O=Nc1ccc(O)cc1", + } + + +def test_cyano_iso_cyanic_acid_enumeration(): + """cyano/iso-cyanic acid tautomer""" + assert enumerate_tautomer("C(#N)O") == {"N#CO", "N=C=O"} + assert enumerate_tautomer("C(=N)=O") == {"N#CO", "N=C=O"} + + +def test_isocyanide_enumeration(): + """isocyanide tautomer""" + assert enumerate_tautomer("C#N") == {"[C-]#[NH+]", "C#N"} + assert enumerate_tautomer("[C-]#[NH+]") == {"[C-]#[NH+]", "C#N"} + + +def test_phosphonic_acid_enumeration(): + """phosphonic acid tautomer""" + assert enumerate_tautomer("[PH](=O)(O)(O)") == {"OP(O)O", "O=[PH](O)O"} + assert enumerate_tautomer("P(O)(O)O") == {"OP(O)O", "O=[PH](O)O"} + + +def test_mobile_double_stereochemistry_enumeration(): + """Remove stereochemistry from mobile double bonds""" + assert enumerate_tautomer("c1(ccccc1)/C=C(/O)\\C") == { + "C=C(O)Cc1ccccc1", + "CC(O)=Cc1ccccc1", + "CC(=O)Cc1ccccc1", + } + assert enumerate_tautomer("C/C=C/C(C)=O") == { + "C=C(O)C=CC", + "C=CCC(=C)O", + "CC=CC(C)=O", + "C=CCC(C)=O", + "C=CC=C(C)O", + } + assert enumerate_tautomer("C/C=C\\C(C)=O") == { + "C=C(O)C=CC", + "C=CCC(=C)O", + "CC=CC(C)=O", + "C=CCC(C)=O", + "C=CC=C(C)O", + } + + +def test_gaunine_enumeration(): + """Gaunine tautomers""" + assert enumerate_tautomer("N1C(N)=NC=2N=CNC2C1=O") == { + "N=c1[nH]c(=O)c2[nH]cnc2[nH]1", + "N=c1[nH]c(=O)c2nc[nH]c2[nH]1", + "N=c1[nH]c2ncnc-2c(O)[nH]1", + "N=c1nc(O)c2[nH]cnc2[nH]1", + "N=c1nc(O)c2nc[nH]c2[nH]1", + "N=c1nc2[nH]cnc2c(O)[nH]1", + "N=c1nc2nc[nH]c2c(O)[nH]1", + "Nc1nc(=O)c2[nH]cnc2[nH]1", + "Nc1nc(=O)c2nc[nH]c2[nH]1", + "Nc1nc(O)c2[nH]cnc2n1", + "Nc1nc(O)c2nc[nH]c2n1", + "Nc1nc(O)c2ncnc-2[nH]1", + "Nc1nc2[nH]cnc2c(=O)[nH]1", + "Nc1nc2nc[nH]c2c(=O)[nH]1", + "Nc1nc2ncnc-2c(O)[nH]1", + } + + +def test_many_enumeration(): + """Test a structure with hundreds of tautomers.""" + assert len(enumerate_tautomer("[H][C](CO)(NC(=O)C1=C(O)C(O)=CC=C1)C(O)=O")) == 375 + + +def test_1_3_keto_enol_canonicalization(): + """1,3 keto/enol tautomer""" + assert canonicalize_tautomer("C1(=CCCCC1)O") == "O=C1CCCCC1" + assert canonicalize_tautomer("C1(CCCCC1)=O") == "O=C1CCCCC1" + + +def test_acetophenone_keto_enol_canonicalization(): + """Acetophenone keto/enol tautomer""" + assert canonicalize_tautomer("C(=C)(O)C1=CC=CC=C1") == "CC(=O)c1ccccc1" + + +def test_acetone_keto_enol_canonicalization(): + """Acetone keto/enol tautomer""" + assert canonicalize_tautomer("CC(C)=O") == "CC(C)=O" + + +def test_keto_enol_canonicalization(): + """keto/enol tautomer""" + assert canonicalize_tautomer("OC(C)=C(C)C") == "CC(=O)C(C)C" + + +def test_phenylpropanone_keto_enol_canonicalization(): + """1-phenyl-2-propanone enol/keto""" + assert canonicalize_tautomer("c1(ccccc1)CC(=O)C") == "CC(=O)Cc1ccccc1" + + +def test_1_5_keto_enol_canonicalization(): + """1,5 keto/enol tautomer""" + assert ( + canonicalize_tautomer("Oc1nccc2cc[nH]c(=N)c12") == "N=c1[nH]ccc2cc[nH]c(=O)c12" + ) + assert canonicalize_tautomer("C1(C=CCCC1)=O") == "O=C1C=CCCC1" + assert canonicalize_tautomer("C1(=CC=CCC1)O") == "O=C1C=CCCC1" + + +def test_aliphatic_imine_canonicalization(): + """aliphatic imine tautomer""" + assert canonicalize_tautomer("C1(CCCCC1)=N") == "N=C1CCCCC1" + assert canonicalize_tautomer("C1(=CCCCC1)N") == "N=C1CCCCC1" + + +def test_special_imine_canonicalization(): + """special imine tautomer""" + assert canonicalize_tautomer("C1(C=CC=CN1)=CC") == "CCc1ccccn1" + assert canonicalize_tautomer("C1(=NC=CC=C1)CC") == "CCc1ccccn1" + + +def test_1_3_aromatic_heteroatom_canonicalization(): + """1,3 aromatic heteroatom H shift""" + assert canonicalize_tautomer("O=c1cccc[nH]1") == "O=c1cccc[nH]1" + assert canonicalize_tautomer("Oc1ccccn1") == "O=c1cccc[nH]1" + assert canonicalize_tautomer("Oc1ncc[nH]1") == "O=c1[nH]cc[nH]1" + + +def test_1_3_heteroatom_canonicalization(): + """1,3 heteroatom H shift""" + assert canonicalize_tautomer("OC(C)=NC") == "CNC(C)=O" + assert canonicalize_tautomer("CNC(C)=O") == "CNC(C)=O" + assert canonicalize_tautomer("S=C(N)N") == "NC(N)=S" + assert canonicalize_tautomer("SC(N)=N") == "NC(N)=S" + assert canonicalize_tautomer("N=c1[nH]ccn(C)1") == "Cn1cc[nH]c1=N" + assert canonicalize_tautomer("CN=c1[nH]cncc1") == "CN=c1cc[nH]cn1" + + +def test_1_5_aromatic_heteroatom_canonicalization(): + """1,5 aromatic heteroatom H shift""" + assert canonicalize_tautomer("Oc1cccc2ccncc12") == "Oc1cccc2ccncc12" + assert canonicalize_tautomer("O=c1cccc2cc[nH]cc1-2") == "Oc1cccc2ccncc12" + assert canonicalize_tautomer("Cc1n[nH]c2ncnn12") == "Cc1n[nH]c2ncnn12" + assert canonicalize_tautomer("Cc1nnc2nc[nH]n12") == "Cc1n[nH]c2ncnn12" + assert canonicalize_tautomer("Oc1ccncc1") == "O=c1cc[nH]cc1" + assert ( + canonicalize_tautomer("Oc1c(cccc3)c3nc2ccncc12") == "O=c1c2ccccc2[nH]c2ccncc12" + ) + assert ( + canonicalize_tautomer("C2(=C1C(=NC=N1)[NH]C(=N2)N)O") + == "N=c1[nH]c(=O)c2[nH]cnc2[nH]1" + ) + assert ( + canonicalize_tautomer("C2(C1=C([NH]C=N1)[NH]C(=N2)N)=O") + == "N=c1[nH]c(=O)c2[nH]cnc2[nH]1" + ) + assert canonicalize_tautomer("Oc1n(C)ncc1") == "Cn1[nH]ccc1=O" + assert canonicalize_tautomer("O=c1nc2[nH]ccn2cc1") == "O=c1ccn2cc[nH]c2n1" + assert canonicalize_tautomer("N=c1nc[nH]cc1") == "N=c1cc[nH]cn1" + assert canonicalize_tautomer("N=c(c1)ccn2cc[nH]c12") == "N=c1ccn2cc[nH]c2c1" + assert canonicalize_tautomer("CN=c1nc[nH]cc1") == "CN=c1cc[nH]cn1" + + +def test_1_3_1_5_aromatic_heteroatom_canonicalization(): + """1,3 and 1,5 aromatic heteroatom H shift""" + assert canonicalize_tautomer("Oc1ncncc1") == "O=c1cc[nH]cn1" + + +def test_1_7_aromatic_heteroatom_canonicalization(): + """1,7 aromatic heteroatom H shift""" + assert ( + canonicalize_tautomer("c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1") + == "c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1" + ) + assert ( + canonicalize_tautomer("c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2") + == "c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1" + ) + + +def test_1_9_aromatic_heteroatom_canonicalization(): + """1,9 aromatic heteroatom H shift""" + assert canonicalize_tautomer("CNc1ccnc2ncnn21") == "CN=c1cc[nH]c2ncnn12" + assert canonicalize_tautomer("CN=c1ccnc2nc[nH]n21") == "CN=c1cc[nH]c2ncnn12" + + +def test_1_11_aromatic_heteroatom_canonicalization(): + """1,11 aromatic heteroatom H shift""" + assert ( + canonicalize_tautomer("Nc1ccc(C=C2C=CC(=O)C=C2)cc1") + == "Nc1ccc(C=C2C=CC(=O)C=C2)cc1" + ) + assert ( + canonicalize_tautomer("N=C1C=CC(=Cc2ccc(O)cc2)C=C1") + == "Nc1ccc(C=C2C=CC(=O)C=C2)cc1" + ) + + +def test_heterocyclic_canonicalization(): + """heterocyclic tautomer""" + assert canonicalize_tautomer("n1ccc2ccc[nH]c12") == "c1cnc2[nH]ccc2c1" + assert canonicalize_tautomer("c1cc(=O)[nH]c2nccn12") == "O=c1ccn2cc[nH]c2n1" + assert canonicalize_tautomer("c1cnc2c[nH]ccc12") == "c1cc2cc[nH]c2cn1" + assert canonicalize_tautomer("n1ccc2c[nH]ccc12") == "c1cc2[nH]ccc2cn1" + assert canonicalize_tautomer("c1cnc2ccc[nH]c12") == "c1cnc2cc[nH]c2c1" + + +def test_furanone_canonicalization(): + """furanone tautomer""" + assert canonicalize_tautomer("C1=CC=C(O1)O") == "Oc1ccco1" + assert canonicalize_tautomer("O=C1CC=CO1") == "Oc1ccco1" + + +def test_keten_ynol_canonicalization(): + """keten/ynol tautomer""" + assert canonicalize_tautomer("CC=C=O") == "CC=C=O" + assert canonicalize_tautomer("CC#CO") == "CC=C=O" + + +def test_ionic_nitro_aci_nitro_canonicalization(): + """ionic nitro/aci-nitro tautomer""" + assert canonicalize_tautomer("C([N+](=O)[O-])C") == "CC[N+](=O)[O-]" + assert canonicalize_tautomer("C(=[N+](O)[O-])C") == "CC[N+](=O)[O-]" + + +def test_oxim_nitroso_canonicalization(): + """oxim nitroso tautomer""" + assert canonicalize_tautomer("CC(C)=NO") == "CC(C)=NO" + assert canonicalize_tautomer("CC(C)N=O") == "CC(C)=NO" + + +def test_oxim_nitroso_phenol_canonicalization(): + """oxim/nitroso tautomer via phenol""" + assert canonicalize_tautomer("O=Nc1ccc(O)cc1") == "O=Nc1ccc(O)cc1" + assert canonicalize_tautomer("O=C1C=CC(=NO)C=C1") == "O=Nc1ccc(O)cc1" + + +def test_cyano_iso_cyanic_acid_canonicalization(): + """cyano/iso-cyanic acid tautomer""" + assert canonicalize_tautomer("C(#N)O") == "N=C=O" + assert canonicalize_tautomer("C(=N)=O") == "N=C=O" + + +def test_formamidinesulfinic_acid_canonicalization(): + """formamidinesulfinic acid tautomer""" + assert canonicalize_tautomer("N=C(N)S(=O)O") == "N=C(N)S(=O)O" + + +def test_isocyanide_canonicalization(): + """isocyanide tautomer""" + assert canonicalize_tautomer("C#N") == "C#N" + assert canonicalize_tautomer("[C-]#[NH+]") == "C#N" + + +def test_phosphonic_acid_canonicalization(): + """phosphonic acid tautomer""" + assert canonicalize_tautomer("[PH](=O)(O)(O)") == "O=[PH](O)O" + assert canonicalize_tautomer("P(O)(O)O") == "O=[PH](O)O" diff --git a/opencadd/tests/compounds/standardization/test_normalize_molecules.py b/opencadd/tests/compounds/standardization/test_normalize_molecules.py new file mode 100644 index 00000000..84dc2a87 --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_normalize_molecules.py @@ -0,0 +1,67 @@ +""" +test for the module `normalize_molecules` + +derived from MolVS's tests: https://github.com/mcs07/MolVS/blob/master/tests/test_normalize.py +""" +import pytest + +from rdkit import Chem + +from opencadd.compounds.standardization import normalize_molecules + + +def normalization_for_smiles(smiles): + """Does normalization after converting a SMILES string into a mol. + """ + mol = Chem.MolFromSmiles(smiles, sanitize=False) + mol = normalize_molecules.normalize(mol) + if mol: + return Chem.MolToSmiles(mol, isomericSmiles=True) + + +def test_nitro(): + """Test nitro group normalozation.""" + assert normalization_for_smiles("CN(=O)=O") == "C[N+](=O)[O-]" + + +def test_sulfoxide(): + """Test sulfoxide normalization.""" + assert normalization_for_smiles("CS(C)=O") == "C[S+](C)[O-]" + + +def test_sulfone(): + """Test sulfone normalization.""" + assert normalization_for_smiles("C[S+2]([O-])([O-])O") == "CS(=O)(=O)O" + + +def test_1_3_charge_recombination(): + """Test 1,3-seperated charges are recombined""" + assert normalization_for_smiles("CC([O-])=[N+](C)C") == "CC(=O)N(C)C" + + +def test_1_3_charge_recombination_aromatic(): + """Test 1,3-separated charges are recombined.""" + assert normalization_for_smiles("C[n+]1ccccc1[O-]") == "Cn1ccccc1=O" + + +def test_1_3_charge_recombination_exception(): + """Test a case where 1,3-separated charges should not be recombined. + """ + assert ( + normalization_for_smiles("CC12CCCCC1(Cl)[N+]([O-])=[N+]2[O-]") + == "CC12CCCCC1(Cl)[N+]([O-])=[N+]2[O-]" + ) + + +def test_1_5_charge_recombination(): + """Test 1,5-separated charges are recombined.""" + assert normalization_for_smiles("C[N+](C)=C\\C=C\\[O-]") == "CN(C)C=CC=O" + + +def test_1_5_charge_recombination_exception(): + """Test a case where 1,5-separated charges should not be recombined. + """ + assert ( + normalization_for_smiles("C[N+]1=C2C=[N+]([O-])C=CN2CCC1") + == "C[N+]1=C2C=[N+]([O-])C=CN2CCC1" + ) diff --git a/opencadd/tests/compounds/standardization/test_remove_salts.py b/opencadd/tests/compounds/standardization/test_remove_salts.py new file mode 100644 index 00000000..2173c6ab --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_remove_salts.py @@ -0,0 +1,74 @@ +""" +test for the module `remove_salts` +""" +import pytest +import sys +import rdkit + +from rdkit import Chem + +from opencadd.compounds.standardization.remove_salts import remove_salts + + +def _evaluation_mol_generator(test_smiles=None, test_inchi=None): + """Creates mol files directly with rdkits functions for evaluation. + """ + if test_smiles is not None: + return Chem.MolFromSmiles(test_smiles) + if test_inchi is not None: + return Chem.MolFromInchi(test_inchi) + + +def _molecule_test(test_inchi=None, test_smiles=None): + return Chem.MolToInchi( + remove_salts( + _evaluation_mol_generator(test_inchi=test_inchi, test_smiles=test_smiles) + ) + ) + + +def test_structure(): + """Only C(C(=O)[O-])(Cc1n[n-]nn1)(C[NH3+])(C[N+](=O)[O-] should be + left after stripping salts. + """ + assert ( + _molecule_test( + test_smiles="C(C(=O)[O-])(Cc1n[n-]nn1)(C[NH3+])(C[N+](=O)[O-].CCCCCCCCCCCCCCCCCC(=O)O.OCC(O)C1OC(=O)C(=C1O)O)" + ) + == "InChI=1S/C6H10N6O4/c7-2-6(5(13)14,3-12(15)16)1-4-8-10-11-9-4/h1-3,7H2,(H2,8,9,10,11,13,14)/p-1" + ) + + +def test_single_salts(): + """All salt fragments should be detected and stripped. + """ + assert ( + _molecule_test( + test_smiles="[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn]" + ) + == "" + ) + + +def test_complex_salts(): + """Complex salts, contained in salts.tsv should be detected. + """ + assert ( + _molecule_test(test_smiles="OC(C(O)C(=O)O)C(=O)O.O=C1NS(=O)(=O)c2ccccc12") == "" + ) + + +def test_custom_dictionary(): + """Configuration of a custom dictionary, by defining one, should + work. + """ + assert ( + Chem.MolToInchi( + remove_salts( + _evaluation_mol_generator(test_smiles="[Al].N.[Ba].[Bi]"), + dictionary=False, + defnData="[Al]", + ) + ) + == "InChI=1S/Ba.Bi.H3N.2H/h;;1H3;;" + ) diff --git a/opencadd/tests/compounds/standardization/test_standardizer.py b/opencadd/tests/compounds/standardization/test_standardizer.py new file mode 100644 index 00000000..a80e677e --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_standardizer.py @@ -0,0 +1,14 @@ +""" +Unit and regression test for the standardizer package. +""" + +# Import package, test suite, and other packages as needed + +import sys +import pytest +import opencadd.compounds.standardization + + +def test_standardizer_imported(): + """Sample test, will always pass so long as import statement worked""" + assert "standardizer" in sys.modules diff --git a/opencadd/tests/compounds/standardization/test_validate_molecules.py b/opencadd/tests/compounds/standardization/test_validate_molecules.py new file mode 100644 index 00000000..d9200b0a --- /dev/null +++ b/opencadd/tests/compounds/standardization/test_validate_molecules.py @@ -0,0 +1,95 @@ +""" +test for the module `validate_molecules` + +Partially derived from MolVS's tests and RDKIT MolStandardize tutorial: +https://github.com/mcs07/MolVS/blob/master/tests/test_validate.py +https://github.com/susanhleung/rdkit/blob/dev/GSOC2018_MolVS_Integration/rdkit/Chem/MolStandardize/tutorial/MolStandardize.ipynb +""" +import pytest + +from rdkit import Chem + +from opencadd.compounds.standardization import validate_molecules + + +def _evaluation_mol_generator(test_smiles=None, test_inchi=None): + """Creates mol files directly with rdkits functions for evaluation. + """ + if test_smiles is not None: + return Chem.MolFromSmiles(test_smiles, sanitize=False) + if test_inchi is not None: + return Chem.MolFromInchi(test_inchi) + + +def test_no_atom(): + """NoAtomValidation should log due to the lack of any atoms. + """ + assert validate_molecules.validate_default( + _evaluation_mol_generator(test_smiles="") + ) == ["ERROR: [NoAtomValidation] Molecule has no atoms"] + + +def test_fragment_dichloroethane(): + """FragmentValidation should identify 1,2-dichloroethane.""" + assert validate_molecules.validate_fragment( + _evaluation_mol_generator(test_smiles="ClCCCl.c1ccccc1O") + ) == ["INFO: [FragmentValidation] 1,2-dichloroethane is present"] + + +def test_fragment_dimethoxyethane(): + """FragmentValidation should identify 1,2-dimethoxyethane.""" + assert validate_molecules.validate_fragment( + _evaluation_mol_generator(test_smiles="COCCOC.CCCBr") + ) == ["INFO: [FragmentValidation] 1,2-dimethoxyethane is present"] + + +def test_neutrality(): + """NeutralValidation should identify net overall charge.""" + assert validate_molecules.validate_neutrality( + _evaluation_mol_generator(test_smiles="O=C([O-])c1ccccc1") + ) == ["INFO: [NeutralValidation] Not an overall neutral system (-1)"] + assert validate_molecules.validate_neutrality( + _evaluation_mol_generator(test_smiles="CN=[NH+]CN=N") + ) == ["INFO: [NeutralValidation] Not an overall neutral system (+1)"] + + +def test_isotope(): + """IsotopeValidation should identify atoms with isotope labels.""" + assert validate_molecules.validate_isotopes( + _evaluation_mol_generator(test_smiles="[13CH4]") + ) == ["INFO: [IsotopeValidation] Molecule contains isotope 13C"] + assert validate_molecules.validate_isotopes( + _evaluation_mol_generator(test_smiles="[2H]C(Cl)(Cl)Cl") + ) == ["INFO: [IsotopeValidation] Molecule contains isotope 2H"] + assert validate_molecules.validate_isotopes( + _evaluation_mol_generator(test_smiles="[2H]OC([2H])([2H])[2H]") + ) == ["INFO: [IsotopeValidation] Molecule contains isotope 2H"] + + +def test_valency(): + """ check_valency should validate the valency of every atom in the + input molecule. + """ + assert validate_molecules.check_valency( + _evaluation_mol_generator(test_smiles="CO(C)C") + ) == [ + "INFO: [ValenceValidation] Explicit valence for atom # 1 O, 3, is greater than permitted" + ] + + +def test_validate_allowed_atoms(): + """validate_allowed_atoms should accept as input a list of atoms, + anything not on the list should throw an error. + """ + assert validate_molecules.validate_allowed_atoms( + _evaluation_mol_generator(test_smiles="CC(=O)CF"), atomlist=[6, 7, 8] + ) == ["INFO: [AllowedAtomsValidation] Atom F is not in allowedAtoms list"] + + +def test_validate_disallowed_atoms(): + """validate_allowed_atoms should accept as input a list of atoms, + anything not on the list should throw an error. + """ + assert validate_molecules.validate_disallowed_atoms( + _evaluation_mol_generator(test_smiles="CC(=O)CF"), atomlist=[9, 17, 35] + ) == ["INFO: [DisallowedAtomsValidation] Atom F is in disallowedAtoms list"] From 650860eebb40df8ce745102671439d533e271809 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 24 Jan 2021 12:58:37 +0100 Subject: [PATCH 04/55] changed python formatter to black --- .../compounds/standardization/_version.py | 8 +++---- .../standardization/test_convert_format.py | 21 +++++++------------ .../standardization/test_detect_inorganic.py | 3 +-- .../standardization/test_handle_hydrogens.py | 3 +-- .../test_normalize_molecules.py | 9 +++----- .../standardization/test_remove_salts.py | 9 +++----- .../test_validate_molecules.py | 8 +++---- 7 files changed, 23 insertions(+), 38 deletions(-) diff --git a/opencadd/compounds/standardization/_version.py b/opencadd/compounds/standardization/_version.py index 8038dfd1..57ebb258 100644 --- a/opencadd/compounds/standardization/_version.py +++ b/opencadd/compounds/standardization/_version.py @@ -120,7 +120,7 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): dirname = os.path.basename(root) if dirname.startswith(parentdir_prefix): return { - "version": dirname[len(parentdir_prefix):], + "version": dirname[len(parentdir_prefix) :], "full-revisionid": None, "dirty": False, "error": None, @@ -190,7 +190,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of # just "foo-1.0". If we see a "tag: " prefix, prefer those. TAG = "tag: " - tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) + tags = set([r[len(TAG) :] for r in refs if r.startswith(TAG)]) if not tags: # Either we're using git < 1.8.3, or there really are no tags. We use # a heuristic: assume all version tags have a digit. The old git %d @@ -207,7 +207,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): for ref in sorted(tags): # sorting will prefer e.g. "2.0" over "2.0rc1" if ref.startswith(tag_prefix): - r = ref[len(tag_prefix):] + r = ref[len(tag_prefix) :] if verbose: print("picking %s" % r) return { @@ -307,7 +307,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): tag_prefix, ) return pieces - pieces["closest-tag"] = full_tag[len(tag_prefix):] + pieces["closest-tag"] = full_tag[len(tag_prefix) :] # distance: number of commits since tag pieces["distance"] = int(mo.group(2)) diff --git a/opencadd/tests/compounds/standardization/test_convert_format.py b/opencadd/tests/compounds/standardization/test_convert_format.py index 1a9a96fb..6c2ce7bd 100644 --- a/opencadd/tests/compounds/standardization/test_convert_format.py +++ b/opencadd/tests/compounds/standardization/test_convert_format.py @@ -12,8 +12,7 @@ def _evaluation_mol_generator(test_smiles=None, test_inchi=None): - """Creates mol files directly with rdkits functions for evaluation. - """ + """Creates mol files directly with rdkits functions for evaluation.""" if test_smiles is not None: return Chem.MolFromSmiles(test_smiles) if test_inchi is not None: @@ -42,26 +41,23 @@ def _test_path(fn): def test_convert_smiles_to_mol(test_smiles="C(C1C(C(C(C(O1)O)O)O)O)O"): - """Tests if the created file is a mol file. - """ + """Tests if the created file is a mol file.""" test_result = convert_format.convert_smiles_to_mol(test_smiles) assert isinstance(test_result, rdkit.Chem.rdchem.Mol) == True def test_convert_inchi_to_mol( - test_inchi="InChI=1S/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3-,4+,5-,6?/m1/s1" + test_inchi="InChI=1S/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3-,4+,5-,6?/m1/s1", ): - """Tests if the created file is a mol file. - """ + """Tests if the created file is a mol file.""" test_result = convert_format.convert_inchi_to_mol(test_inchi) assert isinstance(test_result, rdkit.Chem.rdchem.Mol) == True def test_convert_mol_to_smiles( - test_inchi="InChI=1S/C8H7O4S.Na/c9-8(10)7-3-1-6(2-4-7)5-13(11)12;/h1-4H,5H2,(H,9,10);/q;+1/p-1" + test_inchi="InChI=1S/C8H7O4S.Na/c9-8(10)7-3-1-6(2-4-7)5-13(11)12;/h1-4H,5H2,(H,9,10);/q;+1/p-1", ): - """Tests if the created file matches the file it originated from. - """ + """Tests if the created file matches the file it originated from.""" test_result = convert_format.convert_mol_to_smiles( _evaluation_mol_generator(test_inchi=test_inchi), canonical=False ) @@ -70,10 +66,9 @@ def test_convert_mol_to_smiles( def test_convert_mol_to_inchi( - test_inchi="InChI=1S/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3-,4+,5-,6?/m1/s1" + test_inchi="InChI=1S/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3-,4+,5-,6?/m1/s1", ): - """Tests if the created file matches the file it originated from. - """ + """Tests if the created file matches the file it originated from.""" test_result = convert_format.convert_mol_to_inchi( _evaluation_mol_generator(test_inchi=test_inchi) ) diff --git a/opencadd/tests/compounds/standardization/test_detect_inorganic.py b/opencadd/tests/compounds/standardization/test_detect_inorganic.py index 310144e7..9abd25ab 100644 --- a/opencadd/tests/compounds/standardization/test_detect_inorganic.py +++ b/opencadd/tests/compounds/standardization/test_detect_inorganic.py @@ -11,8 +11,7 @@ def _evaluation_mol_generator(test_smiles=None, test_inchi=None): - """Creates mol files directly with rdkits functions for evaluation. - """ + """Creates mol files directly with rdkits functions for evaluation.""" if test_smiles is not None: return Chem.MolFromSmiles(test_smiles) if test_inchi is not None: diff --git a/opencadd/tests/compounds/standardization/test_handle_hydrogens.py b/opencadd/tests/compounds/standardization/test_handle_hydrogens.py index fd9fa436..240187e9 100644 --- a/opencadd/tests/compounds/standardization/test_handle_hydrogens.py +++ b/opencadd/tests/compounds/standardization/test_handle_hydrogens.py @@ -9,8 +9,7 @@ def _evaluation_mol_generator(test_smiles=None, test_inchi=None): - """Creates mol files directly with rdkits functions for evaluation. - """ + """Creates mol files directly with rdkits functions for evaluation.""" if test_smiles is not None: return Chem.MolFromSmiles(test_smiles, sanitize=False) if test_inchi is not None: diff --git a/opencadd/tests/compounds/standardization/test_normalize_molecules.py b/opencadd/tests/compounds/standardization/test_normalize_molecules.py index 84dc2a87..e9bfc867 100644 --- a/opencadd/tests/compounds/standardization/test_normalize_molecules.py +++ b/opencadd/tests/compounds/standardization/test_normalize_molecules.py @@ -11,8 +11,7 @@ def normalization_for_smiles(smiles): - """Does normalization after converting a SMILES string into a mol. - """ + """Does normalization after converting a SMILES string into a mol.""" mol = Chem.MolFromSmiles(smiles, sanitize=False) mol = normalize_molecules.normalize(mol) if mol: @@ -45,8 +44,7 @@ def test_1_3_charge_recombination_aromatic(): def test_1_3_charge_recombination_exception(): - """Test a case where 1,3-separated charges should not be recombined. - """ + """Test a case where 1,3-separated charges should not be recombined.""" assert ( normalization_for_smiles("CC12CCCCC1(Cl)[N+]([O-])=[N+]2[O-]") == "CC12CCCCC1(Cl)[N+]([O-])=[N+]2[O-]" @@ -59,8 +57,7 @@ def test_1_5_charge_recombination(): def test_1_5_charge_recombination_exception(): - """Test a case where 1,5-separated charges should not be recombined. - """ + """Test a case where 1,5-separated charges should not be recombined.""" assert ( normalization_for_smiles("C[N+]1=C2C=[N+]([O-])C=CN2CCC1") == "C[N+]1=C2C=[N+]([O-])C=CN2CCC1" diff --git a/opencadd/tests/compounds/standardization/test_remove_salts.py b/opencadd/tests/compounds/standardization/test_remove_salts.py index 2173c6ab..f7fd4d57 100644 --- a/opencadd/tests/compounds/standardization/test_remove_salts.py +++ b/opencadd/tests/compounds/standardization/test_remove_salts.py @@ -11,8 +11,7 @@ def _evaluation_mol_generator(test_smiles=None, test_inchi=None): - """Creates mol files directly with rdkits functions for evaluation. - """ + """Creates mol files directly with rdkits functions for evaluation.""" if test_smiles is not None: return Chem.MolFromSmiles(test_smiles) if test_inchi is not None: @@ -40,8 +39,7 @@ def test_structure(): def test_single_salts(): - """All salt fragments should be detected and stripped. - """ + """All salt fragments should be detected and stripped.""" assert ( _molecule_test( test_smiles="[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn]" @@ -51,8 +49,7 @@ def test_single_salts(): def test_complex_salts(): - """Complex salts, contained in salts.tsv should be detected. - """ + """Complex salts, contained in salts.tsv should be detected.""" assert ( _molecule_test(test_smiles="OC(C(O)C(=O)O)C(=O)O.O=C1NS(=O)(=O)c2ccccc12") == "" ) diff --git a/opencadd/tests/compounds/standardization/test_validate_molecules.py b/opencadd/tests/compounds/standardization/test_validate_molecules.py index d9200b0a..0b6b5fcc 100644 --- a/opencadd/tests/compounds/standardization/test_validate_molecules.py +++ b/opencadd/tests/compounds/standardization/test_validate_molecules.py @@ -13,8 +13,7 @@ def _evaluation_mol_generator(test_smiles=None, test_inchi=None): - """Creates mol files directly with rdkits functions for evaluation. - """ + """Creates mol files directly with rdkits functions for evaluation.""" if test_smiles is not None: return Chem.MolFromSmiles(test_smiles, sanitize=False) if test_inchi is not None: @@ -22,8 +21,7 @@ def _evaluation_mol_generator(test_smiles=None, test_inchi=None): def test_no_atom(): - """NoAtomValidation should log due to the lack of any atoms. - """ + """NoAtomValidation should log due to the lack of any atoms.""" assert validate_molecules.validate_default( _evaluation_mol_generator(test_smiles="") ) == ["ERROR: [NoAtomValidation] Molecule has no atoms"] @@ -67,7 +65,7 @@ def test_isotope(): def test_valency(): - """ check_valency should validate the valency of every atom in the + """check_valency should validate the valency of every atom in the input molecule. """ assert validate_molecules.check_valency( From f334d12530f126f4d89b8019a1dc51d2da0a9d19 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 7 Feb 2021 19:20:14 +0100 Subject: [PATCH 05/55] fixed init.py path --- .../compounds/standardization/__init__.py | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/opencadd/compounds/standardization/__init__.py b/opencadd/compounds/standardization/__init__.py index 3b51307e..510abbd4 100644 --- a/opencadd/compounds/standardization/__init__.py +++ b/opencadd/compounds/standardization/__init__.py @@ -4,18 +4,19 @@ """ # Add imports here -from .standardization import * -from .assign_stereochemistry import * -from .convert_format import * -from .detect_inorganic import * -from .disconnect_metals import * -from .handle_charges import * -from .handle_fragments import * -from .handle_hydrogens import * -from .normalize_molecules import * -from .remove_salts import * -from .sanitize_molecules import * -from .validate_molecules import * +from opencadd.compounds.standardization.standardization import * +from opencadd.compounds.standardization.assign_stereochemistry import * +from opencadd.compounds.standardization.convert_format import * +from opencadd.compounds.standardization.detect_inorganic import * +from opencadd.compounds.standardization.disconnect_metals import * +from opencadd.compounds.standardization.handle_charges import * +from opencadd.compounds.standardization.handle_fragments import * +from opencadd.compounds.standardization.handle_hydrogens import * +from opencadd.compounds.standardization.normalize_molecules import * +from opencadd.compounds.standardization.remove_salts import * +from opencadd.compounds.standardization.utils import * +from opencadd.compounds.standardization.sanitize_molecules import * +from opencadd.compounds.standardization.validate_molecules import * # Handle versioneer From 09c60781af7ee91ee9413dc1bc370d5375ea1d29 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 7 Feb 2021 19:20:56 +0100 Subject: [PATCH 06/55] path adjustment --- opencadd/compounds/standardization/convert_format.py | 2 +- .../tests/compounds/standardization/test_standardizer.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/opencadd/compounds/standardization/convert_format.py b/opencadd/compounds/standardization/convert_format.py index a9c3fd44..dd5fa5e9 100644 --- a/opencadd/compounds/standardization/convert_format.py +++ b/opencadd/compounds/standardization/convert_format.py @@ -7,7 +7,7 @@ from rdkit import Chem from rdkit.Chem import inchi from rdkit.Chem import SDMolSupplier -from standardizer.utils import data_path +from opencadd.compounds.standardization.utils import data_path __all__ = [ "convert_smiles_to_mol", diff --git a/opencadd/tests/compounds/standardization/test_standardizer.py b/opencadd/tests/compounds/standardization/test_standardizer.py index a80e677e..eeb6310a 100644 --- a/opencadd/tests/compounds/standardization/test_standardizer.py +++ b/opencadd/tests/compounds/standardization/test_standardizer.py @@ -1,5 +1,5 @@ """ -Unit and regression test for the standardizer package. +Unit and regression test for the standardization package. """ # Import package, test suite, and other packages as needed @@ -9,6 +9,6 @@ import opencadd.compounds.standardization -def test_standardizer_imported(): +def test_standardization_imported(): """Sample test, will always pass so long as import statement worked""" - assert "standardizer" in sys.modules + assert "opencadd" in sys.modules From 491ad7cc676c0746aaf6bf7c45a738d5e2329e72 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 7 Feb 2021 19:21:45 +0100 Subject: [PATCH 07/55] moved files --- opencadd/{ => compounds/standardization}/data/salts.tsv | 2 +- opencadd/compounds/standardization/remove_salts.py | 2 +- .../compounds => compounds/standardization/data}/new_mol.sdf | 0 .../standardization/data}/result_of_test_convert_mol_to_sdf.sdf | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename opencadd/{ => compounds/standardization}/data/salts.tsv (96%) rename opencadd/tests/{data/compounds => compounds/standardization/data}/new_mol.sdf (100%) rename opencadd/tests/{data/compounds => compounds/standardization/data}/result_of_test_convert_mol_to_sdf.sdf (100%) diff --git a/opencadd/data/salts.tsv b/opencadd/compounds/standardization/data/salts.tsv similarity index 96% rename from opencadd/data/salts.tsv rename to opencadd/compounds/standardization/data/salts.tsv index cdbe95a0..4f840f57 100644 --- a/opencadd/data/salts.tsv +++ b/opencadd/compounds/standardization/data/salts.tsv @@ -50,7 +50,7 @@ OCC(O)COP(=O)(O)O glycerophosphate OC(=O)CNC(=O)c1ccccc1 hippurate charged OP=O hypophosphite uncharged OC(C=O)C(O)C(O)C(O)C(=O)O incorrect glucuronate -OC(=O)c5c(O)cc6ccccc6c5Cc7c(C(=O)O)c(O)cc8ccccc78 incorrect pamoate +OC(=O)c5c(O)cc6ccccc6c5Cc7c(C(=O)O)c(O)cc8ccccc78 incorrect pamoate OC1OC(C(O)C(O)C1O)C(O)=O incorrect ring gluconate OC(C(O)C(=O)O)C(=O)O incorrect tartrate uncharged no stereo I Iodide diff --git a/opencadd/compounds/standardization/remove_salts.py b/opencadd/compounds/standardization/remove_salts.py index a805fe25..67c57f91 100644 --- a/opencadd/compounds/standardization/remove_salts.py +++ b/opencadd/compounds/standardization/remove_salts.py @@ -6,7 +6,7 @@ import csv import logging from rdkit import RDLogger -from standardizer.utils import data_path +from opencadd.compounds.standardization.utils import data_path __all__ = ["remove_salts"] diff --git a/opencadd/tests/data/compounds/new_mol.sdf b/opencadd/tests/compounds/standardization/data/new_mol.sdf similarity index 100% rename from opencadd/tests/data/compounds/new_mol.sdf rename to opencadd/tests/compounds/standardization/data/new_mol.sdf diff --git a/opencadd/tests/data/compounds/result_of_test_convert_mol_to_sdf.sdf b/opencadd/tests/compounds/standardization/data/result_of_test_convert_mol_to_sdf.sdf similarity index 100% rename from opencadd/tests/data/compounds/result_of_test_convert_mol_to_sdf.sdf rename to opencadd/tests/compounds/standardization/data/result_of_test_convert_mol_to_sdf.sdf From 158d9b087aca2b83d5e22486f28c516790745111 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 10 Feb 2021 14:12:25 +0100 Subject: [PATCH 08/55] changed back to relative imports --- .../compounds/standardization/__init__.py | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/opencadd/compounds/standardization/__init__.py b/opencadd/compounds/standardization/__init__.py index 510abbd4..5ad37480 100644 --- a/opencadd/compounds/standardization/__init__.py +++ b/opencadd/compounds/standardization/__init__.py @@ -4,19 +4,19 @@ """ # Add imports here -from opencadd.compounds.standardization.standardization import * -from opencadd.compounds.standardization.assign_stereochemistry import * -from opencadd.compounds.standardization.convert_format import * -from opencadd.compounds.standardization.detect_inorganic import * -from opencadd.compounds.standardization.disconnect_metals import * -from opencadd.compounds.standardization.handle_charges import * -from opencadd.compounds.standardization.handle_fragments import * -from opencadd.compounds.standardization.handle_hydrogens import * -from opencadd.compounds.standardization.normalize_molecules import * -from opencadd.compounds.standardization.remove_salts import * -from opencadd.compounds.standardization.utils import * -from opencadd.compounds.standardization.sanitize_molecules import * -from opencadd.compounds.standardization.validate_molecules import * +from .standardization import * +from .assign_stereochemistry import * +from .convert_format import * +from .detect_inorganic import * +from .disconnect_metals import * +from .handle_charges import * +from .handle_fragments import * +from .handle_hydrogens import * +from .normalize_molecules import * +from .remove_salts import * +from .utils import * +from .sanitize_molecules import * +from .validate_molecules import * # Handle versioneer From 0885a181586b0de4dd758279da5b0ba1560c63c0 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 10 Feb 2021 14:12:54 +0100 Subject: [PATCH 09/55] first draft of Notebook --- docs/tutorials/standardization.ipynb | 109 +++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 docs/tutorials/standardization.ipynb diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb new file mode 100644 index 00000000..c1a29e80 --- /dev/null +++ b/docs/tutorials/standardization.ipynb @@ -0,0 +1,109 @@ +{ + "metadata": { + "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.8.6-final" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python38664bittestconda4897b4cdd6ba4d368a0d9ed14439d5b5", + "display_name": "Python 3.8.6 64-bit ('test': conda)", + "language": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#import modules\n", + "from rdkit import Chem\n", + "from opencadd.compounds.standardization import convert_format,remove_fragments,disconnect_metals,detect_inorganic,remove_salts" + ] + }, + { + "source": [ + "# INITIAL LIST OF SMILES\n", + "# import test smiles dataset\n", + "test_smiles = \"NC(CC(=O)O)C(=O)[O-].O.O.[Na+]\"\n", + "test_smiles2 = \"C(C(=O)[O-])(Cc1n[n-]nn1)(C[NH3+])(C[N+](=O)[O-])\"\n", + "test_smiles3= \"CN(C)C.Cl.Cl.Br\"" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": 11, + "outputs": [] + }, + { + "source": [ + "# Removal of mixtures, inorganics (and eventually organometallics)\n", + "# Functions detect_inorganic,remove_fragments, disconnect_metals, detect_inorganic again" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": 12, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Structural coversion\n", + "# Cleaning/removal of salts\n", + "# Functions remove_salts" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Normalization of specific chemotypes\n", + "# normalize_molecules" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Treatment of tautomeric forms\n", + "# handle_tautomers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Analysis/removal of duplicates" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Manual inspection" + ] + } + ] +} \ No newline at end of file From 67bb60371fdee5604e0c9199e1b98079bdad5216 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 16 Feb 2021 18:53:16 +0100 Subject: [PATCH 10/55] PocketViewer: Show pocket residues only --- opencadd/structure/pocket/viewer.py | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/opencadd/structure/pocket/viewer.py b/opencadd/structure/pocket/viewer.py index 155ee8c2..852660cb 100644 --- a/opencadd/structure/pocket/viewer.py +++ b/opencadd/structure/pocket/viewer.py @@ -22,6 +22,8 @@ class PocketViewer: ---------- viewer : nglview.widget.NGLWidget NGLview widget. Call this if you want to view pockets in e.g. Jupyter Notebooks. + pockets_residue_ngl_ixs : dict of (int or str: list of int) + For each structure (key), list of pocket NGLview indices. structure_names : list of (int or str) Names for all structures/pockets in the viewer. _residue_ids_to_ngl_ixs = dict of pandas.DataFrames @@ -52,7 +54,7 @@ def __init__(self): self.viewer = nglview.NGLWidget() self.viewer._remote_call("setSize", target="Widget", args=["1000px", "600px"]) - + self.pockets_residue_ngl_ixs = {} self.structure_names = [] self._residue_ids_to_ngl_ixs = {} self._component_counter = 0 @@ -71,6 +73,7 @@ def add_pocket( show_regions=True, sphere_opacity=0.7, sphere_color_pocket_center="blue", + show_only_pocket_residues=False, ): """ Visualize the pocket (subpockets, regions, and anchor residues). @@ -104,13 +107,20 @@ def add_pocket( # Get residue ID > nglview index mapping based on file format # (this is important to know how nglview will index residues) self._map_residue_ids_names_nglixs(pocket) + self.pockets_residue_ngl_ixs[pocket.name] = ( + pocket.residues.dropna() + .merge(self._residue_ids_to_ngl_ixs[pocket.name], how="left", on="residue.id")[ + "residue.ngl_ix" + ] + .to_list() + ) # Load structure from text in nglview self._add_structure(pocket, ligand_expo_id) # Show regions if show_regions: - self._add_regions(pocket) + self._add_regions(pocket, show_only_pocket_residues) # Show pocket center if show_pocket_center: @@ -281,7 +291,7 @@ def _add_ligand(self, pocket, ligand_expo_id): f"hetero and not water and not ions" ) - def _add_regions(self, pocket): + def _add_regions(self, pocket, show_only_pocket_residues=False): """ Color residues by regions. @@ -308,9 +318,14 @@ def _add_regions(self, pocket): residue_ngl_ix = residue_id2ix.loc[residue_id] scheme_regions_list.append([color, residue_ngl_ix]) scheme_regions = nglview.color._ColorScheme(scheme_regions_list, label="scheme_regions") + if show_only_pocket_residues: + selection = " or ".join(self.pockets_residue_ngl_ixs[pocket.name]) + else: + selection = "protein" + self.viewer.clear_representations(self._components_structures[pocket.name]) self.viewer.add_representation( "cartoon", - selection="protein", + selection=selection, component=self._components_structures[pocket.name], color=scheme_regions, ) @@ -436,7 +451,9 @@ def _components_by_structure_name(self, structure_name): components = [] components.append(self._components_structures[structure_name]) components.append(self._components_pocket_center[structure_name]) - components.extend(list(self._components_subpockets[structure_name].values())) - components.extend(list(self._components_anchor_residues[structure_name].values())) + if len(self._components_subpockets) > 0: + components.extend(list(self._components_subpockets[structure_name].values())) + if len(self._components_anchor_residues) > 0: + components.extend(list(self._components_anchor_residues[structure_name].values())) return components From ca1170306ef48df8febee507f07dba197f5874a8 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Mon, 8 Mar 2021 22:16:32 +0100 Subject: [PATCH 11/55] detailed explanation based on Fourches 2010 --- docs/tutorials/standardization.ipynb | 38 +++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index c1a29e80..e5ad4940 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -14,8 +14,8 @@ }, "orig_nbformat": 2, "kernelspec": { - "name": "python38664bittestconda4897b4cdd6ba4d368a0d9ed14439d5b5", - "display_name": "Python 3.8.6 64-bit ('test': conda)", + "name": "python3", + "display_name": "Python 3", "language": "python" } }, @@ -23,15 +23,24 @@ "nbformat_minor": 2, "cells": [ { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], + "source": [ + "## Implementation of the main steps for chemical data curation following the paper \"Trust, But Verify: On the Importance of Chemical Structure Curation in Cheminformatics and QSAR Modeling Research\" from 2010 (D.Fourches, ...)\n", + "\n", + "Link: https://pubmed.ncbi.nlm.nih.gov/20572635/\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { "source": [ "#import modules\n", "from rdkit import Chem\n", "from opencadd.compounds.standardization import convert_format,remove_fragments,disconnect_metals,detect_inorganic,remove_salts" - ] + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] }, { "source": [ @@ -46,6 +55,21 @@ "execution_count": 11, "outputs": [] }, + { + "source": [ + "### Removal of Inorganics and Mixtures\n", + "\n", + "Since molecular descriptors can only be computed for organic compunds, all inorganic compunds must be removed before the descriptors are calculated. (Chapter 2.1. Fourches 2010)\n", + "\n", + "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of \"True\" when it finds a inorganic molecule. We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", + "Inorganic compounds are known to have biological effects, like for example toxic effects. Due to their bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", + "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", + "\n", + "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms, but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself." + ], + "cell_type": "markdown", + "metadata": {} + }, { "source": [ "# Removal of mixtures, inorganics (and eventually organometallics)\n", From 08d52f008a7190b679364f29ae89cdd2ec1b9a29 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Tue, 16 Mar 2021 18:21:53 +0100 Subject: [PATCH 12/55] Pseudocode for removal of mixtures added --- docs/tutorials/standardization.ipynb | 231 +++++++++++++++++++++------ 1 file changed, 185 insertions(+), 46 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index e5ad4940..95df2254 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -1,84 +1,183 @@ { - "metadata": { - "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.8.6-final" - }, - "orig_nbformat": 2, - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 2, "cells": [ { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.getcwd()\n", + "os.chdir(\"/home/allen\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, "source": [ "## Implementation of the main steps for chemical data curation following the paper \"Trust, But Verify: On the Importance of Chemical Structure Curation in Cheminformatics and QSAR Modeling Research\" from 2010 (D.Fourches, ...)\n", "\n", "Link: https://pubmed.ncbi.nlm.nih.gov/20572635/\n" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "#import modules\n", "from rdkit import Chem\n", "from opencadd.compounds.standardization import convert_format,remove_fragments,disconnect_metals,detect_inorganic,remove_salts" - ], - "cell_type": "code", - "metadata": {}, - "execution_count": null, - "outputs": [] + ] }, { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# INITIAL LIST OF SMILES\n", "# import test smiles dataset\n", "test_smiles = \"NC(CC(=O)O)C(=O)[O-].O.O.[Na+]\"\n", "test_smiles2 = \"C(C(=O)[O-])(Cc1n[n-]nn1)(C[NH3+])(C[N+](=O)[O-])\"\n", "test_smiles3= \"CN(C)C.Cl.Cl.Br\"" - ], - "cell_type": "code", - "metadata": {}, - "execution_count": 11, - "outputs": [] + ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "### Removal of Inorganics and Mixtures\n", "\n", "Since molecular descriptors can only be computed for organic compunds, all inorganic compunds must be removed before the descriptors are calculated. (Chapter 2.1. Fourches 2010)\n", "\n", "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of \"True\" when it finds a inorganic molecule. We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", - "Inorganic compounds are known to have biological effects, like for example toxic effects. Due to their bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", + "\"Inorganic compounds are known to have biological effects, like for example toxic effects.\"(Chapter 2.1. Fourches 2010)(fix citation)\n", + " Due to their potential bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", "\n", - "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms, but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself." - ], - "cell_type": "markdown", - "metadata": {} + "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself.\n", + "\n", + "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." + ] }, { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "# Removal of mixtures, inorganics (and eventually organometallics)\n", + "\n", + "# Removal of mixtures, inorganics (and eventually organometallics)\n", "# Functions detect_inorganic,remove_fragments, disconnect_metals, detect_inorganic again" - ], + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Pseudocode for filtering the inorganic records\n", + "\n", + "new_data = array of smiles\n", + "records_organics = []\n", + "records_inorganics = []\n", + "\n", + "for x in new_data:\n", + " convert_smiles_to_mol(x)\n", + " if detect_inorganic(x)==\"False\":\n", + " records_organics.append(x) #QUESTION: Can I just store mol-files in an array?\n", + " elif detect_inorganic(x)==\"True\":\n", + " records_inorganics.append(x)\n", + " else:\n", + " raise Exception(\"Something is wrong with:\" x)\n", + "return records_organics, records_inorganics\n", + "# no further processing will happen to `records_inorganics`\n", + "# `records_organics` is passed on in the pipeline\n" + ] + }, + { "cell_type": "code", + "execution_count": null, "metadata": {}, - "execution_count": 12, - "outputs": [] + "outputs": [], + "source": [ + "# Pseudocode for filtering the mixture records\n", + "\n", + "new_data = records_organics\n", + "no_fragement_records = []\n", + "contains_fragment_records = []\n", + "\n", + "#TODO: Write a helper function that returns a boolean value, when it finds a fragment (the InChI is changed by a removed fragment), a metals (disconnect_metals has been performed)\n", + "# Functions could be named `detect_fragment` and `detect_metals`\n", + "# Or I can write a function that just checks if the execution of a function actually altered the InChI --> might be the simpler solution\n", + "for x in new_data:\n", + " convert_smiles_to_mol(x)\n", + " if detect_fragment(x)==\"False\":\n", + " no_fragement_record.append(x)\n", + " elif detect_fragment(x)==\"True\":\n", + " contains_fragment_records.append(x)\n", + " else:\n", + " raise Exception(\"Something is wrong with\" x)\n", + "return no_fragement_record,contains_fragment_records\n", + "\n", + "# [OPTIONAL] return the largest fragment of the record\n", + "new_data = contains_fragment_records\n", + "contains_largest_fragement = []\n", + "for x in new_data:\n", + " choose_largest_fragment(x)\n", + " contains_largest_fragement.append(x)\n", + "return contains_largest_fragement\n", + "\n", + "# OR remove known common fragments with the function `remove_fragments`\n", + "\n", + "# Code would be the same as obove\n", + "# Have to write a helper function to continue the pipeline with his set, without mixing it up with the \"safe_dataset\"\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Pseudocode for filtering metals \n", + "new_data = no_fragement_record\n", + "metal_true = []\n", + "metal_false = []\n", + "\n", + "for x in new_data:\n", + " convert_smiles_to_mol(x)\n", + " if detect_metals(x)==\"False\":\n", + " metal_false.append(x)\n", + " elif detect_metals(x)==\"True\":\n", + " metal_true.append(x)\n", + " else:\n", + " raise Exception(\"Something is wrong with\" x)\n", + "return metal_true,metal_false" + ] + }, + { + "source": [ + "### Structural Conversion and Cleaning\n", + "\n", + "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not beeing desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", + "In case that we want to continue working on the converted records, we should perform the following steps:\n", + "- check if records contain compounds with presence of metals --> difficult case, filter out (already done this - one step ahead)\n", + "- removing the salts from the record\n", + "- neutralize the record (normalization or basic standardization)\n", + "- neutralize the charges\n", + "- to be discussed: the adding/removing of hydrogens, both got pros and cons (pro addingH --> higher prediction performances / con addingH --> may introduce noise --> less reliable models)(removingH might introduce erros in calculating descriptors, due to it might not handle certain cases well)\n", + "\n" + ], + "cell_type": "markdown", + "metadata": {} }, { "cell_type": "code", @@ -88,9 +187,21 @@ "source": [ "# Structural coversion\n", "# Cleaning/removal of salts\n", - "# Functions remove_salts" + "# Functions remove_salts\n", + "# normalize_molecules\n", + "# handle_charges\n", + "# handle_hydrogens" ] }, + { + "source": [ + "### Normalization of Specific Chemotypes\n", + "\n", + "More complex than just Normalization." + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", "execution_count": null, @@ -111,6 +222,13 @@ "# handle_tautomers" ] }, + { + "source": [ + "### Removal of duplicates" + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", "execution_count": null, @@ -129,5 +247,26 @@ "# Manual inspection" ] } - ] + ], + "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.8.6-final" + } + }, + "nbformat": 4, + "nbformat_minor": 2 } \ No newline at end of file From 6a9430b29ef187f1afeec6bdc15f5b5947cc81e3 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 31 Mar 2021 17:41:18 +0200 Subject: [PATCH 13/55] first 2 rudimental standardization steps coded --- docs/tutorials/standardization.ipynb | 754 ++++++++++++++++++++++++++- 1 file changed, 731 insertions(+), 23 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 95df2254..94678c39 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -2,13 +2,16 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 74, "metadata": {}, "outputs": [], "source": [ "import os\n", "os.getcwd()\n", - "os.chdir(\"/home/allen\")" + "os.chdir(\"/home/allen\")\n", + "#Import Pandas\n", + "import pandas as pd\n", + "import numpy as np" ] }, { @@ -22,26 +25,165 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "#import modules\n", "from rdkit import Chem\n", - "from opencadd.compounds.standardization import convert_format,remove_fragments,disconnect_metals,detect_inorganic,remove_salts" + "from opencadd.compounds.standardization import convert_format,handle_fragments,disconnect_metals,detect_inorganic,remove_salts\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 76, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamesSMILEs
0(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br
117-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C
21-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C
32,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O
42,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O
\n", + "
" + ], + "text/plain": [ + " Names \\\n", + "0 (R)-Roscovitine \n", + "1 17-Methyltestosterone \n", + "2 1-alpha-Hydroxycholecalciferol \n", + "3 2,3-Dimercaptosuccinic acid \n", + "4 2,4,6-Trinitrotoluene \n", + "\n", + " SMILEs \n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C \n", + "3 OC(=O)C(S)C(S)C(O)=O \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O " + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# INITIAL LIST OF SMILES\n", - "# import test smiles dataset\n", + "# optional test-SMILEs\n", + "\n", "test_smiles = \"NC(CC(=O)O)C(=O)[O-].O.O.[Na+]\"\n", "test_smiles2 = \"C(C(=O)[O-])(Cc1n[n-]nn1)(C[NH3+])(C[N+](=O)[O-])\"\n", - "test_smiles3= \"CN(C)C.Cl.Cl.Br\"" + "test_smiles3= \"CN(C)C.Cl.Cl.Br\"\n", + "\n", + "# test-dataset with \n", + "dataset = pd.read_csv (r'/home/allen/dev/utility/data/test_dataset.csv')\n", + "dataset.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convert the SMILE representation format of the compunds into Mol-files\n", + "\n", + "RDKit performs a sanitization of the molecule by default. In this sanitization step RDKit tries to kekulize the mols (generates alternate Lewis structures). This step might fail, when the structure is aromatic, but no Hydrogen position is provided. !(This explanation might be a bit short and not fully correct, check this later again)!\n", + "\n", + "If the conversion from SMILE to mol fails, then those SMILEs will be moved into a subset for manual curation. Those entries will be dropped from the main dataset.\n", + "\n", + "To avoid the sanitization of the molecule `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find different representation formats of the same molecule. \n", + "\n", + "References:\n", + "https://chemistry.stackexchange.com/questions/116498/what-is-kekulization-in-rdkit\n", + "https://rdkit-discuss.narkive.com/QwnqcKcM/another-can-t-kekulize-mol-observation\n", + "https://www.rdkit.org/docs/Cookbook.html\n", + "https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html\n" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit ERROR: [16:27:51] WARNING: Proton(s) [16:32:10] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: \n", + "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: \n", + "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: \n", + "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: \n", + "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: \n", + "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: \n", + "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: \n" + ] + } + ], + "source": [ + "dataset['Mol_format']= dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", + "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_with_MOL.csv', index = False)\n", + "#Store all SMILEs Entries in a list which couldn't be converted to Mol\n", + "no_kekulization = dataset[(dataset['Mol_format'].isnull())]\n", + "no_kekulization.head()\n", + "# Drop all entries with couldn't be converted to Mol\n", + "#datasetclean = dataset.dropna(subset=['Mol_format'], how='all', inplace = True)\n", + "datasetclean = dataset[dataset['Mol_format'].notna()]\n", + "datasetclean.to_csv('/home/allen/dev/utility/data/test_dataset_with_MOL_and_noNA.csv', index = False)\n", + "datasetclean.head()\n", + "dataset = datasetclean" ] }, { @@ -64,7 +206,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 78, "metadata": {}, "outputs": [], "source": [ @@ -75,9 +217,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 79, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 3)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m3\u001b[0m\n\u001b[0;31m new_data = array of smiles\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], "source": [ "# Pseudocode for filtering the inorganic records\n", "\n", @@ -98,6 +249,563 @@ "# `records_organics` is passed on in the pipeline\n" ] }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamesSMILEsMol_format
0(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br<rdkit.Chem.rdchem.Mol object at 0x7f59ac1a4260>
117-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8120>
21-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8170>
32,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c81c0>
42,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8210>
\n", + "
" + ], + "text/plain": [ + " Names \\\n", + "0 (R)-Roscovitine \n", + "1 17-Methyltestosterone \n", + "2 1-alpha-Hydroxycholecalciferol \n", + "3 2,3-Dimercaptosuccinic acid \n", + "4 2,4,6-Trinitrotoluene \n", + "\n", + " SMILEs \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C \n", + "3 OC(=O)C(S)C(S)C(O)=O \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O \n", + "\n", + " Mol_format \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 " + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Removal of inorganics and mixtures of the dataset\n", + "dataset['Inorganics'] = dataset['Mol_format'].apply(detect_inorganic)\n", + "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_inorganic.csv', index = False)\n", + "contains_inorganics = dataset[dataset['Inorganics']== True]\n", + "contains_inorganics.head()\n", + "dataset = dataset[dataset['Inorganics']== False]\n", + "dataset = dataset[[\"Names\",\"SMILEs\",\"Mol_format\"]]\n", + "dataset.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Charges were rearranged\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit INFO: [16:3:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:32:22] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Removed fragment: bromine\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit INFO: [16:33:06] Running FragmentRemover\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Charges were rearranged\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamesSMILEsMol_formatInchIBeforeMixturesFilteringMolafterMixturesFilteringInchIAfterMixturesFilteringnoChanges
0(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br<rdkit.Chem.rdchem.Mol object at 0x7f59ac1a4260>InChI=1S/C19H26N6O.BrH/c1-4-15(11-26)22-19-23-...<rdkit.Chem.rdchem.Mol object at 0x7f59ac1cada0>InChI=1S/C19H26N6O/c1-4-15(11-26)22-19-23-17(2...False
117-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8120>InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5...<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c08a0>InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5...True
21-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8170>InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-...<rdkit.Chem.rdchem.Mol object at 0x7f59ac1cadf0>InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-...True
32,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c81c0>InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9...<rdkit.Chem.rdchem.Mol object at 0x7f59ac1cacb0>InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9...True
42,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O<rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8210>InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3...<rdkit.Chem.rdchem.Mol object at 0x7f59ac22ba80>InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3...True
\n", + "
" + ], + "text/plain": [ + " Names \\\n", + "0 (R)-Roscovitine \n", + "1 17-Methyltestosterone \n", + "2 1-alpha-Hydroxycholecalciferol \n", + "3 2,3-Dimercaptosuccinic acid \n", + "4 2,4,6-Trinitrotoluene \n", + "\n", + " SMILEs \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C \n", + "3 OC(=O)C(S)C(S)C(O)=O \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O \n", + "\n", + " Mol_format \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "\n", + " InchIBeforeMixturesFiltering \\\n", + "0 InChI=1S/C19H26N6O.BrH/c1-4-15(11-26)22-19-23-... \n", + "1 InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5... \n", + "2 InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-... \n", + "3 InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9... \n", + "4 InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3... \n", + "\n", + " MolafterMixturesFiltering \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "\n", + " InchIAfterMixturesFiltering noChanges \n", + "0 InChI=1S/C19H26N6O/c1-4-15(11-26)22-19-23-17(2... False \n", + "1 InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5... True \n", + "2 InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-... True \n", + "3 InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9... True \n", + "4 InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3... True " + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Flagging of Mixtures\n", + "dataset['InchIBeforeMixturesFiltering'] = dataset['Mol_format'].apply(convert_format.convert_mol_to_inchi)\n", + "dataset['MolafterMixturesFiltering'] = dataset['Mol_format'].apply(handle_fragments.remove_fragments)\n", + "dataset['InchIAfterMixturesFiltering'] = dataset['MolafterMixturesFiltering'].apply(convert_format.convert_mol_to_inchi)\n", + "dataset['noChanges']= dataset['InchIBeforeMixturesFiltering'] == dataset['InchIAfterMixturesFiltering']\n", + "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_mixtures.csv', index = False)\n", + "dataset.head()\n", + "\n", + "#TODO: Subset of Mixtures, deletion from main set" + ] + }, { "cell_type": "code", "execution_count": null, @@ -164,6 +872,8 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "### Structural Conversion and Cleaning\n", "\n", @@ -175,9 +885,7 @@ "- neutralize the charges\n", "- to be discussed: the adding/removing of hydrogens, both got pros and cons (pro addingH --> higher prediction performances / con addingH --> may introduce noise --> less reliable models)(removingH might introduce erros in calculating descriptors, due to it might not handle certain cases well)\n", "\n" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -194,13 +902,13 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "### Normalization of Specific Chemotypes\n", "\n", "More complex than just Normalization." - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -223,11 +931,11 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "### Removal of duplicates" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -264,9 +972,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6-final" + "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} From a76827cdba30ee18bca8d2fea98f805d5ae6d0d6 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Tue, 6 Apr 2021 22:47:07 +0200 Subject: [PATCH 14/55] added a test data file --- .../data/standardization_test_data.csv | 201 ++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 docs/tutorials/data/standardization_test_data.csv diff --git a/docs/tutorials/data/standardization_test_data.csv b/docs/tutorials/data/standardization_test_data.csv new file mode 100644 index 00000000..a5deaa90 --- /dev/null +++ b/docs/tutorials/data/standardization_test_data.csv @@ -0,0 +1,201 @@ +IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS +1,(R)-Roscovitine,CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1,0,1,0 +2,17-Methyltestosterone,CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C,0,1,0 +3,1-alpha-Hydroxycholecalciferol,CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C,1,0,0 +4,"2,3-Dimercaptosuccinic acid",OC(=O)C(S)C(S)C(O)=O,1,1,0 +5,"2,4,6-Trinitrotoluene",Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O,1,0,0 +6,2-Deoxy-D-glucose,OCC1OC(O)CC(O)C1O,1,1,0 +7,2'-fluoro-5-methylarabinosyluracil,CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O,1,0,0 +8,2-Methoxyestradiol,COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O,1,1,0 +9,4-aminobenzoic acid,Nc1ccc(cc1)C(O)=O,0,1,0 +10,4-Hydroxytamoxifen,CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1,1,1,0 +11,5 fluorouracil,FC1=CNC(=O)NC1=O,1,1,1 +12,5-Azacitidine,NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O,1,1,0 +13,5-Bromouracil,OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O,0,1,0 +14,5-fluoro-2'-deoxyuridine,OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O,1,1,0 +15,6-Mercaptopurine,Sc1ncnc2[nH]c[nH]c12,1,1,0 +16,Acadesine,NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N,0,1,0 +17,Acarbose,CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)C(O)C(O)C1NC1C=C(CO)C(O)C(O)C1O,1,1,0 +18,Acebutolol,CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O,1,1,0 +19,Acenocoumarol,CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O,1,0,0 +20,Acetamide,CC(N)=O,0,1,0 +21,Acetaminophen,CC(=O)Nc1ccc(O)cc1,1,1,1 +22,Acetazolamide,CC(=O)Nc1nnc(s1)S(N)(=O)=O,1,1,1 +23,Acetic acid,CC(O)=O,1,1,1 +24,Acetohexamide,CC(=O)c1ccc(cc1)S(=O)(=O)NC(=O)NC1CCCCC1,1,0,0 +25,Acetohydroxamic acid,CC(=O)NO,0,1,0 +26,Acetrizoate Sodium,CC(=O)Nc1c(I)cc(I)c(C(O)=O)c1I,0,1,0 +27,Acetylcholine,CC(=O)OCC[N+](C)(C)C,0,1,1 +28,Acetylcysteine,CC(=O)NC(CS)C(O)=O,1,1,0 +29,Acetyl-L-carnitine,CC(=O)OC(CC(O)=O)C[N+](C)(C)C,0,1,0 +30,Acetylsalicylic acid,CC(=O)Oc1ccccc1C(O)=O,1,1,1 +31,Acitretin,COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(O)=O)c(C)c1C,1,1,0 +32,Acyclovir,NC1=NC(=O)c2ncn(COCCO)c2N1,1,1,0 +33,Adefovir dipivoxil,CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc12)OCOC(=O)C(C)(C)C,1,1,0 +34,Adenine,Nc1ncnc2[nH]cnc12,0,1,0 +35,Adenosine,n2c1c(ncnc1n(c2)[C@@H]3O[C@@H]([C@@H](O)[C@H]3O)CO)N,1,1,1 +36,Adenosine triphosphate,Nc1ncnc2n(cnc12)C1OC(COP(O)(=O)OP(O)(=O)OP(O)(O)=O)C(O)C1O,0,1,0 +37,AET,NCCSC(N)=N,0,1,0 +38,Ajmaline,CCC1C2CC3C4N(C)c5ccccc5C44CC(C2C4O)N3C1O,1,0,0 +39,Alanosine,NC(CN(O)N=O)C(O)=O,0,1,0 +40,Alatrofloxacin mesylate,CC(N)C(=O)NC(C)C(=O)NC1C2CN(CC12)c1nc2N(C=C(C(O)=O)C(=O)c2cc1F)c1ccc(F)cc1F,1,0,0 +41,Albendazole,CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1,1,0,0 +42,Alfuzosin,COc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO1,1,0,0 +43,Alitretinoin,CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(O)=O,1,1,0 +44,Allantoin,NC(=O)NC1NC(=O)NC1=O,0,1,0 +45,Allobarbital,C=CCC1(CC=C)C(=O)NC(=O)NC1=O,0,1,0 +46,Allopurinol,O=C1N=CNc2cn[nH]c12,1,1,0 +47,Alpha-tocopherol acetate,CC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(OC(C)=O)c(C)c(C)c2O1,0,1,0 +48,Alverine,CCN(CCCc1ccccc1)CCCc1ccccc1,1,0,0 +49,Amantadine,NC12CC3CC(CC(C3)C1)C2,0,1,0 +50,ambrisentan,COC(C(Oc1nc(C)cc(C)n1)C(O)=O)(c1ccccc1)c1ccccc1,0,0,1 +51,Ambroxol,Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1,0,1,0 +52,Amikacin,NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O)C1OC1OC(CO)C(O)C(N)C1O,1,0,1 +53,Amiloride,NC(=N)NC(=O)c1nc(Cl)c(N)nc1N,1,1,0 +54,Amineptine,OC(=O)CCCCCCNC1c2ccccc2CCc2ccccc12,1,1,0 +55,Amino acid,NCC(O)=O,1,1,1 +56,Aminoglutethimide,CCC1(CCC(=O)NC1=O)c1ccc(N)cc1,0,1,0 +57,Aminoguanidine,N\N=C(\N)N,0,1,0 +58,Aminophylline,CN1C(=O)N(C)c2[nH]c[nH]c2C1=O,1,1,0 +59,Aminopyrine,CN(C)C1=C(C)N(C)N(c2ccccc2)C1=O,1,1,0 +60,Amiodarone,CCCCc1oc2ccccc2c1C(=O)c1cc(I)c(OCCN(CC)CC)c(I)c1,1,1,1 +61,Amitriptyline,CN(C)CC\C=C1\c2ccccc2CCc2ccccc12,1,1,0 +62,Amlodipine,CCOC(=O)C1=C(COCCN)NC(C)=C(C1c1ccccc1Cl)C(=O)OC,0,1,0 +63,Amobarbital,CCC1(CCC(C)C)C(=O)NC(=O)NC1=O,0,1,0 +64,Amodiaquin,CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O,1,1,0 +65,Amoxicillin,CC1(C)SC2C(NC(=O)C(N)c3ccc(O)cc3)C(=O)N2C1C(O)=O,1,0,0 +66,Amphetamine,CC(N)Cc1ccccc1,1,1,0 +67,Amphotericin B,CC1OC(=O)CC(O)CC(O)CCC(O)C(O)CC(O)CC2(O)CC(O)C(C(CC(OC3OC(C)C(O)C(N)C3O)C=CC=CC=CC=CC=CC=CC=CC(C)C(O)C1C)O2)C(O)=O,1,1,0 +68,Ampicillin,CC1(C)SC2C(NC(=O)C(N)c3ccccc3)C(=O)N2C1C(O)=O,1,1,0 +69,Amprenavir,CC(C)CN(CC(O)C(Cc1ccccc1)NC(=O)OC1CCOC1)S(=O)(=O)c1ccc(N)cc1,1,0,0 +70,Amrinone,NC1=CC(=CNC1=O)c1ccncc1,0,1,0 +71,Amsacrine,COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12,1,0,0 +72,Anastrozole,CC(C)(C#N)c1cc(Cn2cncn2)cc(c1)C(C)(C)C#N,1,0,0 +73,Anethole Trithione,COc1ccc(cc1)C1=CC(=S)SS1,0,1,0 +74,Anthralin,Oc1cccc2cc3cccc(O)c3c(O)c12,1,1,0 +75,Apomorphine,CN1CCc2cccc-3c2C1Cc1ccc(O)c(O)c-31,0,1,0 +76,Aprobarbital,CC(C)C1(CC=C)C(=O)NC(=O)NC1=O,0,1,0 +77,Ascorbic acid,OCC(O)C1OC(O)=C(O)C1=O,1,1,1 +78,Astaxanthin,CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=C(C)C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C,0,1,0 +79,Atazanavir,COC(=O)NC(C(=O)NC(Cc1ccccc1)C(O)CN(Cc1ccc(cc1)-c1ccccn1)NC(=O)C(NC(=O)OC)C(C)(C)C)C(C)(C)C,1,0,0 +80,Atenolol,CC(C)NCC(O)COc1ccc(CC(N)=O)cc1,1,0,0 +81,Atiprimod,CCCC1(CCC)CCC2(CCN(CCCN(CC)CC)C2)CC1,1,0,0 +82,Atomoxetine hydrochloride,CNCCC(Oc1ccccc1C)c1ccccc1,1,0,0 +83,Atorvastatin,CC(C)C1=C(C(=O)Nc2ccccc2)C(c2ccccc2)=C(N1CCC(O)CC(O)CC(O)=O)c1ccc(F)cc1,1,1,1 +84,Atropine,CN1C2CCC1CC(C2)OC(=O)C(CO)c1ccccc1,0,1,0 +85,avasimibe,CC(C)c1cc(C(C)C)c(CC(=O)NS(=O)(=O)Oc2c(cccc2C(C)C)C(C)C)c(c1)C(C)C,1,1,0 +86,Azathioprine,Cn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O,1,1,0 +87,AZD6244,Cn1cnc2c(F)c(Nc3ccc(Br)cc3Cl)c(cc12)C(=O)NOCCO,0,1,0 +88,Azithromycin,CCC1OC(=O)C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(OC2OC(C)CC(C2O)N(C)C)C(C)(O)CC(C)CN(C)C(C)C(O)C1(C)O,1,0,0 +89,Azlocillin,CC1(C)SC2C(NC(=O)C(NC(=O)N3CCNC3=O)c3ccccc3)C(=O)N2C1C(O)=O,1,0,0 +90,Aztreonam,CC1C(NC(=O)C(=NOC(C)(C)C(O)=O)c2csc(N)n2)C(=O)N1S(O)(=O)=O,1,0,0 +91,Bacitracin,CCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC(O)=O)C(=O)NC(C(C)CC)C(=O)NC1CCCCNC(=O)C(CC(O)=O)NC(=O)C(Cc2c[nH]c[nH]2)NC(=O)C(Cc2ccccc2)NC(=O)C(NC(=O)C(CCCN)NC1=O)C(C)CC,0,1,0 +92,Baclofen,NCC(CC(O)=O)c1ccc(Cl)cc1,1,0,0 +93,Barbital,CCC1(CC)C(=O)NC(=O)NC1=O,0,1,0 +94,Bendamustine,Cn1c(CCCC(O)=O)nc2cc(ccc12)N(CCCl)CCCl,1,0,0 +95,Bendazac,OC(=O)COc1nn(Cc2ccccc2)c2ccccc12,1,0,0 +96,Benorylate,CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1,0,1,0 +97,Benoxaprofen,CC(C(O)=O)c1ccc2oc(nc2c1)-c1ccc(Cl)cc1,1,1,0 +98,Benzarone,CCc1oc2ccccc2c1C(=O)c1ccc(O)cc1,1,1,0 +99,Benzbromarone,CCc1oc2ccccc2c1C(=O)c1cc(Br)c(O)c(Br)c1,1,1,0 +100,Benziodarone,CCc1oc2ccccc2c1C(=O)c1cc(I)c(O)c(I)c1,0,1,0 +101,Benzoyl peroxide,O=C(OOC(=O)c1ccccc1)c1ccccc1,0,1,0 +102,Beraprost,CC#CCC(C)C(O)C=CC1C(O)CC2Oc3c(CCCC(O)=O)cccc3C12,0,1,0 +103,Beta-Carotene,CC(C=CC=C(C)C=CC1=C(C)CCCC1(C)C)=CC=CC=C(C)C=CC=C(C)C=CC1=C(C)CCCC1(C)C,1,1,1 +104,Betaine,C[N+](C)(C)CC(O)=O,0,1,0 +105,beta-Lapachone,CC1(C)CCC2=C(O1)c1ccccc1C(=O)C2=O,1,0,0 +106,Betamethasone,CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)COP(O)(O)=O,0,1,0 +107,beta-Sitosterol,CCC(CCC(C)C1CCC2C3CC=C4CC(O)CCC4(C)C3CCC12C)C(C)C,1,1,0 +108,Betulinic acid,CC(=C)C1CCC2(CCC3(C)C(CCC4C5(C)CCC(O)C(C)(C)C5CCC34C)C12)C(O)=O,1,0,0 +109,Bezafibrate,CC(C)(Oc1ccc(CCNC(=O)c2ccc(Cl)cc2)cc1)C(O)=O,1,1,0 +110,Bicalutamide,CC(O)(CS(=O)(=O)c1ccc(F)cc1)C(=O)Nc1ccc(C#N)c(c1)C(F)(F)F,1,0,0 +111,Bifonazole,c1ccc(cc1)C(c1ccc(cc1)-c1ccccc1)n1ccnc1,0,1,0 +112,Biotin,OC(=O)CCCCC1SCC2NC(=O)NC12,1,0,0 +113,Bisoprolol,CC(C)NCC(O)COc1ccc(COCCOC(C)C)cc1,1,0,0 +114,Bleomycin,CC(O)C(NC(=O)C(C)C(O)C(C)NC(=O)C(NC(=O)c1nc(nc(N)c1C)C(CC(N)=O)NCC(N)C(N)=O)C(OC1OC(CO)C(O)C(O)C1OC1OC(CO)C(O)C(OC(N)=O)C1O)c1cnc[nH]1)C(=O)NCCc1nc(cs1)-c1nc(cs1)C(O)=O,1,1,0 +115,Bortezomib,CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O,1,1,0 +116,Bosentan,COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(cc2)C(C)(C)C)nc(nc1OCCO)-c1ncccn1,1,1,1 +117,Bromfenac,Nc1c(CC(O)=O)cccc1C(=O)c1ccc(Br)cc1,1,0,0 +118,Bromisovalum,CC(C)C(Br)C(=O)NC(N)=O,1,1,0 +119,Bromocriptine,CC(C)CC1N2C(=O)C(NC(=O)C3CN(C)C4Cc5c(Br)[nH]c6cccc(C4=C3)c56)(OC2(O)C2CCCN2C1=O)C(C)C,0,1,0 +120,Brotizolam,Cc1nnc2CN=C(c3ccccc3Cl)c3cc(Br)sc3-n12,0,1,0 +121,Bucladesine,CCCC(=O)Nc1ncnc2n(cnc12)C1OC2COP(O)(=O)OC2C1OC(=O)CCC,1,1,1 +122,Budesonide,CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2(O1)C(=O)CO,1,1,0 +123,Bumetanide,CCCCNc1cc(cc(c1Oc1ccccc1)S(N)(=O)=O)C(O)=O,0,0,1 +124,Bupivacaine,CCCCN1CCCCC1C(=O)Nc1c(C)cccc1C,0,1,0 +125,Buprenorphine,COc1c(O)ccc2CC3N(CCC4(CC5(CCC34CC5C(C)(O)C(C)(C)C)OC)c12)CC1CC1,1,1,0 +126,Bupropion,CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1,1,0,0 +127,Buspirone,O=C1CC2(CCCC2)CC(=O)N1CCCCN1CCN(CC1)c1ncccn1,1,0,0 +128,Busulfan,CS(=O)(=O)OCCCCOS(C)(=O)=O,1,1,0 +129,Butachlor,CCCCOCN(C(=O)CCl)c1c(CC)cccc1CC,0,1,0 +130,Butalbital,CC(C)CC1(CC=C)C(=O)NC(=O)NC1=O,1,0,0 +131,Butethal,CCCCC1(CC)C(=O)NC(=O)NC1=O,0,1,0 +132,Caffeine,CN1C(=O)N(C)c2ncn(C)c2C1=O,1,1,0 +133,Calcitriol,CC(CCCC(C)(C)O)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C,1,1,0 +134,Camptothecin,CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O,1,1,0 +135,Candesartan cilexetil,CCOc1nc2cccc(C(=O)OC(C)OC(=O)OC3CCCCC3)c2n1Cc1ccc(cc1)-c1ccccc1-c1nn[nH]n1,1,1,0 +136,Cannabidiol,CCCCCc1cc(O)c(C2C=C(C)CCC2C(C)=C)c(O)c1,1,1,0 +137,Capecitabine,CCCCCOC(=O)NC1=NC(=O)N(C=C1F)C1OC(C)C(O)C1O,1,1,0 +138,Capsaicin,COc1cc(CNC(=O)CCCCC=CC(C)C)ccc1O,1,1,0 +139,Captopril,CC(CS)C(=O)N1CCCC1C(O)=O,1,1,0 +140,Carbamazepine,NC(=O)N1c2ccccc2C=Cc2ccccc12,1,1,0 +141,Carbamylcholine,C[N+](C)(C)CCOC(N)=O,0,1,0 +142,Carbaryl,CNC(=O)Oc1cccc2ccccc12,0,1,0 +143,Carbenicillin disodium,CC1(C)SC2C(NC(=O)C(C(O)=O)c3ccccc3)C(=O)N2C1C(O)=O,1,0,0 +144,Carbenoxolone,CC1(C)C(CCC2(C)C1CCC1(C)C2C(=O)C=C2C3CC(C)(CCC3(C)CCC12C)C(O)=O)OC(=O)CCC(O)=O,0,1,0 +145,Carbimazole,CCOC(=O)N1C=CN(C)C1=S,1,0,0 +146,Carboplatin,OC(=O)C1(CCC1)C(O)=O,1,1,0 +147,Carbutamide,CCCCNC(=O)NS(=O)(=O)c1ccc(N)cc1,0,1,0 +148,Cariporide,CC(C)c1ccc(cc1S(C)(=O)=O)C(=O)NC(N)=N,0,1,0 +149,Carisoprodol,CCCC(C)(COC(N)=O)COC(=O)NC(C)C,0,1,0 +150,Carmustine,ClCCNC(=O)N(CCCl)N=O,1,1,0 +151,Carnitine,C[N+](C)(C)CC(O)CC(O)=O,1,1,1 +152,Carprofen,CC(C(O)=O)c1ccc-2c(Nc3ccc(Cl)cc-23)c1,0,0,1 +153,Carvedilol,COc1ccccc1OCCNCC(O)COc1cccc2Nc3ccccc3-c12,1,1,0 +154,Catechin,OC1Cc2c(O)cc(O)cc2OC1c1ccc(O)c(O)c1,1,1,1 +155,Cefaclor,NC(C(=O)NC1C2SCC(Cl)=C(N2C1=O)C(O)=O)c1ccccc1,1,0,0 +156,Cefadroxil,CC1=C(N2C(SC1)C(NC(=O)C(N)c1ccc(O)cc1)C2=O)C(O)=O,1,0,0 +157,Cefazolin,Cc1nnc(SCC2=C(N3C(SC2)C(NC(=O)Cn2cnnn2)C3=O)C(O)=O)s1,1,1,0 +158,Cefixime,Nc1nc(cs1)C(=NOCC(O)=O)C(=O)NC1C2SCC(C=C)=C(N2C1=O)C(O)=O,1,0,0 +159,Cefoperazone,CCN1CCN(C(=O)NC(C(=O)NC2C3SCC(CSc4nnnn4C)=C(N3C2=O)C(O)=O)c2ccc(O)cc2)C(=O)C1=O,1,1,0 +160,Cefotaxime,CON=C(C(=O)NC1C2SCC(COC(C)=O)=C(N2C1=O)C(O)=O)c1csc(N)n1,1,0,0 +161,Cefotetan,COC1(NC(=O)C2S\C(S2)=C(/C(N)=O)C(O)=O)C2SCC(CSc3nnnn3C)=C(N2C1=O)C(O)=O,1,0,0 +162,Cefprozil,CC=CC1=C(N2C(SC1)C(NC(=O)C(N)c1ccc(O)cc1)C2=O)C(O)=O,1,0,0 +163,Ceftriaxone,CON=C(C(=O)NC1C2SCC(CSC3=NC(=O)C(=O)NN3C)=C(N2C1=O)C(O)=O)c1csc(N)n1,1,1,1 +164,Celecoxib,Cc1ccc(cc1)-c1cc(nn1-c1ccc(cc1)S(N)(=O)=O)C(F)(F)F,1,1,0 +165,Cephaloridine,OC(=O)C1=C(CSC2C(NC(=O)Cc3cccs3)C(=O)N12)C[n+]1ccccc1,1,0,0 +166,Cephalosporin,CC(=O)OCC1=C(N2C(SC1)C(NC(=O)CCCC(N)C(O)=O)C2=O)C(O)=O,1,0,0 +167,Cephalothin,CC(=O)OCC1=C(N2C(SC1)C(NC(=O)Cc1cccs1)C2=O)C(O)=O,1,0,0 +168,Cerivastatin,COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc(F)cc1)C(C)C,1,1,1 +169,Cerivastatin sodium,COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc(F)cc1)C(C)C,0,1,1 +170,Cetirizine,OC(=O)COCCN1CCN(CC1)C(c1ccccc1)c1ccc(Cl)cc1,1,0,0 +171,Cetrimonium bromide,CCCCCCCCCCCCCCCC[N+](C)(C)C,0,1,0 +172,CF101,CNC(=O)C1OC(C(O)C1O)n1cnc2c(NCc3cccc(I)c3)ncnc12,0,1,0 +173,Chenodiol,O=C(O)CC[C@H]([C@H]1CC[C@@H]2[C@]1(C)CC[C@H]4[C@H]2[C@H](O)C[C@@H]3C[C@H](O)CC[C@@]34C)C,1,1,1 +174,Chloral hydrate,OC(O)C(Cl)(Cl)Cl,1,1,0 +175,Chlorambucil,OC(=O)CCCc1ccc(cc1)N(CCCl)CCCl,1,1,0 +176,Chloramine-T,Cc1ccc(cc1)S(=O)(=O)NCl,0,1,1 +177,Chloramphenicol,OCC(NC(=O)C(Cl)Cl)C(O)c1ccc(cc1)N(=O)=O,1,1,0 +178,Chlordiazepoxide,CN=C1CN(O)C(c2ccccc2)=C2C=C(Cl)C=CC2=N1,0,1,0 +179,Chlorguanide,CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1,1,0,0 +180,Chlormadinone acetate,CC(=O)OC1(CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)C3CCC12C)C(C)=O,1,1,1 +181,Chlormethiazole,Cc1ncsc1CCCl,1,1,0 +182,Chlormezanone,CN1C(c2ccc(Cl)cc2)S(=O)(=O)CCC1=O,1,0,0 +183,Chloroquine,CCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc12,1,1,1 +184,Chloroxylenol,Cc1cc(O)cc(C)c1Cl,0,1,0 +185,Chlorphenamine,CN(C)CCC(c1ccc(Cl)cc1)c1ccccn1,1,0,0 +186,Chlorpromazine,CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12,1,1,1 +187,Chlorpropamide,CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1,1,1,0 +188,Chlortetracycline,CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)C2(O)C(=O)C(C(N)=O)=C1O,0,1,1 +189,Chlorzoxazone,Oc1nc2cc(Cl)ccc2o1,1,0,0 +190,Cholestyramine,CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O)(=O)=O,1,1,0 +191,Chondroitin sulfate,CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(O)C1O)C(O)=O,0,1,0 +192,Cidofovir,NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1,1,0,0 +193,Cimetidine,CN=C(NCCSCc1nc[nH]c1C)NC#N,1,1,1 +194,Cinchophen,OC(=O)c1cc(nc2ccccc12)-c1ccccc1,1,0,1 +195,Cinoxacin,CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12,1,0,0 +196,Ciprofibrate,CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O,1,1,1 +197,Ciprofloxacin,OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O,1,1,0 +198,Cisapride,COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)cc1OC,1,0,0 +199,Citalopram,CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1,0,1,0 +200,Citric acid,OC(=O)CC(O)(CC(O)=O)C(O)=O,0,1,0 From e0d9c387e436f9d31e1ded060a7b57911d7e2b6a Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Tue, 6 Apr 2021 22:47:53 +0200 Subject: [PATCH 15/55] clean up, scoring, more explanational text --- docs/tutorials/standardization.ipynb | 1033 ++++++++++++-------------- 1 file changed, 484 insertions(+), 549 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 94678c39..1b5a5a80 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -1,42 +1,93 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Implementation and evaluation of a computational standardization pipeline for chemical compounds\n", + "## Based on [\"Trust, But Verify: On the Importance of Chemical Structure Curation in Cheminformatics and QSAR Modeling Research\" from 2010 (D. Fourches, ...)\"](https://pubmed.ncbi.nlm.nih.gov/20572635/)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Introduction \n", + "This notebook serves to showcase the functionality of the Standardization module. Following the recommended standardization steps of \"Trust, But Verify\"(D. Fourches, ..., 2010).\n", + "This notebook uses the dataset of following paper: [Cheminformatics Analysis of Assertions Mined from Literature That Describe Drug-Induced Liver Injury in Different Species](https://pubs.acs.org/doi/10.1021/tx900326k)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " For all relative paths in this notebook to work, please make sure you are starting this notebook from the working directory ./opencadd/docs/tutorials/
\n", + "Check your directory with the cell below." + ] + }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/allen/dev/opencadd/docs/tutorials'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import os\n", - "os.getcwd()\n", - "os.chdir(\"/home/allen\")\n", - "#Import Pandas\n", - "import pandas as pd\n", - "import numpy as np" + "os.getcwd()" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 1, "metadata": {}, + "outputs": [], "source": [ - "## Implementation of the main steps for chemical data curation following the paper \"Trust, But Verify: On the Importance of Chemical Structure Curation in Cheminformatics and QSAR Modeling Research\" from 2010 (D.Fourches, ...)\n", + "#Import pandas and numpy\n", + "import pandas as pd\n", + "import numpy as np\n", "\n", - "Link: https://pubmed.ncbi.nlm.nih.gov/20572635/\n" + "#import modules and Standardization API functions needed\n", + "from rdkit import Chem\n", + "from opencadd.compounds.standardization import convert_format,handle_fragments,disconnect_metals,detect_inorganic,remove_salts" ] }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ - "#import modules\n", - "from rdkit import Chem\n", - "from opencadd.compounds.standardization import convert_format,handle_fragments,disconnect_metals,detect_inorganic,remove_salts\n" + "# Helper function to mark at which step the entry failed the standardization pipeline\n", + "def failMarker(i):\n", + " i=stepNo\n", + " return i" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 0: Initial dataset import and cleaning\n", + "------------------------------------------------\n", + "The first step before the standardization steps are started is a import of the dataset as an Pandas Dataframe, only including the columns necessary. In this case we use the Names and SMILEs column.
\n", + "Then we search for all entries which actually don't have any strings saved under SMILEs and kick them from the dataset, since they are not holding any information.
\n", + "After the import we add a Failed_at column to track in which standardization step the entry failed. \n", + "The intial `stepNo` will be 0, which leads to an default Failed_at-value of 0 for all entries. The Failed_at-value will be used to filter out all failed entries for the upcoming steps." ] }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -62,33 +113,39 @@ " \n", " Names\n", " SMILEs\n", + " Failed_at\n", " \n", " \n", " \n", " \n", " 0\n", " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " 0\n", " \n", " \n", " 1\n", " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", + " 0\n", " \n", " \n", " 2\n", " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", + " 0\n", " \n", " \n", " 3\n", " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", + " 0\n", " \n", " \n", " 4\n", " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", + " 0\n", " \n", " \n", "\n", @@ -102,156 +159,62 @@ "3 2,3-Dimercaptosuccinic acid \n", "4 2,4,6-Trinitrotoluene \n", "\n", - " SMILEs \n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C \n", - "3 OC(=O)C(S)C(S)C(O)=O \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O " + " SMILEs Failed_at \n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 " ] }, - "execution_count": 76, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# optional test-SMILEs\n", + "stepNo = 0\n", "\n", - "test_smiles = \"NC(CC(=O)O)C(=O)[O-].O.O.[Na+]\"\n", - "test_smiles2 = \"C(C(=O)[O-])(Cc1n[n-]nn1)(C[NH3+])(C[N+](=O)[O-])\"\n", - "test_smiles3= \"CN(C)C.Cl.Cl.Br\"\n", + "# Importing the test-dataset \n", + "dataset = pd.read_csv (r'./data/standardization_test_data.csv')\n", "\n", - "# test-dataset with \n", - "dataset = pd.read_csv (r'/home/allen/dev/utility/data/test_dataset.csv')\n", - "dataset.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Convert the SMILE representation format of the compunds into Mol-files\n", - "\n", - "RDKit performs a sanitization of the molecule by default. In this sanitization step RDKit tries to kekulize the mols (generates alternate Lewis structures). This step might fail, when the structure is aromatic, but no Hydrogen position is provided. !(This explanation might be a bit short and not fully correct, check this later again)!\n", + "#Filter for needed columns\n", + "dataset = dataset[[\"Names\",\"SMILEs\"]]\n", "\n", - "If the conversion from SMILE to mol fails, then those SMILEs will be moved into a subset for manual curation. Those entries will be dropped from the main dataset.\n", + "#Kick all empty entries\n", + "dataset = dataset[(dataset['SMILEs'].notna())]\n", "\n", - "To avoid the sanitization of the molecule `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find different representation formats of the same molecule. \n", + "#Setting a initial score of 0 for all entries\n", + "dataset['Failed_at'] = dataset['SMILEs'].notna().apply(failMarker)\n", "\n", - "References:\n", - "https://chemistry.stackexchange.com/questions/116498/what-is-kekulization-in-rdkit\n", - "https://rdkit-discuss.narkive.com/QwnqcKcM/another-can-t-kekulize-mol-observation\n", - "https://www.rdkit.org/docs/Cookbook.html\n", - "https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html\n" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RDKit ERROR: [16:27:51] WARNING: Proton(s) [16:32:10] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", - "RDKit ERROR: \n", - "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", - "RDKit ERROR: \n", - "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", - "RDKit ERROR: \n", - "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", - "RDKit ERROR: \n", - "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", - "RDKit ERROR: \n", - "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", - "RDKit ERROR: \n", - "RDKit ERROR: [16:32:10] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", - "RDKit ERROR: \n" - ] - } - ], - "source": [ - "dataset['Mol_format']= dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", - "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_with_MOL.csv', index = False)\n", - "#Store all SMILEs Entries in a list which couldn't be converted to Mol\n", - "no_kekulization = dataset[(dataset['Mol_format'].isnull())]\n", - "no_kekulization.head()\n", - "# Drop all entries with couldn't be converted to Mol\n", - "#datasetclean = dataset.dropna(subset=['Mol_format'], how='all', inplace = True)\n", - "datasetclean = dataset[dataset['Mol_format'].notna()]\n", - "datasetclean.to_csv('/home/allen/dev/utility/data/test_dataset_with_MOL_and_noNA.csv', index = False)\n", - "datasetclean.head()\n", - "dataset = datasetclean" + "#Show the current form of the dataframe\n", + "dataset.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Removal of Inorganics and Mixtures\n", + "### Step 1: Conversion of SMILEs to mol\n", + "------------------------------------------\n", + "### Convert the SMILE representation format of the compounds into Mol-files\n", "\n", - "Since molecular descriptors can only be computed for organic compunds, all inorganic compunds must be removed before the descriptors are calculated. (Chapter 2.1. Fourches 2010)\n", + "RDKit performs a sanitization of the molecule by default. In this sanitization step RDKit tries to kekulize the mols (generates alternate Lewis structures). This step might fail, when the structure is aromatic, but no Hydrogen position is provided. TODO:!(This explanation might be a bit short and not fully correct, check this later again)!\n", "\n", - "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of \"True\" when it finds a inorganic molecule. We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", - "\"Inorganic compounds are known to have biological effects, like for example toxic effects.\"(Chapter 2.1. Fourches 2010)(fix citation)\n", - " Due to their potential bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", - "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", - "\n", - "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself.\n", - "\n", - "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [], - "source": [ + "If the conversion from SMILE to mol fails, then those SMILEs will get a Failed_at marker added. \n", "\n", - "# Removal of mixtures, inorganics (and eventually organometallics)\n", - "# Functions detect_inorganic,remove_fragments, disconnect_metals, detect_inorganic again" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (, line 3)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m3\u001b[0m\n\u001b[0;31m new_data = array of smiles\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "# Pseudocode for filtering the inorganic records\n", - "\n", - "new_data = array of smiles\n", - "records_organics = []\n", - "records_inorganics = []\n", + "To avoid the sanitization of the molecule `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find different representation formats of the same molecule. \n", "\n", - "for x in new_data:\n", - " convert_smiles_to_mol(x)\n", - " if detect_inorganic(x)==\"False\":\n", - " records_organics.append(x) #QUESTION: Can I just store mol-files in an array?\n", - " elif detect_inorganic(x)==\"True\":\n", - " records_inorganics.append(x)\n", - " else:\n", - " raise Exception(\"Something is wrong with:\" x)\n", - "return records_organics, records_inorganics\n", - "# no further processing will happen to `records_inorganics`\n", - "# `records_organics` is passed on in the pipeline\n" + "References:
\n", + "https://chemistry.stackexchange.com/questions/116498/what-is-kekulization-in-rdkit
\n", + "https://rdkit-discuss.narkive.com/QwnqcKcM/another-can-t-kekulize-mol-observation
\n", + "https://www.rdkit.org/docs/Cookbook.html
\n", + "https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html
\n" ] }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -277,389 +240,227 @@ " \n", " Names\n", " SMILEs\n", - " Mol_format\n", + " Failed_at\n", + " mol\n", " \n", " \n", " \n", " \n", " 0\n", " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1a4260>\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d1877b0>\n", " \n", " \n", " 1\n", " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8120>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187990>\n", " \n", " \n", " 2\n", " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8170>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187760>\n", " \n", " \n", " 3\n", " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c81c0>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187a30>\n", " \n", " \n", " 4\n", " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8210>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187940>\n", + " \n", + " \n", + " 5\n", + " 2-Deoxy-D-glucose\n", + " OCC1OC(O)CC(O)C1O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d1879e0>\n", + " \n", + " \n", + " 6\n", + " 2'-fluoro-5-methylarabinosyluracil\n", + " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187ad0>\n", + " \n", + " \n", + " 7\n", + " 2-Methoxyestradiol\n", + " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187a80>\n", + " \n", + " \n", + " 8\n", + " 4-aminobenzoic acid\n", + " Nc1ccc(cc1)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187b20>\n", + " \n", + " \n", + " 9\n", + " 4-Hydroxytamoxifen\n", + " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187bc0>\n", + " \n", + " \n", + " 10\n", + " 5 fluorouracil\n", + " FC1=CNC(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187b70>\n", + " \n", + " \n", + " 11\n", + " 5-Azacitidine\n", + " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187c10>\n", + " \n", + " \n", + " 12\n", + " 5-Bromouracil\n", + " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187c60>\n", + " \n", + " \n", + " 13\n", + " 5-fluoro-2'-deoxyuridine\n", + " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187cb0>\n", + " \n", + " \n", + " 14\n", + " 6-Mercaptopurine\n", + " Sc1ncnc2[nH]c[nH]c12\n", + " 1\n", + " NaN\n", + " \n", + " \n", + " 15\n", + " Acadesine\n", + " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187da0>\n", " \n", " \n", "\n", "" ], "text/plain": [ - " Names \\\n", - "0 (R)-Roscovitine \n", - "1 17-Methyltestosterone \n", - "2 1-alpha-Hydroxycholecalciferol \n", - "3 2,3-Dimercaptosuccinic acid \n", - "4 2,4,6-Trinitrotoluene \n", + " Names \\\n", + "0 (R)-Roscovitine \n", + "1 17-Methyltestosterone \n", + "2 1-alpha-Hydroxycholecalciferol \n", + "3 2,3-Dimercaptosuccinic acid \n", + "4 2,4,6-Trinitrotoluene \n", + "5 2-Deoxy-D-glucose \n", + "6 2'-fluoro-5-methylarabinosyluracil \n", + "7 2-Methoxyestradiol \n", + "8 4-aminobenzoic acid \n", + "9 4-Hydroxytamoxifen \n", + "10 5 fluorouracil \n", + "11 5-Azacitidine \n", + "12 5-Bromouracil \n", + "13 5-fluoro-2'-deoxyuridine \n", + "14 6-Mercaptopurine \n", + "15 Acadesine \n", "\n", - " SMILEs \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C \n", - "3 OC(=O)C(S)C(S)C(O)=O \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O \n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "5 OCC1OC(O)CC(O)C1O 0 \n", + "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", + "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", + "8 Nc1ccc(cc1)C(O)=O 0 \n", + "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", + "10 FC1=CNC(=O)NC1=O 0 \n", + "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", + "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", + "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", + "14 Sc1ncnc2[nH]c[nH]c12 1 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", "\n", - " Mol_format \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 " + " mol \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 NaN \n", + "15 " ] }, - "execution_count": 80, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Removal of inorganics and mixtures of the dataset\n", - "dataset['Inorganics'] = dataset['Mol_format'].apply(detect_inorganic)\n", - "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_inorganic.csv', index = False)\n", - "contains_inorganics = dataset[dataset['Inorganics']== True]\n", - "contains_inorganics.head()\n", - "dataset = dataset[dataset['Inorganics']== False]\n", - "dataset = dataset[[\"Names\",\"SMILEs\",\"Mol_format\"]]\n", - "dataset.head()" + "# We set up the stepNo and create a subset with only the entries which haven't failed yet.\n", + "stepNo = 1\n", + "work_dataset = dataset[(dataset['Failed_at']==0)]\n", + "\n", + "# A column called mol is beeing added to the dataframe to store the mol-files\n", + "dataset['mol'] = work_dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", + "\n", + "# Checking for SMILEs, where no mol could be generated. Marking them with the failMarker\n", + "dataset['Failed_at'] = np.where(dataset['mol'].isnull(),dataset['Failed_at'].apply(failMarker),dataset['Failed_at'] )\n", + "\n", + "# See how the entry in row 14 has a Failed_at value of 1.\n", + "dataset.head(16)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Removal of Inorganics and Mixtures\n", + "--------------------------------------------------\n", + "\n", + "Since molecular descriptors can only be computed for organic compunds, all inorganic compunds must be removed before the descriptors are calculated. (Chapter 2.1. Fourches 2010)\n", + "\n", + "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of \"True\" when it finds a inorganic molecule. We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", + "\"Inorganic compounds are known to have biological effects, like for example toxic effects.\"(Chapter 2.1. Fourches 2010)(fix citation)\n", + " Due to their potential bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", + "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", + "\n", + "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself.\n", + "\n", + "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." ] }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 57, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:32:22] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Charges were rearranged\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:05] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit INFO: [16:3:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:32:22] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Removed fragment: bromine\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit INFO: [16:33:06] Running FragmentRemover\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Charges were rearranged\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [16:33:06] WARNING: Omitted undefined stereo\n" - ] - }, { "data": { "text/html": [ @@ -683,121 +484,255 @@ " \n", " Names\n", " SMILEs\n", - " Mol_format\n", - " InchIBeforeMixturesFiltering\n", - " MolafterMixturesFiltering\n", - " InchIAfterMixturesFiltering\n", - " noChanges\n", + " Failed_at\n", + " mol\n", " \n", " \n", " \n", " \n", " 0\n", " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1a4260>\n", - " InChI=1S/C19H26N6O.BrH/c1-4-15(11-26)22-19-23-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1cada0>\n", - " InChI=1S/C19H26N6O/c1-4-15(11-26)22-19-23-17(2...\n", - " False\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d1877b0>\n", " \n", " \n", " 1\n", " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8120>\n", - " InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c08a0>\n", - " InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5...\n", - " True\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187990>\n", " \n", " \n", " 2\n", " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8170>\n", - " InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1cadf0>\n", - " InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-...\n", - " True\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187760>\n", " \n", " \n", " 3\n", " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c81c0>\n", - " InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1cacb0>\n", - " InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9...\n", - " True\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187a30>\n", " \n", " \n", " 4\n", " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac1c8210>\n", - " InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f59ac22ba80>\n", - " InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3...\n", - " True\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187940>\n", + " \n", + " \n", + " 5\n", + " 2-Deoxy-D-glucose\n", + " OCC1OC(O)CC(O)C1O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d1879e0>\n", + " \n", + " \n", + " 6\n", + " 2'-fluoro-5-methylarabinosyluracil\n", + " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187ad0>\n", + " \n", + " \n", + " 7\n", + " 2-Methoxyestradiol\n", + " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187a80>\n", + " \n", + " \n", + " 8\n", + " 4-aminobenzoic acid\n", + " Nc1ccc(cc1)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187b20>\n", + " \n", + " \n", + " 9\n", + " 4-Hydroxytamoxifen\n", + " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187bc0>\n", + " \n", + " \n", + " 10\n", + " 5 fluorouracil\n", + " FC1=CNC(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187b70>\n", + " \n", + " \n", + " 11\n", + " 5-Azacitidine\n", + " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187c10>\n", + " \n", + " \n", + " 12\n", + " 5-Bromouracil\n", + " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187c60>\n", + " \n", + " \n", + " 13\n", + " 5-fluoro-2'-deoxyuridine\n", + " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187cb0>\n", + " \n", + " \n", + " 15\n", + " Acadesine\n", + " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187da0>\n", + " \n", + " \n", + " 16\n", + " Acarbose\n", + " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187d00>\n", " \n", " \n", "\n", "" ], "text/plain": [ - " Names \\\n", - "0 (R)-Roscovitine \n", - "1 17-Methyltestosterone \n", - "2 1-alpha-Hydroxycholecalciferol \n", - "3 2,3-Dimercaptosuccinic acid \n", - "4 2,4,6-Trinitrotoluene \n", - "\n", - " SMILEs \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.Br \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C \n", - "3 OC(=O)C(S)C(S)C(O)=O \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O \n", - "\n", - " Mol_format \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", + " Names \\\n", + "0 (R)-Roscovitine \n", + "1 17-Methyltestosterone \n", + "2 1-alpha-Hydroxycholecalciferol \n", + "3 2,3-Dimercaptosuccinic acid \n", + "4 2,4,6-Trinitrotoluene \n", + "5 2-Deoxy-D-glucose \n", + "6 2'-fluoro-5-methylarabinosyluracil \n", + "7 2-Methoxyestradiol \n", + "8 4-aminobenzoic acid \n", + "9 4-Hydroxytamoxifen \n", + "10 5 fluorouracil \n", + "11 5-Azacitidine \n", + "12 5-Bromouracil \n", + "13 5-fluoro-2'-deoxyuridine \n", + "15 Acadesine \n", + "16 Acarbose \n", "\n", - " InchIBeforeMixturesFiltering \\\n", - "0 InChI=1S/C19H26N6O.BrH/c1-4-15(11-26)22-19-23-... \n", - "1 InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5... \n", - "2 InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-... \n", - "3 InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9... \n", - "4 InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3... \n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "5 OCC1OC(O)CC(O)C1O 0 \n", + "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", + "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", + "8 Nc1ccc(cc1)C(O)=O 0 \n", + "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", + "10 FC1=CNC(=O)NC1=O 0 \n", + "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", + "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", + "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", "\n", - " MolafterMixturesFiltering \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "\n", - " InchIAfterMixturesFiltering noChanges \n", - "0 InChI=1S/C19H26N6O/c1-4-15(11-26)22-19-23-17(2... False \n", - "1 InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5... True \n", - "2 InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-... True \n", - "3 InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9... True \n", - "4 InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3... True " + " mol \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 " ] }, - "execution_count": 82, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], + "source": [ + "# We set up the stepNo and create a subset with only the entries which haven't failed yet.\n", + "stepNo = 2\n", + "work_dataset = dataset[(dataset['Failed_at']==0)]\n", + "work_dataset.head(16)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Removal of mixtures, inorganics (and eventually organometallics)\n", + "# Functions detect_inorganic,remove_fragments, disconnect_metals, detect_inorganic again" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Pseudocode for filtering the inorganic records\n", + "\n", + "new_data = array of smiles\n", + "records_organics = []\n", + "records_inorganics = []\n", + "\n", + "for x in new_data:\n", + " convert_smiles_to_mol(x)\n", + " if detect_inorganic(x)==\"False\":\n", + " records_organics.append(x) #QUESTION: Can I just store mol-files in an array?\n", + " elif detect_inorganic(x)==\"True\":\n", + " records_inorganics.append(x)\n", + " else:\n", + " raise Exception(\"Something is wrong with:\" x)\n", + "return records_organics, records_inorganics\n", + "# no further processing will happen to `records_inorganics`\n", + "# `records_organics` is passed on in the pipeline\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Removal of inorganics and mixtures of the dataset\n", + "dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", + "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_inorganic.csv', index = False)\n", + "contains_inorganics = dataset[dataset['Inorganics']== True]\n", + "contains_inorganics.head()\n", + "dataset = dataset[dataset['Inorganics']== False]\n", + "dataset = dataset[[\"Names\",\"SMILEs\",\"mol\"]]\n", + "dataset.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Flagging of Mixtures\n", - "dataset['InchIBeforeMixturesFiltering'] = dataset['Mol_format'].apply(convert_format.convert_mol_to_inchi)\n", - "dataset['MolafterMixturesFiltering'] = dataset['Mol_format'].apply(handle_fragments.remove_fragments)\n", + "dataset['InchIBeforeMixturesFiltering'] = dataset['mol'].apply(convert_format.convert_mol_to_inchi)\n", + "dataset['MolafterMixturesFiltering'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", "dataset['InchIAfterMixturesFiltering'] = dataset['MolafterMixturesFiltering'].apply(convert_format.convert_mol_to_inchi)\n", "dataset['noChanges']= dataset['InchIBeforeMixturesFiltering'] == dataset['InchIAfterMixturesFiltering']\n", "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_mixtures.csv', index = False)\n", From 7008594dab7c973ea6877858a2fc2941a7e5fbcc Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 7 Apr 2021 12:25:29 +0200 Subject: [PATCH 16/55] changed test entries to showcase functionality --- docs/tutorials/data/standardization_test_data.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/data/standardization_test_data.csv b/docs/tutorials/data/standardization_test_data.csv index a5deaa90..f6c14f34 100644 --- a/docs/tutorials/data/standardization_test_data.csv +++ b/docs/tutorials/data/standardization_test_data.csv @@ -1,5 +1,5 @@ IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS -1,(R)-Roscovitine,CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1,0,1,0 +1,(R)-Roscovitine,CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca],0,1,0 2,17-Methyltestosterone,CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C,0,1,0 3,1-alpha-Hydroxycholecalciferol,CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C,1,0,0 4,"2,3-Dimercaptosuccinic acid",OC(=O)C(S)C(S)C(O)=O,1,1,0 From c2b1996489981b735721fbedb39360ea79075aa8 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 7 Apr 2021 12:26:02 +0200 Subject: [PATCH 17/55] testing different approaches to handling entries --- docs/tutorials/standardization.ipynb | 486 ++++++++++----------------- 1 file changed, 186 insertions(+), 300 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 1b5a5a80..bd6145e7 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -36,7 +36,7 @@ "'/home/allen/dev/opencadd/docs/tutorials'" ] }, - "execution_count": 5, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 78, "metadata": {}, "outputs": [], "source": [ @@ -63,13 +63,13 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 79, "metadata": {}, "outputs": [], "source": [ "# Helper function to mark at which step the entry failed the standardization pipeline\n", "def failMarker(i):\n", - " i=stepNo\n", + " i=taskNum\n", " return i" ] }, @@ -79,15 +79,15 @@ "source": [ "### Step 0: Initial dataset import and cleaning\n", "------------------------------------------------\n", - "The first step before the standardization steps are started is a import of the dataset as an Pandas Dataframe, only including the columns necessary. In this case we use the Names and SMILEs column.
\n", + "The first step before the standardization steps are started is a import of the dataset as an Pandas Dataframe, only including the columns necessary. In this case we use the IDs, Names and SMILEs column.
\n", "Then we search for all entries which actually don't have any strings saved under SMILEs and kick them from the dataset, since they are not holding any information.
\n", "After the import we add a Failed_at column to track in which standardization step the entry failed. \n", - "The intial `stepNo` will be 0, which leads to an default Failed_at-value of 0 for all entries. The Failed_at-value will be used to filter out all failed entries for the upcoming steps." + "The intial `taskNum` will be 0, which leads to an default Failed_at-value of 0 for all entries. The Failed_at-value will be used to filter out all failed entries for the upcoming steps." ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 119, "metadata": {}, "outputs": [ { @@ -111,6 +111,7 @@ " \n", " \n", " \n", + " IDs\n", " Names\n", " SMILEs\n", " Failed_at\n", @@ -119,30 +120,35 @@ " \n", " \n", " 0\n", + " 1\n", " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", " \n", " \n", " 1\n", + " 2\n", " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", " \n", " \n", " 2\n", + " 3\n", " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", " \n", " \n", " 3\n", + " 4\n", " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", " \n", " \n", " 4\n", + " 5\n", " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", @@ -152,37 +158,37 @@ "" ], "text/plain": [ - " Names \\\n", - "0 (R)-Roscovitine \n", - "1 17-Methyltestosterone \n", - "2 1-alpha-Hydroxycholecalciferol \n", - "3 2,3-Dimercaptosuccinic acid \n", - "4 2,4,6-Trinitrotoluene \n", + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", "\n", " SMILEs Failed_at \n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 \n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", "3 OC(=O)C(S)C(S)C(O)=O 0 \n", "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 " ] }, - "execution_count": 51, + "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "stepNo = 0\n", + "taskNum = 0\n", "\n", "# Importing the test-dataset \n", "dataset = pd.read_csv (r'./data/standardization_test_data.csv')\n", "\n", "#Filter for needed columns\n", - "dataset = dataset[[\"Names\",\"SMILEs\"]]\n", + "dataset = dataset[['IDs','Names','SMILEs']]\n", "\n", "#Kick all empty entries\n", - "dataset = dataset[(dataset['SMILEs'].notna())]\n", + "#dataset = dataset[(dataset['SMILEs'].notna())]\n", "\n", "#Setting a initial score of 0 for all entries\n", "dataset['Failed_at'] = dataset['SMILEs'].notna().apply(failMarker)\n", @@ -214,9 +220,29 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 125, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: \n", + "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: \n", + "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: \n", + "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: \n", + "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: \n", + "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: \n", + "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: \n" + ] + }, { "data": { "text/html": [ @@ -238,6 +264,7 @@ " \n", " \n", " \n", + " IDs\n", " Names\n", " SMILEs\n", " Failed_at\n", @@ -247,141 +274,157 @@ " \n", " \n", " 0\n", + " 1\n", " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d1877b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c55b20>\n", " \n", " \n", " 1\n", + " 2\n", " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c3c1c0>\n", " \n", " \n", " 2\n", + " 3\n", " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c3c080>\n", " \n", " \n", " 3\n", + " 4\n", " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c3c350>\n", " \n", " \n", " 4\n", + " 5\n", " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c3c300>\n", " \n", " \n", " 5\n", + " 6\n", " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d1879e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c7c0d0>\n", " \n", " \n", " 6\n", + " 7\n", " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35030>\n", " \n", " \n", " 7\n", + " 8\n", " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187a80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c355d0>\n", " \n", " \n", " 8\n", + " 9\n", " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c357b0>\n", " \n", " \n", " 9\n", + " 10\n", " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35800>\n", " \n", " \n", " 10\n", + " 11\n", " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35b70>\n", " \n", " \n", " 11\n", + " 12\n", " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187c10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35530>\n", " \n", " \n", " 12\n", + " 13\n", " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187c60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35a30>\n", " \n", " \n", " 13\n", + " 14\n", " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35210>\n", " \n", " \n", " 14\n", + " 15\n", " 6-Mercaptopurine\n", " Sc1ncnc2[nH]c[nH]c12\n", " 1\n", - " NaN\n", + " None\n", " \n", " \n", " 15\n", + " 16\n", " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1d8d187da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35990>\n", " \n", " \n", "\n", "" ], "text/plain": [ - " Names \\\n", - "0 (R)-Roscovitine \n", - "1 17-Methyltestosterone \n", - "2 1-alpha-Hydroxycholecalciferol \n", - "3 2,3-Dimercaptosuccinic acid \n", - "4 2,4,6-Trinitrotoluene \n", - "5 2-Deoxy-D-glucose \n", - "6 2'-fluoro-5-methylarabinosyluracil \n", - "7 2-Methoxyestradiol \n", - "8 4-aminobenzoic acid \n", - "9 4-Hydroxytamoxifen \n", - "10 5 fluorouracil \n", - "11 5-Azacitidine \n", - "12 5-Bromouracil \n", - "13 5-fluoro-2'-deoxyuridine \n", - "14 6-Mercaptopurine \n", - "15 Acadesine \n", + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", + "5 6 2-Deoxy-D-glucose \n", + "6 7 2'-fluoro-5-methylarabinosyluracil \n", + "7 8 2-Methoxyestradiol \n", + "8 9 4-aminobenzoic acid \n", + "9 10 4-Hydroxytamoxifen \n", + "10 11 5 fluorouracil \n", + "11 12 5-Azacitidine \n", + "12 13 5-Bromouracil \n", + "13 14 5-fluoro-2'-deoxyuridine \n", + "14 15 6-Mercaptopurine \n", + "15 16 Acadesine \n", "\n", " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 \n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", "3 OC(=O)C(S)C(S)C(O)=O 0 \n", @@ -399,36 +442,36 @@ "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "14 NaN \n", - "15 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 None \n", + "15 " ] }, - "execution_count": 56, + "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# We set up the stepNo and create a subset with only the entries which haven't failed yet.\n", - "stepNo = 1\n", - "work_dataset = dataset[(dataset['Failed_at']==0)]\n", + "# We set up the taskNum \n", + "taskNum = 1\n", "\n", "# A column called mol is beeing added to the dataframe to store the mol-files\n", - "dataset['mol'] = work_dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", + "# The action is only applied to entries with a score of 0\n", + "dataset['mol'] = np.where(dataset['Failed_at']==0,dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol),None)\n", "\n", "# Checking for SMILEs, where no mol could be generated. Marking them with the failMarker\n", "dataset['Failed_at'] = np.where(dataset['mol'].isnull(),dataset['Failed_at'].apply(failMarker),dataset['Failed_at'] )\n", @@ -458,219 +501,78 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 127, "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NamesSMILEsFailed_atmol
0(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n10<rdkit.Chem.rdchem.Mol object at 0x7f1d8d1877b0>
117-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187990>
21-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187760>
32,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187a30>
42,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187940>
52-Deoxy-D-glucoseOCC1OC(O)CC(O)C1O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d1879e0>
62'-fluoro-5-methylarabinosyluracilCC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187ad0>
72-MethoxyestradiolCOc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187a80>
84-aminobenzoic acidNc1ccc(cc1)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187b20>
94-HydroxytamoxifenCCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc10<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187bc0>
105 fluorouracilFC1=CNC(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187b70>
115-AzacitidineNC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187c10>
125-BromouracilOCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187c60>
135-fluoro-2'-deoxyuridineOCC1OC(CC1O)N1C=C(F)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187cb0>
15AcadesineNC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187da0>
16AcarboseCC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...0<rdkit.Chem.rdchem.Mol object at 0x7f1d8d187d00>
\n", - "
" - ], - "text/plain": [ - " Names \\\n", - "0 (R)-Roscovitine \n", - "1 17-Methyltestosterone \n", - "2 1-alpha-Hydroxycholecalciferol \n", - "3 2,3-Dimercaptosuccinic acid \n", - "4 2,4,6-Trinitrotoluene \n", - "5 2-Deoxy-D-glucose \n", - "6 2'-fluoro-5-methylarabinosyluracil \n", - "7 2-Methoxyestradiol \n", - "8 4-aminobenzoic acid \n", - "9 4-Hydroxytamoxifen \n", - "10 5 fluorouracil \n", - "11 5-Azacitidine \n", - "12 5-Bromouracil \n", - "13 5-fluoro-2'-deoxyuridine \n", - "15 Acadesine \n", - "16 Acarbose \n", - "\n", - " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "5 OCC1OC(O)CC(O)C1O 0 \n", - "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", - "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", - "8 Nc1ccc(cc1)C(O)=O 0 \n", - "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", - "10 FC1=CNC(=O)NC1=O 0 \n", - "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", - "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", - "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", - "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", - "\n", - " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 " - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" + "ename": "AttributeError", + "evalue": "'NoneType' object has no attribute 'GetSubstructMatch'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m#dataset['mol'] = np.where(dataset['Failed_at']==0,dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol),None)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtaskNum\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwhere\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Failed_at'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'mol'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdetect_inorganic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;31m#work_dataset[taskNum] = work_dataset['mol'].apply(detect_inorganic)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/test/lib/python3.8/site-packages/pandas/core/series.py\u001b[0m in \u001b[0;36mapply\u001b[0;34m(self, func, convert_dtype, args, **kwds)\u001b[0m\n\u001b[1;32m 4133\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4134\u001b[0m \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_values\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4135\u001b[0;31m \u001b[0mmapped\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap_infer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvert\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mconvert_dtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4136\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4137\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmapped\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmapped\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSeries\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32mpandas/_libs/lib.pyx\u001b[0m in \u001b[0;36mpandas._libs.lib.map_infer\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m~/dev/opencadd/opencadd/compounds/standardization/detect_inorganic.py\u001b[0m in \u001b[0;36mdetect_inorganic\u001b[0;34m(mol, *args, **kwargs)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \"\"\"\n\u001b[0;32m---> 40\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mmol\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mGetSubstructMatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minorganic_elements\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 41\u001b[0m \u001b[0mlogging\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Structure contains a inorganic element\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'GetSubstructMatch'" + ] } ], "source": [ - "# We set up the stepNo and create a subset with only the entries which haven't failed yet.\n", - "stepNo = 2\n", - "work_dataset = dataset[(dataset['Failed_at']==0)]\n", - "work_dataset.head(16)" + "# Setting up the taskNum \n", + "taskNum = 2\n", + "\n", + "# Check for inorganic structures in the entries\n", + "#dataset['mol'] = np.where(dataset['Failed_at']==0,dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol),None)\n", + "\n", + "dataset[taskNum] = np.where(dataset['Failed_at']==0,dataset['mol'].apply(detect_inorganic),None)\n", + "\n", + "#work_dataset[taskNum] = work_dataset['mol'].apply(detect_inorganic)\n", + "#contains_inorganics = work_dataset[work_dataset[taskNum]== True]\n", + "#dataset['Failed_at'] = np.where(dataset['SMILEs'] == contains_inorganics[\"SMILEs\"],dataset['Failed_at'].apply(failMarker),dataset['Failed_at'] )\n", + "#dataset[dataset[taskNum] == True]\n", + "dataset.head" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'Failed_at'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m~/anaconda3/envs/test/lib/python3.8/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 3079\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3080\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3081\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'Failed_at'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Removal of inorganics and mixtures of the dataset\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdataset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Failed_at'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mdataset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Names\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"SMILEs\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"mol\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Inorganics'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'mol'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdetect_inorganic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/home/allen/dev/utility/data/test_dataset_bool_inorganic.csv'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/test/lib/python3.8/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3022\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3023\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3024\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3025\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3026\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/test/lib/python3.8/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 3080\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3081\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3082\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3083\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3084\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtolerance\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'Failed_at'" + ] + } + ], + "source": [ + "# Removal of inorganics and mixtures of the dataset\n", + "dataset = dataset[(dataset['Failed_at']==0)]\n", + "dataset = dataset[[\"Names\",\"SMILEs\",\"mol\"]]\n", + "dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", + "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_inorganic.csv', index = False)\n", + "contains_inorganics = dataset[dataset['Inorganics']== True]\n", + "contains_inorganics.head()\n", + "dataset = dataset[dataset['Inorganics']== False]\n", + "dataset = dataset[[\"Names\",\"SMILEs\",\"mol\"]]\n", + "dataset.head()" ] }, { @@ -708,22 +610,6 @@ "# `records_organics` is passed on in the pipeline\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Removal of inorganics and mixtures of the dataset\n", - "dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", - "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_inorganic.csv', index = False)\n", - "contains_inorganics = dataset[dataset['Inorganics']== True]\n", - "contains_inorganics.head()\n", - "dataset = dataset[dataset['Inorganics']== False]\n", - "dataset = dataset[[\"Names\",\"SMILEs\",\"mol\"]]\n", - "dataset.head()" - ] - }, { "cell_type": "code", "execution_count": null, From 225b4cba7c045a7f567f62117896ee1b8d492a87 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 7 Apr 2021 21:27:26 +0200 Subject: [PATCH 18/55] going back to what worked --- docs/tutorials/standardization.ipynb | 246 ++++++++++++--------------- 1 file changed, 112 insertions(+), 134 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index bd6145e7..6029c44b 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -36,7 +36,7 @@ "'/home/allen/dev/opencadd/docs/tutorials'" ] }, - "execution_count": 59, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -77,17 +77,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 0: Initial dataset import and cleaning\n", + "### Initial dataset import and cleaning of empty entries\n", "------------------------------------------------\n", "The first step before the standardization steps are started is a import of the dataset as an Pandas Dataframe, only including the columns necessary. In this case we use the IDs, Names and SMILEs column.
\n", "Then we search for all entries which actually don't have any strings saved under SMILEs and kick them from the dataset, since they are not holding any information.
\n", "After the import we add a Failed_at column to track in which standardization step the entry failed. \n", - "The intial `taskNum` will be 0, which leads to an default Failed_at-value of 0 for all entries. The Failed_at-value will be used to filter out all failed entries for the upcoming steps." + "The intial `taskNum` will be 0, which leads to an default Failed_at-value of 0 for all entries, where null stands for not failed . " ] }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -173,7 +173,7 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 " ] }, - "execution_count": 119, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -188,12 +188,15 @@ "dataset = dataset[['IDs','Names','SMILEs']]\n", "\n", "#Kick all empty entries\n", - "#dataset = dataset[(dataset['SMILEs'].notna())]\n", + "empty_smiles = dataset[(dataset['SMILEs'].isnull())] \n", + "# The empty_smiles dataframe could be used to check which entires are affected and review the dataset again.\n", + "dataset = dataset[(dataset['SMILEs'].notna())]\n", "\n", - "#Setting a initial score of 0 for all entries\n", - "dataset['Failed_at'] = dataset['SMILEs'].notna().apply(failMarker)\n", + "#Setting a initial score of 0 for all entries in the 'Failed_at'-column\n", + "dataset['Failed_at'] = dataset['SMILEs'].apply(failMarker)\n", "\n", - "#Show the current form of the dataframe\n", + "\n", + "#Show the current form of the main-dataframe\n", "dataset.head()" ] }, @@ -220,27 +223,19 @@ }, { "cell_type": "code", - "execution_count": 125, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", - "RDKit ERROR: \n", - "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", - "RDKit ERROR: \n", - "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", - "RDKit ERROR: \n", - "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", - "RDKit ERROR: \n", - "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", - "RDKit ERROR: \n", - "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", - "RDKit ERROR: \n", - "RDKit ERROR: [12:20:19] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", - "RDKit ERROR: \n" + ":6: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['mol'] = dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n" ] }, { @@ -278,7 +273,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c55b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d098120>\n", " \n", " \n", " 1\n", @@ -286,7 +281,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c3c1c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d0980d0>\n", " \n", " \n", " 2\n", @@ -294,7 +289,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c3c080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d098c10>\n", " \n", " \n", " 3\n", @@ -302,7 +297,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c3c350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d098170>\n", " \n", " \n", " 4\n", @@ -310,7 +305,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c3c300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d0982b0>\n", " \n", " \n", " 5\n", @@ -318,7 +313,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c7c0d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d098210>\n", " \n", " \n", " 6\n", @@ -326,7 +321,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35030>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d098030>\n", " \n", " \n", " 7\n", @@ -334,7 +329,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c355d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d0983a0>\n", " \n", " \n", " 8\n", @@ -342,7 +337,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c357b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d098d50>\n", " \n", " \n", " 9\n", @@ -350,7 +345,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35800>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d098490>\n", " \n", " \n", " 10\n", @@ -358,7 +353,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d098b20>\n", " \n", " \n", " 11\n", @@ -366,7 +361,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d084c60>\n", " \n", " \n", " 12\n", @@ -374,7 +369,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d084cb0>\n", " \n", " \n", " 13\n", @@ -382,15 +377,7 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35210>\n", - " \n", - " \n", - " 14\n", - " 15\n", - " 6-Mercaptopurine\n", - " Sc1ncnc2[nH]c[nH]c12\n", - " 1\n", - " None\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d047030>\n", " \n", " \n", " 15\n", @@ -398,7 +385,15 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f05e4c35990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d047580>\n", + " \n", + " \n", + " 16\n", + " 17\n", + " Acarbose\n", + " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc61d087120>\n", " \n", " \n", "\n", @@ -420,47 +415,47 @@ "11 12 5-Azacitidine \n", "12 13 5-Bromouracil \n", "13 14 5-fluoro-2'-deoxyuridine \n", - "14 15 6-Mercaptopurine \n", "15 16 Acadesine \n", + "16 17 Acarbose \n", "\n", - " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "5 OCC1OC(O)CC(O)C1O 0 \n", - "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", - "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", - "8 Nc1ccc(cc1)C(O)=O 0 \n", - "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", - "10 FC1=CNC(=O)NC1=O 0 \n", - "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", - "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", - "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", - "14 Sc1ncnc2[nH]c[nH]c12 1 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "5 OCC1OC(O)CC(O)C1O 0 \n", + "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", + "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", + "8 Nc1ccc(cc1)C(O)=O 0 \n", + "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", + "10 FC1=CNC(=O)NC1=O 0 \n", + "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", + "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", + "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "14 None \n", - "15 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 " ] }, - "execution_count": 125, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -471,12 +466,12 @@ "\n", "# A column called mol is beeing added to the dataframe to store the mol-files\n", "# The action is only applied to entries with a score of 0\n", - "dataset['mol'] = np.where(dataset['Failed_at']==0,dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol),None)\n", + "dataset['mol'] = dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", + "failed_step_1 = dataset[(dataset['mol'].isnull())]\n", + "failed_step_1['Failed_at'] = failed_step_1['SMILEs'].apply(failMarker)\n", "\n", - "# Checking for SMILEs, where no mol could be generated. Marking them with the failMarker\n", - "dataset['Failed_at'] = np.where(dataset['mol'].isnull(),dataset['Failed_at'].apply(failMarker),dataset['Failed_at'] )\n", - "\n", - "# See how the entry in row 14 has a Failed_at value of 1.\n", + "# Update the dataset by removing all entries without a mol\n", + "dataset = dataset[dataset['mol'].notna()]\n", "dataset.head(16)\n" ] }, @@ -501,24 +496,28 @@ }, { "cell_type": "code", - "execution_count": 127, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'GetSubstructMatch'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m#dataset['mol'] = np.where(dataset['Failed_at']==0,dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol),None)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtaskNum\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwhere\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Failed_at'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'mol'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdetect_inorganic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;31m#work_dataset[taskNum] = work_dataset['mol'].apply(detect_inorganic)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/test/lib/python3.8/site-packages/pandas/core/series.py\u001b[0m in \u001b[0;36mapply\u001b[0;34m(self, func, convert_dtype, args, **kwds)\u001b[0m\n\u001b[1;32m 4133\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4134\u001b[0m \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_values\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4135\u001b[0;31m \u001b[0mmapped\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap_infer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvert\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mconvert_dtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4136\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4137\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmapped\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmapped\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSeries\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32mpandas/_libs/lib.pyx\u001b[0m in \u001b[0;36mpandas._libs.lib.map_infer\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32m~/dev/opencadd/opencadd/compounds/standardization/detect_inorganic.py\u001b[0m in \u001b[0;36mdetect_inorganic\u001b[0;34m(mol, *args, **kwargs)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \"\"\"\n\u001b[0;32m---> 40\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mmol\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mGetSubstructMatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minorganic_elements\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 41\u001b[0m \u001b[0mlogging\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Structure contains a inorganic element\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'GetSubstructMatch'" - ] - } - ], + "outputs": [], + "source": [ + "taskNum = 2\n", + "from pandas import DataFrame\n", + "\n", + "\n", + "df = DataFrame(dataset, columns =['Failed_at'])\n", + " \n", + "df['test'] = df['Failed_at'].apply(lambda x: 'True' if x <= 0 else 'False')\n", + " \n", + "df.head(16)\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Setting up the taskNum \n", "taskNum = 2\n", @@ -526,42 +525,21 @@ "# Check for inorganic structures in the entries\n", "#dataset['mol'] = np.where(dataset['Failed_at']==0,dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol),None)\n", "\n", - "dataset[taskNum] = np.where(dataset['Failed_at']==0,dataset['mol'].apply(detect_inorganic),None)\n", - "\n", + "#dataset['test'] = np.where(dataset['Failed_at']==1,\"Nothing\",dataset['mol'].apply(detect_inorganic))\n", + "test = dataset.groupby(by=['Failed_at'])\n", + "#test_frame = np.where(dataset['Failed_at']==1)\n", "#work_dataset[taskNum] = work_dataset['mol'].apply(detect_inorganic)\n", "#contains_inorganics = work_dataset[work_dataset[taskNum]== True]\n", "#dataset['Failed_at'] = np.where(dataset['SMILEs'] == contains_inorganics[\"SMILEs\"],dataset['Failed_at'].apply(failMarker),dataset['Failed_at'] )\n", "#dataset[dataset[taskNum] == True]\n", - "dataset.head" + "test.head()" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "KeyError", - "evalue": "'Failed_at'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/anaconda3/envs/test/lib/python3.8/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 3079\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3080\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3081\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'Failed_at'", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Removal of inorganics and mixtures of the dataset\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdataset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Failed_at'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mdataset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Names\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"SMILEs\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"mol\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Inorganics'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'mol'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdetect_inorganic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/home/allen/dev/utility/data/test_dataset_bool_inorganic.csv'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/test/lib/python3.8/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3022\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3023\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3024\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3025\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3026\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/test/lib/python3.8/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 3080\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3081\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3082\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3083\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3084\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtolerance\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'Failed_at'" - ] - } - ], + "outputs": [], "source": [ "# Removal of inorganics and mixtures of the dataset\n", "dataset = dataset[(dataset['Failed_at']==0)]\n", From aa03e05df2f15beed089ee55e711c0a4a884dd38 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Thu, 8 Apr 2021 11:53:33 +0200 Subject: [PATCH 19/55] adjusted subsets and steps --- docs/tutorials/standardization.ipynb | 3208 +++++++++++++++++++++++--- 1 file changed, 2934 insertions(+), 274 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 6029c44b..fad143f1 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -36,7 +36,7 @@ "'/home/allen/dev/opencadd/docs/tutorials'" ] }, - "execution_count": 1, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 70, "metadata": {}, "outputs": [], "source": [ @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 71, "metadata": {}, "outputs": [], "source": [ @@ -87,7 +87,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -173,7 +173,7 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 " ] }, - "execution_count": 18, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -223,19 +223,33 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 87, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":6: SettingWithCopyWarning: \n", + "RDKit ERROR: [10:59:14] WARNING: Omitted undefined [11:00:01] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: \n", + "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: \n", + "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: \n", + "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: \n", + "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: \n", + "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: \n", + "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: \n", + ":9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['mol'] = dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n" + " failed_step_1['Failed_at'] = failed_step_1['Failed_at'].apply(failMarker)\n" ] }, { @@ -268,132 +282,1656 @@ " \n", " \n", " \n", - " 0\n", - " 1\n", - " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " 185\n", + " 186\n", + " Chlorpromazine\n", + " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f43810cd990>\n", + " \n", + " \n", + " 186\n", + " 187\n", + " Chlorpropamide\n", + " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050b20>\n", + " \n", + " \n", + " 187\n", + " 188\n", + " Chlortetracycline\n", + " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050b70>\n", + " \n", + " \n", + " 188\n", + " 189\n", + " Chlorzoxazone\n", + " Oc1nc2cc(Cl)ccc2o1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050bc0>\n", + " \n", + " \n", + " 189\n", + " 190\n", + " Cholestyramine\n", + " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050c10>\n", + " \n", + " \n", + " 190\n", + " 191\n", + " Chondroitin sulfate\n", + " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050c60>\n", + " \n", + " \n", + " 191\n", + " 192\n", + " Cidofovir\n", + " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050cb0>\n", + " \n", + " \n", + " 192\n", + " 193\n", + " Cimetidine\n", + " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050d00>\n", + " \n", + " \n", + " 193\n", + " 194\n", + " Cinchophen\n", + " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050d50>\n", + " \n", + " \n", + " 194\n", + " 195\n", + " Cinoxacin\n", + " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050da0>\n", + " \n", + " \n", + " 195\n", + " 196\n", + " Ciprofibrate\n", + " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050df0>\n", + " \n", + " \n", + " 196\n", + " 197\n", + " Ciprofloxacin\n", + " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050e40>\n", + " \n", + " \n", + " 197\n", + " 198\n", + " Cisapride\n", + " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050e90>\n", + " \n", + " \n", + " 198\n", + " 199\n", + " Citalopram\n", + " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050ee0>\n", + " \n", + " \n", + " 199\n", + " 200\n", + " Citric acid\n", + " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050f30>\n", + " \n", + " \n", + " 200\n", + " 201\n", + " zirconium\n", + " CCO[Zr](OCC)(OCC)OCC\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4381050f80>\n", + " \n", + " \n", + "\n", + "" + ], + "text/plain": [ + " IDs Names \\\n", + "185 186 Chlorpromazine \n", + "186 187 Chlorpropamide \n", + "187 188 Chlortetracycline \n", + "188 189 Chlorzoxazone \n", + "189 190 Cholestyramine \n", + "190 191 Chondroitin sulfate \n", + "191 192 Cidofovir \n", + "192 193 Cimetidine \n", + "193 194 Cinchophen \n", + "194 195 Cinoxacin \n", + "195 196 Ciprofibrate \n", + "196 197 Ciprofloxacin \n", + "197 198 Cisapride \n", + "198 199 Citalopram \n", + "199 200 Citric acid \n", + "200 201 zirconium \n", + "\n", + " SMILEs Failed_at \\\n", + "185 CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12 0 \n", + "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", + "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", + "188 Oc1nc2cc(Cl)ccc2o1 0 \n", + "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", + "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", + "191 NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1 0 \n", + "192 CN=C(NCCSCc1nc[nH]c1C)NC#N 0 \n", + "193 OC(=O)c1cc(nc2ccccc12)-c1ccccc1 0 \n", + "194 CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 0 \n", + "195 CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O 0 \n", + "196 OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O 0 \n", + "197 COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... 0 \n", + "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", + "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", + "200 CCO[Zr](OCC)(OCC)OCC 0 \n", + "\n", + " mol \n", + "185 \n", + "186 \n", + "187 \n", + "188 \n", + "189 \n", + "190 \n", + "191 \n", + "192 \n", + "193 \n", + "194 \n", + "195 \n", + "196 \n", + "197 \n", + "198 \n", + "199 \n", + "200 " + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setting up the taskNum\n", + "taskNum = 1\n", + "\n", + "# A column called mol is beeing added to the dataframe to store the mol-files\n", + "dataset['mol'] = dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", + "\n", + "# All entries which couldn't generate a mol will get filtered another dataframe\n", + "failed_step_1 = dataset[(dataset['mol'].isnull())]\n", + "failed_step_1['Failed_at'] = failed_step_1['Failed_at'].apply(failMarker)\n", + "failed_step_1 = failed_step_1[['IDs','Names','SMILEs','Failed_at']]\n", + "\n", + "# Update the dataset by removing all entries without a mol\n", + "result1 = dataset[dataset['mol'].notna()]\n", + "result1.tail(16)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Removal of Inorganics and Mixtures\n", + "--------------------------------------------------\n", + "\n", + "Since molecular descriptors can only be computed for organic compunds, all inorganic compunds must be removed before the descriptors are calculated. (Chapter 2.1. Fourches 2010)\n", + "\n", + "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of \"True\" when it finds a inorganic molecule. We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", + "\"Inorganic compounds are known to have biological effects, like for example toxic effects.\"(Chapter 2.1. Fourches 2010)(fix citation)\n", + " Due to their potential bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", + "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", + "\n", + "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself.\n", + "\n", + "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":11: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolInorganics
185186ChlorpromazineCN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc120<rdkit.Chem.rdchem.Mol object at 0x7f4381137210>False
186187ChlorpropamideCCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc10<rdkit.Chem.rdchem.Mol object at 0x7f4381137260>False
187188ChlortetracyclineCN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...0<rdkit.Chem.rdchem.Mol object at 0x7f43811372b0>False
188189ChlorzoxazoneOc1nc2cc(Cl)ccc2o10<rdkit.Chem.rdchem.Mol object at 0x7f4381137300>False
189190CholestyramineCC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...0<rdkit.Chem.rdchem.Mol object at 0x7f4381137350>False
190191Chondroitin sulfateCC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...0<rdkit.Chem.rdchem.Mol object at 0x7f43811373a0>False
191192CidofovirNC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C10<rdkit.Chem.rdchem.Mol object at 0x7f43811373f0>False
192193CimetidineCN=C(NCCSCc1nc[nH]c1C)NC#N0<rdkit.Chem.rdchem.Mol object at 0x7f4381137440>False
193194CinchophenOC(=O)c1cc(nc2ccccc12)-c1ccccc10<rdkit.Chem.rdchem.Mol object at 0x7f4381137490>False
194195CinoxacinCCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc120<rdkit.Chem.rdchem.Mol object at 0x7f43811374e0>False
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f4381137530>False
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7f4381137580>False
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0<rdkit.Chem.rdchem.Mol object at 0x7f43811375d0>False
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10<rdkit.Chem.rdchem.Mol object at 0x7f4381137620>False
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f4381137670>False
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "185 186 Chlorpromazine \n", + "186 187 Chlorpropamide \n", + "187 188 Chlortetracycline \n", + "188 189 Chlorzoxazone \n", + "189 190 Cholestyramine \n", + "190 191 Chondroitin sulfate \n", + "191 192 Cidofovir \n", + "192 193 Cimetidine \n", + "193 194 Cinchophen \n", + "194 195 Cinoxacin \n", + "195 196 Ciprofibrate \n", + "196 197 Ciprofloxacin \n", + "197 198 Cisapride \n", + "198 199 Citalopram \n", + "199 200 Citric acid \n", + "\n", + " SMILEs Failed_at \\\n", + "185 CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12 0 \n", + "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", + "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", + "188 Oc1nc2cc(Cl)ccc2o1 0 \n", + "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", + "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", + "191 NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1 0 \n", + "192 CN=C(NCCSCc1nc[nH]c1C)NC#N 0 \n", + "193 OC(=O)c1cc(nc2ccccc12)-c1ccccc1 0 \n", + "194 CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 0 \n", + "195 CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O 0 \n", + "196 OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O 0 \n", + "197 COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... 0 \n", + "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", + "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", + "\n", + " mol Inorganics \n", + "185 False \n", + "186 False \n", + "187 False \n", + "188 False \n", + "189 False \n", + "190 False \n", + "191 False \n", + "192 False \n", + "193 False \n", + "194 False \n", + "195 False \n", + "196 False \n", + "197 False \n", + "198 False \n", + "199 False " + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setting up the taskNum \n", + "taskNum = 2\n", + "# getting the valid entries from the step before\n", + "dataset = result1\n", + "\n", + "# Check for inorganic structures in the entries\n", + "dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", + "\n", + "# Filter the failed entries\n", + "failed_step_2 = dataset[dataset['Inorganics']== True]\n", + "failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n", + "\n", + "result2 = dataset[dataset['Inorganics']== False]\n", + "result2.tail(15)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Removal of mixtures, inorganics (and eventually organometallics)\n", + "# Functions detect_inorganic,remove_fragments, disconnect_metals, detect_inorganic again" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit WARNING: [11:01:16] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Charges were rearranged\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit INFO: [1 MetalDisconnector\n", + "RDKit INFO: [11:01:16] Running MetalDisconnector\n", + "RDKit INFO: [11:01:16] Initializing MetalDisconnector\n", + "RDKit INFO: [11:01:16] Running MetalDisconnector\n", + "RDKit INFO: [11:01:16] Initializing MetalDisconnector\n", + "RDKit INFO: [11:01:16] Running MetalDisconnector\n", + "RDKit INFO: [11:01:16] Initializing MetalDisconnector\n", + "RDKit INFO: [11:01:16] Running MetalDisconnector\n", + "RDKit INFO: [11:01:16] Initializing MetalDisconnector\n", + "RDKit INFO: [11:01:16] Running MetalDisconnector\n", + "RDKit INFO: [11:01:16] Removed covalent bond between Zr and O\n", + "RDKit INFO: [11:01:16] Removed covalent bond between Zr and O\n", + "RDKit INFO: [11:01:16] Removed covalent bond between Zr and O\n", + "RDKit INFO: [11:01:16] Removed covalent bond between Zr and O\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Removed fragment: 1,4-dioxane\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit WARNING: [11:09:03] Running1:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Charges were rearranged\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":26: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
IDsNamesSMILEsFailed_atmolInorganicsInchI_beforemol_afterInchI_afternoChanges_inchismiles_beforeSmiles 3noChanges
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C0<rdkit.Chem.rdchem.Mol object at 0x7f43810f6030>FalseInChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5...<rdkit.Chem.rdchem.Mol object at 0x7f438107f350>InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5...TrueCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OTrue
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C0<rdkit.Chem.rdchem.Mol object at 0x7f43810f6120>FalseInChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-...<rdkit.Chem.rdchem.Mol object at 0x7f43810b35d0>InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-...TrueC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OTrue
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810def80>FalseInChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9...<rdkit.Chem.rdchem.Mol object at 0x7f43810b32b0>InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9...TrueO=C(O)C(S)C(S)C(=O)OO=C(O)C(S)C(S)C(=O)OTrue
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810def30>FalseInChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3...<rdkit.Chem.rdchem.Mol object at 0x7f4381015620>InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3...TrueCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]True
672'-fluoro-5-methylarabinosyluracilCC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810dee90>FalseInChI=1S/C10H13FN2O5/c1-4-2-13(10(17)12-8(4)16...<rdkit.Chem.rdchem.Mol object at 0x7f4381015120>InChI=1S/C10H13FN2O5/c1-4-2-13(10(17)12-8(4)16...TrueCc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=OCc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=OTrue
782-MethoxyestradiolCOc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O0<rdkit.Chem.rdchem.Mol object at 0x7f43810dedf0>FalseInChI=1S/C19H26O3/c1-19-8-7-12-13(15(19)5-6-18...<rdkit.Chem.rdchem.Mol object at 0x7f4381015210>InChI=1S/C19H26O3/c1-19-8-7-12-13(15(19)5-6-18...TrueCOc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12True
894-aminobenzoic acidNc1ccc(cc1)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810dee40>FalseInChI=1S/C7H7NO2/c8-6-3-1-5(2-4-6)7(9)10/h1-4H...<rdkit.Chem.rdchem.Mol object at 0x7f4381015030>InChI=1S/C7H7NO2/c8-6-3-1-5(2-4-6)7(9)10/h1-4H...TrueNc1ccc(C(=O)O)cc1Nc1ccc(C(=O)O)cc1True
9104-HydroxytamoxifenCCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc10<rdkit.Chem.rdchem.Mol object at 0x7f43810deda0>FalseInChI=1S/C26H29NO2/c1-4-25(20-8-6-5-7-9-20)26(...<rdkit.Chem.rdchem.Mol object at 0x7f4381015080>InChI=1S/C26H29NO2/c1-4-25(20-8-6-5-7-9-20)26(...TrueCCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1True
10115 fluorouracilFC1=CNC(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810ded50>FalseInChI=1S/C4H3FN2O2/c5-2-1-6-4(9)7-3(2)8/h1H,(H...<rdkit.Chem.rdchem.Mol object at 0x7f4381015170>InChI=1S/C4H3FN2O2/c5-2-1-6-4(9)7-3(2)8/h1H,(H...TrueO=c1[nH]cc(F)c(=O)[nH]1O=c1[nH]cc(F)c(=O)[nH]1True
11125-AzacitidineNC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O0<rdkit.Chem.rdchem.Mol object at 0x7f43810de710>FalseInChI=1S/C8H12N4O5/c9-7-10-2-12(8(16)11-7)6-5(...<rdkit.Chem.rdchem.Mol object at 0x7f4381015490>InChI=1S/C8H12N4O5/c9-7-10-2-12(8(16)11-7)6-5(...TrueNc1ncn(C2OC(CO)C(O)C2O)c(=O)n1Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1True
12135-BromouracilOCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810ded00>FalseInChI=1S/C9H11BrN2O5/c10-4-2-12(9(16)11-8(4)15...<rdkit.Chem.rdchem.Mol object at 0x7f43810151c0>InChI=1S/C9H11BrN2O5/c10-4-2-12(9(16)11-8(4)15...TrueO=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1BrO=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1BrTrue
13145-fluoro-2'-deoxyuridineOCC1OC(CC1O)N1C=C(F)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810decb0>FalseInChI=1S/C9H11FN2O5/c10-4-2-12(9(16)11-8(4)15)...<rdkit.Chem.rdchem.Mol object at 0x7f43810154e0>InChI=1S/C9H11FN2O5/c10-4-2-12(9(16)11-8(4)15)...TrueO=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1FO=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1FTrue
1516AcadesineNC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N0<rdkit.Chem.rdchem.Mol object at 0x7f43810dec10>FalseInChI=1S/C9H14N4O5/c10-7-4(8(11)17)12-2-13(7)9...<rdkit.Chem.rdchem.Mol object at 0x7f43810155d0>InChI=1S/C9H14N4O5/c10-7-4(8(11)17)12-2-13(7)9...TrueNC(=O)c1ncn(C2OC(CO)C(O)C2O)c1NNC(=O)c1ncn(C2OC(CO)C(O)C2O)c1NTrue
1617AcarboseCC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...0<rdkit.Chem.rdchem.Mol object at 0x7f43810dec60>FalseInChI=1S/C25H43NO18/c1-6-11(26-8-2-7(3-27)12(3...<rdkit.Chem.rdchem.Mol object at 0x7f4381015760>InChI=1S/C25H43NO18/c1-6-11(26-8-2-7(3-27)12(3...TrueCC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...True
1718AcebutololCCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810debc0>FalseInChI=1S/C18H28N2O4/c1-5-6-18(23)20-14-7-8-17(...<rdkit.Chem.rdchem.Mol object at 0x7f43810157b0>InChI=1S/C18H28N2O4/c1-5-6-18(23)20-14-7-8-17(...TrueCCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1True
1819AcenocoumarolCC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810deb70>FalseInChI=1S/C19H15NO6/c1-11(21)10-15(12-6-8-13(9-...<rdkit.Chem.rdchem.Mol object at 0x7f4381015800>InChI=1S/C19H15NO6/c1-11(21)10-15(12-6-8-13(9-...TrueCC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...True
1920AcetamideCC(N)=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810deb20>FalseInChI=1S/C2H5NO/c1-2(3)4/h1H3,(H2,3,4)<rdkit.Chem.rdchem.Mol object at 0x7f4381015850>InChI=1S/C2H5NO/c1-2(3)4/h1H3,(H2,3,4)TrueCC(N)=OCC(N)=OTrue
2021AcetaminophenCC(=O)Nc1ccc(O)cc10<rdkit.Chem.rdchem.Mol object at 0x7f43810dead0>FalseInChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2...<rdkit.Chem.rdchem.Mol object at 0x7f43810158a0>InChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2...TrueCC(=O)Nc1ccc(O)cc1CC(=O)Nc1ccc(O)cc1True
2122AcetazolamideCC(=O)Nc1nnc(s1)S(N)(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810dea30>FalseInChI=1S/C4H6N4O3S2/c1-2(9)6-3-7-8-4(12-3)13(5...<rdkit.Chem.rdchem.Mol object at 0x7f43810158f0>InChI=1S/C4H6N4O3S2/c1-2(9)6-3-7-8-4(12-3)13(5...TrueCC(=O)Nc1nnc(S(N)(=O)=O)s1CC(=O)Nc1nnc(S(N)(=O)=O)s1True
2223Acetic acidCC(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810de990>FalseInChI=1S/C2H4O2/c1-2(3)4/h1H3,(H,3,4)<rdkit.Chem.rdchem.Mol object at 0x7f4381015940>InChI=1S/C2H4O2/c1-2(3)4/h1H3,(H,3,4)TrueCC(=O)OCC(=O)OTrue
2324AcetohexamideCC(=O)c1ccc(cc1)S(=O)(=O)NC(=O)NC1CCCCC10<rdkit.Chem.rdchem.Mol object at 0x7f43810dea80>FalseInChI=1S/C15H20N2O4S/c1-11(18)12-7-9-14(10-8-1...<rdkit.Chem.rdchem.Mol object at 0x7f4381015990>InChI=1S/C15H20N2O4S/c1-11(18)12-7-9-14(10-8-1...TrueCC(=O)c1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1CC(=O)c1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1True
2425Acetohydroxamic acidCC(=O)NO0<rdkit.Chem.rdchem.Mol object at 0x7f43810de9e0>FalseInChI=1S/C2H5NO2/c1-2(4)3-5/h5H,1H3,(H,3,4)<rdkit.Chem.rdchem.Mol object at 0x7f43810159e0>InChI=1S/C2H5NO2/c1-2(4)3-5/h5H,1H3,(H,3,4)TrueCC(=O)NOCC(=O)NOTrue
2526Acetrizoate SodiumCC(=O)Nc1c(I)cc(I)c(C(O)=O)c1I0<rdkit.Chem.rdchem.Mol object at 0x7f43810de940>FalseInChI=1S/C9H6I3NO3/c1-3(14)13-8-5(11)2-4(10)6(...<rdkit.Chem.rdchem.Mol object at 0x7f4381015a30>InChI=1S/C9H6I3NO3/c1-3(14)13-8-5(11)2-4(10)6(...TrueCC(=O)Nc1c(I)cc(I)c(C(=O)O)c1ICC(=O)Nc1c(I)cc(I)c(C(=O)O)c1ITrue
2627AcetylcholineCC(=O)OCC[N+](C)(C)C0<rdkit.Chem.rdchem.Mol object at 0x7f43810de8f0>FalseInChI=1S/C7H16NO2/c1-7(9)10-6-5-8(2,3)4/h5-6H2...<rdkit.Chem.rdchem.Mol object at 0x7f4381015a80>InChI=1S/C7H16NO2/c1-7(9)10-6-5-8(2,3)4/h5-6H2...TrueCC(=O)OCC[N+](C)(C)CCC(=O)OCC[N+](C)(C)CTrue
2728AcetylcysteineCC(=O)NC(CS)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f43810de8a0>FalseInChI=1S/C5H9NO3S/c1-3(7)6-4(2-10)5(8)9/h4,10H...<rdkit.Chem.rdchem.Mol object at 0x7f4381015ad0>InChI=1S/C5H9NO3S/c1-3(7)6-4(2-10)5(8)9/h4,10H...TrueCC(=O)NC(CS)C(=O)OCC(=O)NC(CS)C(=O)OTrue
2829Acetyl-L-carnitineCC(=O)OC(CC(O)=O)C[N+](C)(C)C0<rdkit.Chem.rdchem.Mol object at 0x7f43810de850>FalseInChI=1S/C9H17NO4/c1-7(11)14-8(5-9(12)13)6-10(...<rdkit.Chem.rdchem.Mol object at 0x7f4381015b20>InChI=1S/C9H17NO4/c1-7(11)14-8(5-9(12)13)6-10(...TrueCC(=O)OC(CC(=O)O)C[N+](C)(C)CCC(=O)OC(CC(=O)O)C[N+](C)(C)CTrue
2930Acetylsalicylic acidCC(=O)Oc1ccccc1C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fc61d098120><rdkit.Chem.rdchem.Mol object at 0x7f43810de800>FalseInChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)...<rdkit.Chem.rdchem.Mol object at 0x7f4381015b70>InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)...TrueCC(=O)Oc1ccccc1C(=O)OCC(=O)Oc1ccccc1C(=O)OTrue
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C3031AcitretinCOc1cc(C)c(C=CC(C)=CC=CC(C)=CC(O)=O)c(C)c1C0<rdkit.Chem.rdchem.Mol object at 0x7fc61d0980d0><rdkit.Chem.rdchem.Mol object at 0x7f43810de760>FalseInChI=1S/C21H26O3/c1-14(8-7-9-15(2)12-21(22)23...<rdkit.Chem.rdchem.Mol object at 0x7f4381015bc0>InChI=1S/C21H26O3/c1-14(8-7-9-15(2)12-21(22)23...TrueCOc1cc(C)c(C=CC(C)=CC=CC(C)=CC(=O)O)c(C)c1CCOc1cc(C)c(C=CC(C)=CC=CC(C)=CC(=O)O)c(C)c1CTrue
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C3132AcyclovirNC1=NC(=O)c2ncn(COCCO)c2N10<rdkit.Chem.rdchem.Mol object at 0x7fc61d098c10><rdkit.Chem.rdchem.Mol object at 0x7f43810de6c0>FalseInChI=1S/C8H11N5O3/c9-8-11-6-5(7(15)12-8)10-3-...<rdkit.Chem.rdchem.Mol object at 0x7f4381015c10>InChI=1S/C8H11N5O3/c9-8-11-6-5(7(15)12-8)10-3-...TrueNc1nc(=O)c2ncn(COCCO)c2[nH]1Nc1nc(=O)c2ncn(COCCO)c2[nH]1True
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O3233Adefovir dipivoxilCC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc12)OCO...0<rdkit.Chem.rdchem.Mol object at 0x7fc61d098170><rdkit.Chem.rdchem.Mol object at 0x7f43810de670>FalseInChI=1S/C20H32N5O8P/c1-19(2,3)17(26)30-11-32-...<rdkit.Chem.rdchem.Mol object at 0x7f4381015c60>InChI=1S/C20H32N5O8P/c1-19(2,3)17(26)30-11-32-...TrueCC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...True
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O3334AdenineNc1ncnc2[nH]cnc120<rdkit.Chem.rdchem.Mol object at 0x7fc61d0982b0><rdkit.Chem.rdchem.Mol object at 0x7f43810de7b0>FalseInChI=1S/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2...<rdkit.Chem.rdchem.Mol object at 0x7f4381015cb0>InChI=1S/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2...TrueNc1ncnc2[nH]cnc12Nc1ncnc2[nH]cnc12True
562-Deoxy-D-glucoseOCC1OC(O)CC(O)C1O3435Adenosinen2c1c(ncnc1n(c2)[C@@H]3O[C@@H]([C@@H](O)[C@H]3...0<rdkit.Chem.rdchem.Mol object at 0x7fc61d098210><rdkit.Chem.rdchem.Mol object at 0x7f43810de5d0>FalseInChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-1...<rdkit.Chem.rdchem.Mol object at 0x7f4381015d00>InChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-1...TrueNc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1ONc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1OTrue
672'-fluoro-5-methylarabinosyluracilCC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O3536Adenosine triphosphateNc1ncnc2n(cnc12)C1OC(COP(O)(=O)OP(O)(=O)OP(O)(...0<rdkit.Chem.rdchem.Mol object at 0x7fc61d098030><rdkit.Chem.rdchem.Mol object at 0x7f43810de580>FalseInChI=1S/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(...<rdkit.Chem.rdchem.Mol object at 0x7f4381015d50>InChI=1S/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(...TrueNc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...True
782-MethoxyestradiolCOc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O3637AETNCCSC(N)=N0<rdkit.Chem.rdchem.Mol object at 0x7fc61d0983a0><rdkit.Chem.rdchem.Mol object at 0x7f43810de530>FalseInChI=1S/C3H9N3S/c4-1-2-7-3(5)6/h1-2,4H2,(H3,5,6)<rdkit.Chem.rdchem.Mol object at 0x7f4381015da0>InChI=1S/C3H9N3S/c4-1-2-7-3(5)6/h1-2,4H2,(H3,5,6)TrueN=C(N)SCCNN=C(N)SCCNTrue
894-aminobenzoic acidNc1ccc(cc1)C(O)=O3738AjmalineCCC1C2CC3C4N(C)c5ccccc5C44CC(C2C4O)N3C1O0<rdkit.Chem.rdchem.Mol object at 0x7fc61d098d50><rdkit.Chem.rdchem.Mol object at 0x7f43810de4e0>FalseInChI=1S/C20H26N2O2/c1-3-10-11-8-14-17-20(12-6...<rdkit.Chem.rdchem.Mol object at 0x7f4381015df0>InChI=1S/C20H26N2O2/c1-3-10-11-8-14-17-20(12-6...TrueCCC1C2CC3C4N(C)c5ccccc5C45CC(C2C5O)N3C1OCCC1C2CC3C4N(C)c5ccccc5C45CC(C2C5O)N3C1OTrue
9104-HydroxytamoxifenCCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc13839AlanosineNC(CN(O)N=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fc61d098490><rdkit.Chem.rdchem.Mol object at 0x7f43810de490>FalseInChI=1S/C3H7N3O4/c4-2(3(7)8)1-6(10)5-9/h2,10H...<rdkit.Chem.rdchem.Mol object at 0x7f4381015e40>InChI=1S/C3H7N3O4/c4-2(3(7)8)1-6(10)5-9/h2,10H...TrueNC(CN(O)N=O)C(=O)ONC(CN(O)N=O)C(=O)OTrue
10115 fluorouracilFC1=CNC(=O)NC1=O3940Alatrofloxacin mesylateCC(N)C(=O)NC(C)C(=O)NC1C2CN(CC12)c1nc2N(C=C(C(...0<rdkit.Chem.rdchem.Mol object at 0x7fc61d098b20><rdkit.Chem.rdchem.Mol object at 0x7f43810de440>FalseInChI=1S/C26H25F3N6O5/c1-10(30)24(37)31-11(2)2...<rdkit.Chem.rdchem.Mol object at 0x7f4381015e90>InChI=1S/C26H25F3N6O5/c1-10(30)24(37)31-11(2)2...TrueCC(N)C(=O)NC(C)C(=O)NC1C2CN(c3nc4c(cc3F)c(=O)c...CC(N)C(=O)NC(C)C(=O)NC1C2CN(c3nc4c(cc3F)c(=O)c...True
11125-AzacitidineNC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O4041AlbendazoleCCCSc1ccc2nc(NC(=O)OC)[nH]c2c10<rdkit.Chem.rdchem.Mol object at 0x7fc61d084c60><rdkit.Chem.rdchem.Mol object at 0x7f43810de3f0>FalseInChI=1S/C12H15N3O2S/c1-3-6-18-8-4-5-9-10(7-8)...<rdkit.Chem.rdchem.Mol object at 0x7f4381015ee0>InChI=1S/C12H15N3O2S/c1-3-6-18-8-4-5-9-10(7-8)...TrueCCCSc1ccc2nc(NC(=O)OC)[nH]c2c1CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1True
12135-BromouracilOCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O4243AlitretinoinCC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fc61d084cb0><rdkit.Chem.rdchem.Mol object at 0x7f43810de3a0>FalseInChI=1S/C20H28O2/c1-15(8-6-9-16(2)14-19(21)22...<rdkit.Chem.rdchem.Mol object at 0x7f4381015f30>InChI=1S/C20H28O2/c1-15(8-6-9-16(2)14-19(21)22...TrueCC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)OCC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)OTrue
13145-fluoro-2'-deoxyuridineOCC1OC(CC1O)N1C=C(F)C(=O)NC1=O4344AllantoinNC(=O)NC1NC(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7fc61d047030><rdkit.Chem.rdchem.Mol object at 0x7f43810de350>FalseInChI=1S/C4H6N4O3/c5-3(10)6-1-2(9)8-4(11)7-1/h...<rdkit.Chem.rdchem.Mol object at 0x7f4381015f80>InChI=1S/C4H6N4O3/c5-3(10)6-1-2(9)8-4(11)7-1/h...TrueNC(=O)NC1NC(=O)NC1=ONC(=O)NC1NC(=O)NC1=OTrue
1516AcadesineNC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N4445AllobarbitalC=CCC1(CC=C)C(=O)NC(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7fc61d047580><rdkit.Chem.rdchem.Mol object at 0x7f43810de300>FalseInChI=1S/C10H12N2O3/c1-3-5-10(6-4-2)7(13)11-9(...<rdkit.Chem.rdchem.Mol object at 0x7f4381081030>InChI=1S/C10H12N2O3/c1-3-5-10(6-4-2)7(13)11-9(...TrueC=CCC1(CC=C)C(=O)NC(=O)NC1=OC=CCC1(CC=C)C(=O)NC(=O)NC1=OTrue
1617AcarboseCC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...4546AllopurinolO=C1N=CNc2cn[nH]c120<rdkit.Chem.rdchem.Mol object at 0x7f43810de2b0>FalseInChI=1S/C5H4N4O/c10-5-4-3(1-8-9-4)6-2-7-5/h1-...<rdkit.Chem.rdchem.Mol object at 0x7f4381081080>InChI=1S/C5H4N4O/c10-5-4-3(1-8-9-4)6-2-7-5/h1-...TrueO=c1nc[nH]c2cn[nH]c12O=c1nc[nH]c2cn[nH]c12True
4647Alpha-tocopherol acetateCC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(OC(C)=O)c...0<rdkit.Chem.rdchem.Mol object at 0x7f43810de260>FalseInChI=1S/C31H52O3/c1-21(2)13-10-14-22(3)15-11-...<rdkit.Chem.rdchem.Mol object at 0x7f43810810d0>InChI=1S/C31H52O3/c1-21(2)13-10-14-22(3)15-11-...TrueCC(=O)Oc1c(C)c(C)c2c(c1C)CCC(C)(CCCC(C)CCCC(C)...CC(=O)Oc1c(C)c(C)c2c(c1C)CCC(C)(CCCC(C)CCCC(C)...True
4748AlverineCCN(CCCc1ccccc1)CCCc1ccccc10<rdkit.Chem.rdchem.Mol object at 0x7f43810de210>FalseInChI=1S/C20H27N/c1-2-21(17-9-15-19-11-5-3-6-1...<rdkit.Chem.rdchem.Mol object at 0x7f4381081120>InChI=1S/C20H27N/c1-2-21(17-9-15-19-11-5-3-6-1...TrueCCN(CCCc1ccccc1)CCCc1ccccc1CCN(CCCc1ccccc1)CCCc1ccccc1True
4849AmantadineNC12CC3CC(CC(C3)C1)C20<rdkit.Chem.rdchem.Mol object at 0x7f43810de030>FalseInChI=1S/C10H17N/c11-10-4-7-1-8(5-10)3-9(2-7)6...<rdkit.Chem.rdchem.Mol object at 0x7f4381081170>InChI=1S/C10H17N/c11-10-4-7-1-8(5-10)3-9(2-7)6...TrueNC12CC3CC(CC(C3)C1)C2NC12CC3CC(CC(C3)C1)C2True
4950ambrisentanCOC(C(Oc1nc(C)cc(C)n1)C(O)=O)(c1ccccc1)c1ccccc10<rdkit.Chem.rdchem.Mol object at 0x7f43810de1c0>FalseInChI=1S/C22H22N2O4/c1-15-14-16(2)24-21(23-15)...<rdkit.Chem.rdchem.Mol object at 0x7f43810811c0>InChI=1S/C22H22N2O4/c1-15-14-16(2)24-21(23-15)...TrueCOC(c1ccccc1)(c1ccccc1)C(Oc1nc(C)cc(C)n1)C(=O)OCOC(c1ccccc1)(c1ccccc1)C(Oc1nc(C)cc(C)n1)C(=O)OTrue
5051AmbroxolNc1c(Br)cc(Br)cc1CNC1CCC(O)CC10<rdkit.Chem.rdchem.Mol object at 0x7f438112d170>FalseInChI=1S/C13H18Br2N2O/c14-9-5-8(13(16)12(15)6-...<rdkit.Chem.rdchem.Mol object at 0x7f4381081210>InChI=1S/C13H18Br2N2O/c14-9-5-8(13(16)12(15)6-...TrueNc1c(Br)cc(Br)cc1CNC1CCC(O)CC1Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1True
5152AmikacinNCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...0<rdkit.Chem.rdchem.Mol object at 0x7f438112d8f0>FalseInChI=1S/C22H43N5O13/c23-2-1-8(29)20(36)27-7-3...<rdkit.Chem.rdchem.Mol object at 0x7f4381081260>InChI=1S/C22H43N5O13/c23-2-1-8(29)20(36)27-7-3...TrueNCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...True
5253AmilorideNC(=N)NC(=O)c1nc(Cl)c(N)nc1N0<rdkit.Chem.rdchem.Mol object at 0x7f438112d9e0>FalseInChI=1S/C6H8ClN7O/c7-2-4(9)13-3(8)1(12-2)5(15...<rdkit.Chem.rdchem.Mol object at 0x7f43810812b0>InChI=1S/C6H8ClN7O/c7-2-4(9)13-3(8)1(12-2)5(15...TrueN=C(N)NC(=O)c1nc(Cl)c(N)nc1NN=C(N)NC(=O)c1nc(Cl)c(N)nc1NTrue
5354AmineptineOC(=O)CCCCCCNC1c2ccccc2CCc2ccccc120<rdkit.Chem.rdchem.Mol object at 0x7fc61d087120><rdkit.Chem.rdchem.Mol object at 0x7f438112d940>FalseInChI=1S/C22H27NO2/c24-21(25)13-3-1-2-8-16-23-...<rdkit.Chem.rdchem.Mol object at 0x7f4381081300>InChI=1S/C22H27NO2/c24-21(25)13-3-1-2-8-16-23-...TrueO=C(O)CCCCCCNC1c2ccccc2CCc2ccccc21O=C(O)CCCCCCNC1c2ccccc2CCc2ccccc21True
\n", @@ -401,12 +1939,10 @@ ], "text/plain": [ " IDs Names \\\n", - "0 1 (R)-Roscovitine \n", "1 2 17-Methyltestosterone \n", "2 3 1-alpha-Hydroxycholecalciferol \n", "3 4 2,3-Dimercaptosuccinic acid \n", "4 5 2,4,6-Trinitrotoluene \n", - "5 6 2-Deoxy-D-glucose \n", "6 7 2'-fluoro-5-methylarabinosyluracil \n", "7 8 2-Methoxyestradiol \n", "8 9 4-aminobenzoic acid \n", @@ -417,14 +1953,48 @@ "13 14 5-fluoro-2'-deoxyuridine \n", "15 16 Acadesine \n", "16 17 Acarbose \n", + "17 18 Acebutolol \n", + "18 19 Acenocoumarol \n", + "19 20 Acetamide \n", + "20 21 Acetaminophen \n", + "21 22 Acetazolamide \n", + "22 23 Acetic acid \n", + "23 24 Acetohexamide \n", + "24 25 Acetohydroxamic acid \n", + "25 26 Acetrizoate Sodium \n", + "26 27 Acetylcholine \n", + "27 28 Acetylcysteine \n", + "28 29 Acetyl-L-carnitine \n", + "29 30 Acetylsalicylic acid \n", + "30 31 Acitretin \n", + "31 32 Acyclovir \n", + "32 33 Adefovir dipivoxil \n", + "33 34 Adenine \n", + "34 35 Adenosine \n", + "35 36 Adenosine triphosphate \n", + "36 37 AET \n", + "37 38 Ajmaline \n", + "38 39 Alanosine \n", + "39 40 Alatrofloxacin mesylate \n", + "40 41 Albendazole \n", + "42 43 Alitretinoin \n", + "43 44 Allantoin \n", + "44 45 Allobarbital \n", + "45 46 Allopurinol \n", + "46 47 Alpha-tocopherol acetate \n", + "47 48 Alverine \n", + "48 49 Amantadine \n", + "49 50 ambrisentan \n", + "50 51 Ambroxol \n", + "51 52 Amikacin \n", + "52 53 Amiloride \n", + "53 54 Amineptine \n", "\n", " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", "3 OC(=O)C(S)C(S)C(O)=O 0 \n", "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "5 OCC1OC(O)CC(O)C1O 0 \n", "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", "8 Nc1ccc(cc1)C(O)=O 0 \n", @@ -435,217 +2005,1296 @@ "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", + "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O 0 \n", + "18 CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O 0 \n", + "19 CC(N)=O 0 \n", + "20 CC(=O)Nc1ccc(O)cc1 0 \n", + "21 CC(=O)Nc1nnc(s1)S(N)(=O)=O 0 \n", + "22 CC(O)=O 0 \n", + "23 CC(=O)c1ccc(cc1)S(=O)(=O)NC(=O)NC1CCCCC1 0 \n", + "24 CC(=O)NO 0 \n", + "25 CC(=O)Nc1c(I)cc(I)c(C(O)=O)c1I 0 \n", + "26 CC(=O)OCC[N+](C)(C)C 0 \n", + "27 CC(=O)NC(CS)C(O)=O 0 \n", + "28 CC(=O)OC(CC(O)=O)C[N+](C)(C)C 0 \n", + "29 CC(=O)Oc1ccccc1C(O)=O 0 \n", + "30 COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(O)=O)c(C)c1C 0 \n", + "31 NC1=NC(=O)c2ncn(COCCO)c2N1 0 \n", + "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc12)OCO... 0 \n", + "33 Nc1ncnc2[nH]cnc12 0 \n", + "34 n2c1c(ncnc1n(c2)[C@@H]3O[C@@H]([C@@H](O)[C@H]3... 0 \n", + "35 Nc1ncnc2n(cnc12)C1OC(COP(O)(=O)OP(O)(=O)OP(O)(... 0 \n", + "36 NCCSC(N)=N 0 \n", + "37 CCC1C2CC3C4N(C)c5ccccc5C44CC(C2C4O)N3C1O 0 \n", + "38 NC(CN(O)N=O)C(O)=O 0 \n", + "39 CC(N)C(=O)NC(C)C(=O)NC1C2CN(CC12)c1nc2N(C=C(C(... 0 \n", + "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 0 \n", + "42 CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(O)=O 0 \n", + "43 NC(=O)NC1NC(=O)NC1=O 0 \n", + "44 C=CCC1(CC=C)C(=O)NC(=O)NC1=O 0 \n", + "45 O=C1N=CNc2cn[nH]c12 0 \n", + "46 CC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(OC(C)=O)c... 0 \n", + "47 CCN(CCCc1ccccc1)CCCc1ccccc1 0 \n", + "48 NC12CC3CC(CC(C3)C1)C2 0 \n", + "49 COC(C(Oc1nc(C)cc(C)n1)C(O)=O)(c1ccccc1)c1ccccc1 0 \n", + "50 Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1 0 \n", + "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... 0 \n", + "52 NC(=N)NC(=O)c1nc(Cl)c(N)nc1N 0 \n", + "53 OC(=O)CCCCCCNC1c2ccccc2CCc2ccccc12 0 \n", "\n", - " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 " + " mol Inorganics \\\n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "6 False \n", + "7 False \n", + "8 False \n", + "9 False \n", + "10 False \n", + "11 False \n", + "12 False \n", + "13 False \n", + "15 False \n", + "16 False \n", + "17 False \n", + "18 False \n", + "19 False \n", + "20 False \n", + "21 False \n", + "22 False \n", + "23 False \n", + "24 False \n", + "25 False \n", + "26 False \n", + "27 False \n", + "28 False \n", + "29 False \n", + "30 False \n", + "31 False \n", + "32 False \n", + "33 False \n", + "34 False \n", + "35 False \n", + "36 False \n", + "37 False \n", + "38 False \n", + "39 False \n", + "40 False \n", + "42 False \n", + "43 False \n", + "44 False \n", + "45 False \n", + "46 False \n", + "47 False \n", + "48 False \n", + "49 False \n", + "50 False \n", + "51 False \n", + "52 False \n", + "53 False \n", + "\n", + " InchI_before \\\n", + "1 InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5... \n", + "2 InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-... \n", + "3 InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9... \n", + "4 InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3... \n", + "6 InChI=1S/C10H13FN2O5/c1-4-2-13(10(17)12-8(4)16... \n", + "7 InChI=1S/C19H26O3/c1-19-8-7-12-13(15(19)5-6-18... \n", + "8 InChI=1S/C7H7NO2/c8-6-3-1-5(2-4-6)7(9)10/h1-4H... \n", + "9 InChI=1S/C26H29NO2/c1-4-25(20-8-6-5-7-9-20)26(... \n", + "10 InChI=1S/C4H3FN2O2/c5-2-1-6-4(9)7-3(2)8/h1H,(H... \n", + "11 InChI=1S/C8H12N4O5/c9-7-10-2-12(8(16)11-7)6-5(... \n", + "12 InChI=1S/C9H11BrN2O5/c10-4-2-12(9(16)11-8(4)15... \n", + "13 InChI=1S/C9H11FN2O5/c10-4-2-12(9(16)11-8(4)15)... \n", + "15 InChI=1S/C9H14N4O5/c10-7-4(8(11)17)12-2-13(7)9... \n", + "16 InChI=1S/C25H43NO18/c1-6-11(26-8-2-7(3-27)12(3... \n", + "17 InChI=1S/C18H28N2O4/c1-5-6-18(23)20-14-7-8-17(... \n", + "18 InChI=1S/C19H15NO6/c1-11(21)10-15(12-6-8-13(9-... \n", + "19 InChI=1S/C2H5NO/c1-2(3)4/h1H3,(H2,3,4) \n", + "20 InChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2... \n", + "21 InChI=1S/C4H6N4O3S2/c1-2(9)6-3-7-8-4(12-3)13(5... \n", + "22 InChI=1S/C2H4O2/c1-2(3)4/h1H3,(H,3,4) \n", + "23 InChI=1S/C15H20N2O4S/c1-11(18)12-7-9-14(10-8-1... \n", + "24 InChI=1S/C2H5NO2/c1-2(4)3-5/h5H,1H3,(H,3,4) \n", + "25 InChI=1S/C9H6I3NO3/c1-3(14)13-8-5(11)2-4(10)6(... \n", + "26 InChI=1S/C7H16NO2/c1-7(9)10-6-5-8(2,3)4/h5-6H2... \n", + "27 InChI=1S/C5H9NO3S/c1-3(7)6-4(2-10)5(8)9/h4,10H... \n", + "28 InChI=1S/C9H17NO4/c1-7(11)14-8(5-9(12)13)6-10(... \n", + "29 InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)... \n", + "30 InChI=1S/C21H26O3/c1-14(8-7-9-15(2)12-21(22)23... \n", + "31 InChI=1S/C8H11N5O3/c9-8-11-6-5(7(15)12-8)10-3-... \n", + "32 InChI=1S/C20H32N5O8P/c1-19(2,3)17(26)30-11-32-... \n", + "33 InChI=1S/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2... \n", + "34 InChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-1... \n", + "35 InChI=1S/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(... \n", + "36 InChI=1S/C3H9N3S/c4-1-2-7-3(5)6/h1-2,4H2,(H3,5,6) \n", + "37 InChI=1S/C20H26N2O2/c1-3-10-11-8-14-17-20(12-6... \n", + "38 InChI=1S/C3H7N3O4/c4-2(3(7)8)1-6(10)5-9/h2,10H... \n", + "39 InChI=1S/C26H25F3N6O5/c1-10(30)24(37)31-11(2)2... \n", + "40 InChI=1S/C12H15N3O2S/c1-3-6-18-8-4-5-9-10(7-8)... \n", + "42 InChI=1S/C20H28O2/c1-15(8-6-9-16(2)14-19(21)22... \n", + "43 InChI=1S/C4H6N4O3/c5-3(10)6-1-2(9)8-4(11)7-1/h... \n", + "44 InChI=1S/C10H12N2O3/c1-3-5-10(6-4-2)7(13)11-9(... \n", + "45 InChI=1S/C5H4N4O/c10-5-4-3(1-8-9-4)6-2-7-5/h1-... \n", + "46 InChI=1S/C31H52O3/c1-21(2)13-10-14-22(3)15-11-... \n", + "47 InChI=1S/C20H27N/c1-2-21(17-9-15-19-11-5-3-6-1... \n", + "48 InChI=1S/C10H17N/c11-10-4-7-1-8(5-10)3-9(2-7)6... \n", + "49 InChI=1S/C22H22N2O4/c1-15-14-16(2)24-21(23-15)... \n", + "50 InChI=1S/C13H18Br2N2O/c14-9-5-8(13(16)12(15)6-... \n", + "51 InChI=1S/C22H43N5O13/c23-2-1-8(29)20(36)27-7-3... \n", + "52 InChI=1S/C6H8ClN7O/c7-2-4(9)13-3(8)1(12-2)5(15... \n", + "53 InChI=1S/C22H27NO2/c24-21(25)13-3-1-2-8-16-23-... \n", + "\n", + " mol_after \\\n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "25 \n", + "26 \n", + "27 \n", + "28 \n", + "29 \n", + "30 \n", + "31 \n", + "32 \n", + "33 \n", + "34 \n", + "35 \n", + "36 \n", + "37 \n", + "38 \n", + "39 \n", + "40 \n", + "42 \n", + "43 \n", + "44 \n", + "45 \n", + "46 \n", + "47 \n", + "48 \n", + "49 \n", + "50 \n", + "51 \n", + "52 \n", + "53 \n", + "\n", + " InchI_after noChanges_inchi \\\n", + "1 InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5... True \n", + "2 InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-... True \n", + "3 InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9... True \n", + "4 InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3... True \n", + "6 InChI=1S/C10H13FN2O5/c1-4-2-13(10(17)12-8(4)16... True \n", + "7 InChI=1S/C19H26O3/c1-19-8-7-12-13(15(19)5-6-18... True \n", + "8 InChI=1S/C7H7NO2/c8-6-3-1-5(2-4-6)7(9)10/h1-4H... True \n", + "9 InChI=1S/C26H29NO2/c1-4-25(20-8-6-5-7-9-20)26(... True \n", + "10 InChI=1S/C4H3FN2O2/c5-2-1-6-4(9)7-3(2)8/h1H,(H... True \n", + "11 InChI=1S/C8H12N4O5/c9-7-10-2-12(8(16)11-7)6-5(... True \n", + "12 InChI=1S/C9H11BrN2O5/c10-4-2-12(9(16)11-8(4)15... True \n", + "13 InChI=1S/C9H11FN2O5/c10-4-2-12(9(16)11-8(4)15)... True \n", + "15 InChI=1S/C9H14N4O5/c10-7-4(8(11)17)12-2-13(7)9... True \n", + "16 InChI=1S/C25H43NO18/c1-6-11(26-8-2-7(3-27)12(3... True \n", + "17 InChI=1S/C18H28N2O4/c1-5-6-18(23)20-14-7-8-17(... True \n", + "18 InChI=1S/C19H15NO6/c1-11(21)10-15(12-6-8-13(9-... True \n", + "19 InChI=1S/C2H5NO/c1-2(3)4/h1H3,(H2,3,4) True \n", + "20 InChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2... True \n", + "21 InChI=1S/C4H6N4O3S2/c1-2(9)6-3-7-8-4(12-3)13(5... True \n", + "22 InChI=1S/C2H4O2/c1-2(3)4/h1H3,(H,3,4) True \n", + "23 InChI=1S/C15H20N2O4S/c1-11(18)12-7-9-14(10-8-1... True \n", + "24 InChI=1S/C2H5NO2/c1-2(4)3-5/h5H,1H3,(H,3,4) True \n", + "25 InChI=1S/C9H6I3NO3/c1-3(14)13-8-5(11)2-4(10)6(... True \n", + "26 InChI=1S/C7H16NO2/c1-7(9)10-6-5-8(2,3)4/h5-6H2... True \n", + "27 InChI=1S/C5H9NO3S/c1-3(7)6-4(2-10)5(8)9/h4,10H... True \n", + "28 InChI=1S/C9H17NO4/c1-7(11)14-8(5-9(12)13)6-10(... True \n", + "29 InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)... True \n", + "30 InChI=1S/C21H26O3/c1-14(8-7-9-15(2)12-21(22)23... True \n", + "31 InChI=1S/C8H11N5O3/c9-8-11-6-5(7(15)12-8)10-3-... True \n", + "32 InChI=1S/C20H32N5O8P/c1-19(2,3)17(26)30-11-32-... True \n", + "33 InChI=1S/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2... True \n", + "34 InChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-1... True \n", + "35 InChI=1S/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(... True \n", + "36 InChI=1S/C3H9N3S/c4-1-2-7-3(5)6/h1-2,4H2,(H3,5,6) True \n", + "37 InChI=1S/C20H26N2O2/c1-3-10-11-8-14-17-20(12-6... True \n", + "38 InChI=1S/C3H7N3O4/c4-2(3(7)8)1-6(10)5-9/h2,10H... True \n", + "39 InChI=1S/C26H25F3N6O5/c1-10(30)24(37)31-11(2)2... True \n", + "40 InChI=1S/C12H15N3O2S/c1-3-6-18-8-4-5-9-10(7-8)... True \n", + "42 InChI=1S/C20H28O2/c1-15(8-6-9-16(2)14-19(21)22... True \n", + "43 InChI=1S/C4H6N4O3/c5-3(10)6-1-2(9)8-4(11)7-1/h... True \n", + "44 InChI=1S/C10H12N2O3/c1-3-5-10(6-4-2)7(13)11-9(... True \n", + "45 InChI=1S/C5H4N4O/c10-5-4-3(1-8-9-4)6-2-7-5/h1-... True \n", + "46 InChI=1S/C31H52O3/c1-21(2)13-10-14-22(3)15-11-... True \n", + "47 InChI=1S/C20H27N/c1-2-21(17-9-15-19-11-5-3-6-1... True \n", + "48 InChI=1S/C10H17N/c11-10-4-7-1-8(5-10)3-9(2-7)6... True \n", + "49 InChI=1S/C22H22N2O4/c1-15-14-16(2)24-21(23-15)... True \n", + "50 InChI=1S/C13H18Br2N2O/c14-9-5-8(13(16)12(15)6-... True \n", + "51 InChI=1S/C22H43N5O13/c23-2-1-8(29)20(36)27-7-3... True \n", + "52 InChI=1S/C6H8ClN7O/c7-2-4(9)13-3(8)1(12-2)5(15... True \n", + "53 InChI=1S/C22H27NO2/c24-21(25)13-3-1-2-8-16-23-... True \n", + "\n", + " smiles_before \\\n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", + "3 O=C(O)C(S)C(S)C(=O)O \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] \n", + "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O \n", + "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 \n", + "8 Nc1ccc(C(=O)O)cc1 \n", + "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 \n", + "10 O=c1[nH]cc(F)c(=O)[nH]1 \n", + "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 \n", + "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br \n", + "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N \n", + "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... \n", + "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1 \n", + "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... \n", + "19 CC(N)=O \n", + "20 CC(=O)Nc1ccc(O)cc1 \n", + "21 CC(=O)Nc1nnc(S(N)(=O)=O)s1 \n", + "22 CC(=O)O \n", + "23 CC(=O)c1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1 \n", + "24 CC(=O)NO \n", + "25 CC(=O)Nc1c(I)cc(I)c(C(=O)O)c1I \n", + "26 CC(=O)OCC[N+](C)(C)C \n", + "27 CC(=O)NC(CS)C(=O)O \n", + "28 CC(=O)OC(CC(=O)O)C[N+](C)(C)C \n", + "29 CC(=O)Oc1ccccc1C(=O)O \n", + "30 COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(=O)O)c(C)c1C \n", + "31 Nc1nc(=O)c2ncn(COCCO)c2[nH]1 \n", + "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO... \n", + "33 Nc1ncnc2[nH]cnc12 \n", + "34 Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O \n", + "35 Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O... \n", + "36 N=C(N)SCCN \n", + "37 CCC1C2CC3C4N(C)c5ccccc5C45CC(C2C5O)N3C1O \n", + "38 NC(CN(O)N=O)C(=O)O \n", + "39 CC(N)C(=O)NC(C)C(=O)NC1C2CN(c3nc4c(cc3F)c(=O)c... \n", + "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 \n", + "42 CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)O \n", + "43 NC(=O)NC1NC(=O)NC1=O \n", + "44 C=CCC1(CC=C)C(=O)NC(=O)NC1=O \n", + "45 O=c1nc[nH]c2cn[nH]c12 \n", + "46 CC(=O)Oc1c(C)c(C)c2c(c1C)CCC(C)(CCCC(C)CCCC(C)... \n", + "47 CCN(CCCc1ccccc1)CCCc1ccccc1 \n", + "48 NC12CC3CC(CC(C3)C1)C2 \n", + "49 COC(c1ccccc1)(c1ccccc1)C(Oc1nc(C)cc(C)n1)C(=O)O \n", + "50 Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1 \n", + "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... \n", + "52 N=C(N)NC(=O)c1nc(Cl)c(N)nc1N \n", + "53 O=C(O)CCCCCCNC1c2ccccc2CCc2ccccc21 \n", + "\n", + " Smiles 3 noChanges \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O True \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O True \n", + "3 O=C(O)C(S)C(S)C(=O)O True \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", + "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O True \n", + "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 True \n", + "8 Nc1ccc(C(=O)O)cc1 True \n", + "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 True \n", + "10 O=c1[nH]cc(F)c(=O)[nH]1 True \n", + "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 True \n", + "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br True \n", + "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F True \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N True \n", + "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... True \n", + "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1 True \n", + "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... True \n", + "19 CC(N)=O True \n", + "20 CC(=O)Nc1ccc(O)cc1 True \n", + "21 CC(=O)Nc1nnc(S(N)(=O)=O)s1 True \n", + "22 CC(=O)O True \n", + "23 CC(=O)c1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1 True \n", + "24 CC(=O)NO True \n", + "25 CC(=O)Nc1c(I)cc(I)c(C(=O)O)c1I True \n", + "26 CC(=O)OCC[N+](C)(C)C True \n", + "27 CC(=O)NC(CS)C(=O)O True \n", + "28 CC(=O)OC(CC(=O)O)C[N+](C)(C)C True \n", + "29 CC(=O)Oc1ccccc1C(=O)O True \n", + "30 COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(=O)O)c(C)c1C True \n", + "31 Nc1nc(=O)c2ncn(COCCO)c2[nH]1 True \n", + "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO... True \n", + "33 Nc1ncnc2[nH]cnc12 True \n", + "34 Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O True \n", + "35 Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O... True \n", + "36 N=C(N)SCCN True \n", + "37 CCC1C2CC3C4N(C)c5ccccc5C45CC(C2C5O)N3C1O True \n", + "38 NC(CN(O)N=O)C(=O)O True \n", + "39 CC(N)C(=O)NC(C)C(=O)NC1C2CN(c3nc4c(cc3F)c(=O)c... True \n", + "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 True \n", + "42 CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)O True \n", + "43 NC(=O)NC1NC(=O)NC1=O True \n", + "44 C=CCC1(CC=C)C(=O)NC(=O)NC1=O True \n", + "45 O=c1nc[nH]c2cn[nH]c12 True \n", + "46 CC(=O)Oc1c(C)c(C)c2c(c1C)CCC(C)(CCCC(C)CCCC(C)... True \n", + "47 CCN(CCCc1ccccc1)CCCc1ccccc1 True \n", + "48 NC12CC3CC(CC(C3)C1)C2 True \n", + "49 COC(c1ccccc1)(c1ccccc1)C(Oc1nc(C)cc(C)n1)C(=O)O True \n", + "50 Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1 True \n", + "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... True \n", + "52 N=C(N)NC(=O)c1nc(Cl)c(N)nc1N True \n", + "53 O=C(O)CCCCCCNC1c2ccccc2CCc2ccccc21 True " ] }, - "execution_count": 23, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# We set up the taskNum \n", - "taskNum = 1\n", - "\n", - "# A column called mol is beeing added to the dataframe to store the mol-files\n", - "# The action is only applied to entries with a score of 0\n", - "dataset['mol'] = dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", - "failed_step_1 = dataset[(dataset['mol'].isnull())]\n", - "failed_step_1['Failed_at'] = failed_step_1['SMILEs'].apply(failMarker)\n", - "\n", - "# Update the dataset by removing all entries without a mol\n", - "dataset = dataset[dataset['mol'].notna()]\n", - "dataset.head(16)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 2: Removal of Inorganics and Mixtures\n", - "--------------------------------------------------\n", - "\n", - "Since molecular descriptors can only be computed for organic compunds, all inorganic compunds must be removed before the descriptors are calculated. (Chapter 2.1. Fourches 2010)\n", + "# Setting up the taskNum \n", + "taskNum = 3\n", + "# getting the valid entries from the step before\n", + "dataset = result2\n", "\n", - "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of \"True\" when it finds a inorganic molecule. We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", - "\"Inorganic compounds are known to have biological effects, like for example toxic effects.\"(Chapter 2.1. Fourches 2010)(fix citation)\n", - " Due to their potential bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", - "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", + "# Create InchIs for evaluation\n", + "dataset['InchI_before'] = dataset['mol'].apply(convert_format.convert_mol_to_inchi)\n", "\n", - "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself.\n", + "# Perform remove_fragments on entries\n", + "dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", "\n", - "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "taskNum = 2\n", - "from pandas import DataFrame\n", + "# Create new InchI from the current state for evaluation of performed changes \n", + "dataset['InchI_after'] = dataset['mol_after'].apply(convert_format.convert_mol_to_inchi)\n", + "dataset['noChanges_inchi']= dataset['InchI_before'] == dataset['InchI_after']\n", "\n", + "# Create Smiles for evaluation\n", + "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", "\n", - "df = DataFrame(dataset, columns =['Failed_at'])\n", - " \n", - "df['test'] = df['Failed_at'].apply(lambda x: 'True' if x <= 0 else 'False')\n", - " \n", - "df.head(16)\n", - " \n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Setting up the taskNum \n", - "taskNum = 2\n", + "# Create new SMILEs from the current state for evaluation of performed changes \n", + "dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", "\n", - "# Check for inorganic structures in the entries\n", - "#dataset['mol'] = np.where(dataset['Failed_at']==0,dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol),None)\n", - "\n", - "#dataset['test'] = np.where(dataset['Failed_at']==1,\"Nothing\",dataset['mol'].apply(detect_inorganic))\n", - "test = dataset.groupby(by=['Failed_at'])\n", - "#test_frame = np.where(dataset['Failed_at']==1)\n", - "#work_dataset[taskNum] = work_dataset['mol'].apply(detect_inorganic)\n", - "#contains_inorganics = work_dataset[work_dataset[taskNum]== True]\n", - "#dataset['Failed_at'] = np.where(dataset['SMILEs'] == contains_inorganics[\"SMILEs\"],dataset['Failed_at'].apply(failMarker),dataset['Failed_at'] )\n", - "#dataset[dataset[taskNum] == True]\n", - "test.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Removal of inorganics and mixtures of the dataset\n", - "dataset = dataset[(dataset['Failed_at']==0)]\n", - "dataset = dataset[[\"Names\",\"SMILEs\",\"mol\"]]\n", - "dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", - "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_inorganic.csv', index = False)\n", - "contains_inorganics = dataset[dataset['Inorganics']== True]\n", - "contains_inorganics.head()\n", - "dataset = dataset[dataset['Inorganics']== False]\n", - "dataset = dataset[[\"Names\",\"SMILEs\",\"mol\"]]\n", - "dataset.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Removal of mixtures, inorganics (and eventually organometallics)\n", - "# Functions detect_inorganic,remove_fragments, disconnect_metals, detect_inorganic again" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Pseudocode for filtering the inorganic records\n", "\n", - "new_data = array of smiles\n", - "records_organics = []\n", - "records_inorganics = []\n", + "# Filter the failed entries\n", + "failed_step_3 = dataset[dataset['noChanges_inchi']== False]\n", + "failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n", "\n", - "for x in new_data:\n", - " convert_smiles_to_mol(x)\n", - " if detect_inorganic(x)==\"False\":\n", - " records_organics.append(x) #QUESTION: Can I just store mol-files in an array?\n", - " elif detect_inorganic(x)==\"True\":\n", - " records_inorganics.append(x)\n", - " else:\n", - " raise Exception(\"Something is wrong with:\" x)\n", - "return records_organics, records_inorganics\n", - "# no further processing will happen to `records_inorganics`\n", - "# `records_organics` is passed on in the pipeline\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Flagging of Mixtures\n", - "dataset['InchIBeforeMixturesFiltering'] = dataset['mol'].apply(convert_format.convert_mol_to_inchi)\n", - "dataset['MolafterMixturesFiltering'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", - "dataset['InchIAfterMixturesFiltering'] = dataset['MolafterMixturesFiltering'].apply(convert_format.convert_mol_to_inchi)\n", - "dataset['noChanges']= dataset['InchIBeforeMixturesFiltering'] == dataset['InchIAfterMixturesFiltering']\n", - "dataset.to_csv('/home/allen/dev/utility/data/test_dataset_bool_mixtures.csv', index = False)\n", - "dataset.head()\n", + "result3 = dataset[dataset['noChanges_inchi']== True]\n", + "#result3 = result3[['IDs','Names','SMILEs','Failed_at']]\n", + "result3.head(50)\n", "\n", "#TODO: Subset of Mixtures, deletion from main set" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 91, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit INFO: [11:09:52] WARNING: Omitted u FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:03] Running FragmentRemover\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit INFO: [11:09:52] Running MetalDisconnector\n", + "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", + "RDKit WARNING: [11:09:52] Running MetalDindefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Metal was disconnected\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", + "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolInchI_beforemol_afterInchI_afternoChanges_inchismiles_beforeSmiles 3noChanges
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O4<rdkit.Chem.rdchem.Mol object at 0x7f4381050e40>InChI=1S/C17H18FN3O3/c18-13-7-11-14(8-15(13)20...<rdkit.Chem.rdchem.Mol object at 0x7f4381045080>InChI=1S/C17H18FN3O3/c18-13-7-11-14(8-15(13)20...TrueO=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=OO=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=OTrue
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...4<rdkit.Chem.rdchem.Mol object at 0x7f4381050e90>InChI=1S/C23H29ClFN3O4/c1-30-21-13-19(26)18(24...<rdkit.Chem.rdchem.Mol object at 0x7f4381045120>InChI=1S/C23H29ClFN3O4/c1-30-21-13-19(26)18(24...TrueCOc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)C...COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)C...True
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc14<rdkit.Chem.rdchem.Mol object at 0x7f4381050ee0>InChI=1S/C20H21FN2O/c1-23(2)11-3-10-20(17-5-7-...<rdkit.Chem.rdchem.Mol object at 0x7f43810450d0>InChI=1S/C20H21FN2O/c1-23(2)11-3-10-20(17-5-7-...TrueCN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21True
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O4<rdkit.Chem.rdchem.Mol object at 0x7f4381050f30>InChI=1S/C6H8O7/c7-3(8)1-6(13,5(11)12)2-4(9)10...<rdkit.Chem.rdchem.Mol object at 0x7f4381045170>InChI=1S/C6H8O7/c7-3(8)1-6(13,5(11)12)2-4(9)10...TrueO=C(O)CC(O)(CC(=O)O)C(=O)OO=C(O)CC(O)(CC(=O)O)C(=O)OTrue
200201zirconiumCCO[Zr](OCC)(OCC)OCC4<rdkit.Chem.rdchem.Mol object at 0x7f4381050f80>InChI=1S/4C2H5O.Zr/c4*1-2-3;/h4*2H2,1H3;/q4*-1;+4<rdkit.Chem.rdchem.Mol object at 0x7f43810451c0>InChI=1S/4C2H5O.Zr/c4*1-2-3;/h4*2H2,1H3;/q4*-1;+4TrueCCO[Zr](OCC)(OCC)OCCCC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]False
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs \\\n", + "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", + "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", + "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", + "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", + "\n", + " Failed_at mol \\\n", + "196 4 \n", + "197 4 \n", + "198 4 \n", + "199 4 \n", + "200 4 \n", + "\n", + " InchI_before \\\n", + "196 InChI=1S/C17H18FN3O3/c18-13-7-11-14(8-15(13)20... \n", + "197 InChI=1S/C23H29ClFN3O4/c1-30-21-13-19(26)18(24... \n", + "198 InChI=1S/C20H21FN2O/c1-23(2)11-3-10-20(17-5-7-... \n", + "199 InChI=1S/C6H8O7/c7-3(8)1-6(13,5(11)12)2-4(9)10... \n", + "200 InChI=1S/4C2H5O.Zr/c4*1-2-3;/h4*2H2,1H3;/q4*-1;+4 \n", + "\n", + " mol_after \\\n", + "196 \n", + "197 \n", + "198 \n", + "199 \n", + "200 \n", + "\n", + " InchI_after noChanges_inchi \\\n", + "196 InChI=1S/C17H18FN3O3/c18-13-7-11-14(8-15(13)20... True \n", + "197 InChI=1S/C23H29ClFN3O4/c1-30-21-13-19(26)18(24... True \n", + "198 InChI=1S/C20H21FN2O/c1-23(2)11-3-10-20(17-5-7-... True \n", + "199 InChI=1S/C6H8O7/c7-3(8)1-6(13,5(11)12)2-4(9)10... True \n", + "200 InChI=1S/4C2H5O.Zr/c4*1-2-3;/h4*2H2,1H3;/q4*-1;+4 True \n", + "\n", + " smiles_before \\\n", + "196 O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O \n", + "197 COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)C... \n", + "198 CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21 \n", + "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", + "200 CCO[Zr](OCC)(OCC)OCC \n", + "\n", + " Smiles 3 noChanges \n", + "196 O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O True \n", + "197 COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)C... True \n", + "198 CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21 True \n", + "199 O=C(O)CC(O)(CC(=O)O)C(=O)O True \n", + "200 CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4] False " + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Pseudocode for filtering the mixture records\n", - "\n", - "new_data = records_organics\n", - "no_fragement_records = []\n", - "contains_fragment_records = []\n", - "\n", - "#TODO: Write a helper function that returns a boolean value, when it finds a fragment (the InChI is changed by a removed fragment), a metals (disconnect_metals has been performed)\n", - "# Functions could be named `detect_fragment` and `detect_metals`\n", - "# Or I can write a function that just checks if the execution of a function actually altered the InChI --> might be the simpler solution\n", - "for x in new_data:\n", - " convert_smiles_to_mol(x)\n", - " if detect_fragment(x)==\"False\":\n", - " no_fragement_record.append(x)\n", - " elif detect_fragment(x)==\"True\":\n", - " contains_fragment_records.append(x)\n", - " else:\n", - " raise Exception(\"Something is wrong with\" x)\n", - "return no_fragement_record,contains_fragment_records\n", + "# Setting up the taskNum \n", + "taskNum = 4\n", + "# getting the valid entries from the step before\n", + "dataset = result1[['IDs','Names','SMILEs','Failed_at','mol']]\n", "\n", - "# [OPTIONAL] return the largest fragment of the record\n", - "new_data = contains_fragment_records\n", - "contains_largest_fragement = []\n", - "for x in new_data:\n", - " choose_largest_fragment(x)\n", - " contains_largest_fragement.append(x)\n", - "return contains_largest_fragement\n", + "# Create InchIs for evaluation\n", + "dataset['InchI_before'] = dataset['mol'].apply(convert_format.convert_mol_to_inchi)\n", "\n", - "# OR remove known common fragments with the function `remove_fragments`\n", + "# Perform disconnect_metals on entries\n", + "dataset['mol_after'] = dataset['mol'].apply(disconnect_metals)\n", "\n", - "# Code would be the same as obove\n", - "# Have to write a helper function to continue the pipeline with his set, without mixing it up with the \"safe_dataset\"\n", + "# Create new InchI from the current state for evaluation of performed changes \n", + "dataset['InchI_after'] = dataset['mol_after'].apply(convert_format.convert_mol_to_inchi)\n", + "dataset['noChanges_inchi']= dataset['InchI_before'] == dataset['InchI_after']\n", "\n", + "# Create Smiles for evaluation\n", + "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", "\n", + "# Create new SMILEs from the current state for evaluation of performed changes \n", + "dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", "\n", - "\n" + "# Filter the failed entries\n", + "failed_step_4 = dataset[dataset['noChanges_inchi']== True]\n", + "failed_step_4['Failed_at'] = failed_step_4['Failed_at'].apply(failMarker)\n", + "failed_step_4.tail()\n" ] }, { @@ -753,6 +3402,17 @@ "source": [ "# Manual inspection" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Contatination of results for the end \n", + "test = pd.concat([failed_step_1,failed_step_2])\n", + "test = test.sort_values(by=['IDs'])\n" + ] } ], "metadata": { From a7319dec97429454a7a67772c96012cc26967430 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Thu, 8 Apr 2021 17:20:44 +0200 Subject: [PATCH 20/55] step 2 working --- docs/tutorials/standardization.ipynb | 3518 +++++++------------------- 1 file changed, 929 insertions(+), 2589 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index fad143f1..48b9e0e3 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 106, "metadata": {}, "outputs": [ { @@ -36,7 +36,7 @@ "'/home/allen/dev/opencadd/docs/tutorials'" ] }, - "execution_count": 69, + "execution_count": 106, "metadata": {}, "output_type": "execute_result" } @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 107, "metadata": {}, "outputs": [], "source": [ @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 108, "metadata": {}, "outputs": [], "source": [ @@ -87,7 +87,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 114, "metadata": {}, "outputs": [ { @@ -173,7 +173,7 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 " ] }, - "execution_count": 86, + "execution_count": 114, "metadata": {}, "output_type": "execute_result" } @@ -221,30 +221,37 @@ "https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html
\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 1: Convert to Mol" + ] + }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 115, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [10:59:14] WARNING: Omitted undefined [11:00:01] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [16:27:0[16:28:30] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [11:00:01] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n", - ":9: SettingWithCopyWarning: \n", + ":9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -282,20 +289,12 @@ " \n", " \n", " \n", - " 185\n", - " 186\n", - " Chlorpromazine\n", - " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810cd990>\n", - " \n", - " \n", " 186\n", " 187\n", " Chlorpropamide\n", " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6ce40>\n", " \n", " \n", " 187\n", @@ -303,7 +302,7 @@ " Chlortetracycline\n", " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6ce90>\n", " \n", " \n", " 188\n", @@ -311,7 +310,7 @@ " Chlorzoxazone\n", " Oc1nc2cc(Cl)ccc2o1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6cee0>\n", " \n", " \n", " 189\n", @@ -319,7 +318,7 @@ " Cholestyramine\n", " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050c10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6cf30>\n", " \n", " \n", " 190\n", @@ -327,7 +326,7 @@ " Chondroitin sulfate\n", " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050c60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6cf80>\n", " \n", " \n", " 191\n", @@ -335,7 +334,7 @@ " Cidofovir\n", " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73030>\n", " \n", " \n", " 192\n", @@ -343,7 +342,7 @@ " Cimetidine\n", " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050d00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73080>\n", " \n", " \n", " 193\n", @@ -351,7 +350,7 @@ " Cinchophen\n", " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f730d0>\n", " \n", " \n", " 194\n", @@ -359,7 +358,7 @@ " Cinoxacin\n", " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73120>\n", " \n", " \n", " 195\n", @@ -367,7 +366,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73170>\n", " \n", " \n", " 196\n", @@ -375,7 +374,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f731c0>\n", " \n", " \n", " 197\n", @@ -383,7 +382,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73210>\n", " \n", " \n", " 198\n", @@ -391,7 +390,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73260>\n", " \n", " \n", " 199\n", @@ -399,7 +398,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050f30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f732b0>\n", " \n", " \n", " 200\n", @@ -407,7 +406,15 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050f80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73300>\n", + " \n", + " \n", + " 201\n", + " 202\n", + " hemoglobin\n", + " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73350>\n", " \n", " \n", "\n", @@ -415,7 +422,6 @@ ], "text/plain": [ " IDs Names \\\n", - "185 186 Chlorpromazine \n", "186 187 Chlorpropamide \n", "187 188 Chlortetracycline \n", "188 189 Chlorzoxazone \n", @@ -431,9 +437,9 @@ "198 199 Citalopram \n", "199 200 Citric acid \n", "200 201 zirconium \n", + "201 202 hemoglobin \n", "\n", " SMILEs Failed_at \\\n", - "185 CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12 0 \n", "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", "188 Oc1nc2cc(Cl)ccc2o1 0 \n", @@ -449,27 +455,28 @@ "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", "200 CCO[Zr](OCC)(OCC)OCC 0 \n", + "201 CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... 0 \n", "\n", " mol \n", - "185 \n", - "186 \n", - "187 \n", - "188 \n", - "189 \n", - "190 \n", - "191 \n", - "192 \n", - "193 \n", - "194 \n", - "195 \n", - "196 \n", - "197 \n", - "198 \n", - "199 \n", - "200 " + "186 \n", + "187 \n", + "188 \n", + "189 \n", + "190 \n", + "191 \n", + "192 \n", + "193 \n", + "194 \n", + "195 \n", + "196 \n", + "197 \n", + "198 \n", + "199 \n", + "200 \n", + "201 " ] }, - "execution_count": 87, + "execution_count": 115, "metadata": {}, "output_type": "execute_result" } @@ -510,16 +517,23 @@ "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 2: Filter entries with inorganic components" + ] + }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 135, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":11: SettingWithCopyWarning: \n", + ":11: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -558,198 +572,60 @@ " \n", " \n", " \n", - " 185\n", - " 186\n", - " Chlorpromazine\n", - " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137210>\n", - " False\n", - " \n", - " \n", - " 186\n", - " 187\n", - " Chlorpropamide\n", - " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137260>\n", - " False\n", - " \n", - " \n", - " 187\n", - " 188\n", - " Chlortetracycline\n", - " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43811372b0>\n", - " False\n", - " \n", - " \n", - " 188\n", - " 189\n", - " Chlorzoxazone\n", - " Oc1nc2cc(Cl)ccc2o1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137300>\n", - " False\n", - " \n", - " \n", - " 189\n", - " 190\n", - " Cholestyramine\n", - " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137350>\n", - " False\n", - " \n", - " \n", - " 190\n", - " 191\n", - " Chondroitin sulfate\n", - " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43811373a0>\n", - " False\n", - " \n", - " \n", - " 191\n", - " 192\n", - " Cidofovir\n", - " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43811373f0>\n", - " False\n", - " \n", - " \n", - " 192\n", - " 193\n", - " Cimetidine\n", - " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137440>\n", - " False\n", - " \n", - " \n", - " 193\n", - " 194\n", - " Cinchophen\n", - " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137490>\n", - " False\n", - " \n", - " \n", - " 194\n", - " 195\n", - " Cinoxacin\n", - " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43811374e0>\n", - " False\n", - " \n", - " \n", - " 195\n", - " 196\n", - " Ciprofibrate\n", - " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137530>\n", - " False\n", - " \n", - " \n", - " 196\n", - " 197\n", - " Ciprofloxacin\n", - " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137580>\n", - " False\n", + " 0\n", + " 1\n", + " (R)-Roscovitine\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " 2\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6e760>\n", + " True\n", " \n", " \n", - " 197\n", - " 198\n", - " Cisapride\n", - " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43811375d0>\n", - " False\n", + " 114\n", + " 115\n", + " Bortezomib\n", + " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", + " 2\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f5d2b0>\n", + " True\n", " \n", " \n", - " 198\n", - " 199\n", - " Citalopram\n", - " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137620>\n", - " False\n", + " 200\n", + " 201\n", + " zirconium\n", + " CCO[Zr](OCC)(OCC)OCC\n", + " 2\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73300>\n", + " True\n", " \n", " \n", - " 199\n", - " 200\n", - " Citric acid\n", - " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381137670>\n", - " False\n", + " 201\n", + " 202\n", + " hemoglobin\n", + " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", + " 2\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73350>\n", + " True\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " IDs Names \\\n", - "185 186 Chlorpromazine \n", - "186 187 Chlorpropamide \n", - "187 188 Chlortetracycline \n", - "188 189 Chlorzoxazone \n", - "189 190 Cholestyramine \n", - "190 191 Chondroitin sulfate \n", - "191 192 Cidofovir \n", - "192 193 Cimetidine \n", - "193 194 Cinchophen \n", - "194 195 Cinoxacin \n", - "195 196 Ciprofibrate \n", - "196 197 Ciprofloxacin \n", - "197 198 Cisapride \n", - "198 199 Citalopram \n", - "199 200 Citric acid \n", - "\n", - " SMILEs Failed_at \\\n", - "185 CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12 0 \n", - "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", - "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", - "188 Oc1nc2cc(Cl)ccc2o1 0 \n", - "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", - "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", - "191 NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1 0 \n", - "192 CN=C(NCCSCc1nc[nH]c1C)NC#N 0 \n", - "193 OC(=O)c1cc(nc2ccccc12)-c1ccccc1 0 \n", - "194 CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 0 \n", - "195 CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O 0 \n", - "196 OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O 0 \n", - "197 COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... 0 \n", - "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", - "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", + " IDs Names SMILEs \\\n", + "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", + "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", + "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", "\n", - " mol Inorganics \n", - "185 False \n", - "186 False \n", - "187 False \n", - "188 False \n", - "189 False \n", - "190 False \n", - "191 False \n", - "192 False \n", - "193 False \n", - "194 False \n", - "195 False \n", - "196 False \n", - "197 False \n", - "198 False \n", - "199 False " + " Failed_at mol Inorganics \n", + "0 2 True \n", + "114 2 True \n", + "200 2 True \n", + "201 2 True " ] }, - "execution_count": 84, + "execution_count": 135, "metadata": {}, "output_type": "execute_result" } @@ -767,328 +643,286 @@ "failed_step_2 = dataset[dataset['Inorganics']== True]\n", "failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n", "\n", + "# Safe entries that passed\n", "result2 = dataset[dataset['Inorganics']== False]\n", - "result2.tail(15)" + "failed_step_2.tail(15)" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# Removal of mixtures, inorganics (and eventually organometallics)\n", - "# Functions detect_inorganic,remove_fragments, disconnect_metals, detect_inorganic again" + "#### Task 3: Filter entries containing fragments" ] }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 125, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit WARNING: [11:01:16] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:01:16] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Charges were rearranged\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:02] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit INFO: [1 MetalDisconnector\n", - "RDKit INFO: [11:01:16] Running MetalDisconnector\n", - "RDKit INFO: [11:01:16] Initializing MetalDisconnector\n", - "RDKit INFO: [11:01:16] Running MetalDisconnector\n", - "RDKit INFO: [11:01:16] Initializing MetalDisconnector\n", - "RDKit INFO: [11:01:16] Running MetalDisconnector\n", - "RDKit INFO: [11:01:16] Initializing MetalDisconnector\n", - "RDKit INFO: [11:01:16] Running MetalDisconnector\n", - "RDKit INFO: [11:01:16] Initializing MetalDisconnector\n", - "RDKit INFO: [11:01:16] Running MetalDisconnector\n", - "RDKit INFO: [11:01:16] Removed covalent bond between Zr and O\n", - "RDKit INFO: [11:01:16] Removed covalent bond between Zr and O\n", - "RDKit INFO: [11:01:16] Removed covalent bond between Zr and O\n", - "RDKit INFO: [11:01:16] Removed covalent bond between Zr and O\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Removed fragment: 1,4-dioxane\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit WARNING: [11:09:03] Running1:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Charges were rearranged\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":26: SettingWithCopyWarning: \n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:47:09] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Removed fragment: 1,4-dioxane\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + "RDKit INFO: [16:49:20] Running FragmentRemover\n", + ":7: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", + ":10: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + ":13: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", + ":14: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", + ":19: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -1123,10 +957,7 @@ " Failed_at\n", " mol\n", " Inorganics\n", - " InchI_before\n", " mol_after\n", - " InchI_after\n", - " noChanges_inchi\n", " smiles_before\n", " Smiles 3\n", " noChanges\n", @@ -1134,1228 +965,37 @@ " \n", " \n", " \n", - " 1\n", - " 2\n", - " 17-Methyltestosterone\n", - " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810f6030>\n", - " False\n", - " InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f438107f350>\n", - " InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5...\n", - " True\n", - " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", - " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", - " True\n", - " \n", - " \n", - " 2\n", + " 5\n", + " 6\n", + " 2-Deoxy-D-glucose\n", + " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 3\n", - " 1-alpha-Hydroxycholecalciferol\n", - " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810f6120>\n", - " False\n", - " InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810b35d0>\n", - " InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-...\n", - " True\n", - " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", - " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", - " True\n", - " \n", - " \n", - " 3\n", - " 4\n", - " 2,3-Dimercaptosuccinic acid\n", - " OC(=O)C(S)C(S)C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810def80>\n", - " False\n", - " InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810b32b0>\n", - " InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9...\n", - " True\n", - " O=C(O)C(S)C(S)C(=O)O\n", - " O=C(O)C(S)C(S)C(=O)O\n", - " True\n", - " \n", - " \n", - " 4\n", - " 5\n", - " 2,4,6-Trinitrotoluene\n", - " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810def30>\n", - " False\n", - " InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015620>\n", - " InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3...\n", - " True\n", - " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", - " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", - " True\n", - " \n", - " \n", - " 6\n", - " 7\n", - " 2'-fluoro-5-methylarabinosyluracil\n", - " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810dee90>\n", - " False\n", - " InChI=1S/C10H13FN2O5/c1-4-2-13(10(17)12-8(4)16...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015120>\n", - " InChI=1S/C10H13FN2O5/c1-4-2-13(10(17)12-8(4)16...\n", - " True\n", - " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", - " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", - " True\n", - " \n", - " \n", - " 7\n", - " 8\n", - " 2-Methoxyestradiol\n", - " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810dedf0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6e3a0>\n", " False\n", - " InChI=1S/C19H26O3/c1-19-8-7-12-13(15(19)5-6-18...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015210>\n", - " InChI=1S/C19H26O3/c1-19-8-7-12-13(15(19)5-6-18...\n", - " True\n", - " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", - " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", - " True\n", - " \n", - " \n", - " 8\n", - " 9\n", - " 4-aminobenzoic acid\n", - " Nc1ccc(cc1)C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810dee40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f433178f170>\n", + " C1COCCO1.OCC1OC(O)CC(O)C1O\n", + " OCC1OC(O)CC(O)C1O\n", " False\n", - " InChI=1S/C7H7NO2/c8-6-3-1-5(2-4-6)7(9)10/h1-4H...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015030>\n", - " InChI=1S/C7H7NO2/c8-6-3-1-5(2-4-6)7(9)10/h1-4H...\n", - " True\n", - " Nc1ccc(C(=O)O)cc1\n", - " Nc1ccc(C(=O)O)cc1\n", - " True\n", - " \n", - " \n", - " 9\n", - " 10\n", - " 4-Hydroxytamoxifen\n", - " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810deda0>\n", - " False\n", - " InChI=1S/C26H29NO2/c1-4-25(20-8-6-5-7-9-20)26(...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015080>\n", - " InChI=1S/C26H29NO2/c1-4-25(20-8-6-5-7-9-20)26(...\n", - " True\n", - " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", - " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", - " True\n", - " \n", - " \n", - " 10\n", - " 11\n", - " 5 fluorouracil\n", - " FC1=CNC(=O)NC1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810ded50>\n", - " False\n", - " InChI=1S/C4H3FN2O2/c5-2-1-6-4(9)7-3(2)8/h1H,(H...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015170>\n", - " InChI=1S/C4H3FN2O2/c5-2-1-6-4(9)7-3(2)8/h1H,(H...\n", - " True\n", - " O=c1[nH]cc(F)c(=O)[nH]1\n", - " O=c1[nH]cc(F)c(=O)[nH]1\n", - " True\n", - " \n", - " \n", - " 11\n", - " 12\n", - " 5-Azacitidine\n", - " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de710>\n", - " False\n", - " InChI=1S/C8H12N4O5/c9-7-10-2-12(8(16)11-7)6-5(...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015490>\n", - " InChI=1S/C8H12N4O5/c9-7-10-2-12(8(16)11-7)6-5(...\n", - " True\n", - " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", - " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", - " True\n", - " \n", - " \n", - " 12\n", - " 13\n", - " 5-Bromouracil\n", - " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810ded00>\n", - " False\n", - " InChI=1S/C9H11BrN2O5/c10-4-2-12(9(16)11-8(4)15...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810151c0>\n", - " InChI=1S/C9H11BrN2O5/c10-4-2-12(9(16)11-8(4)15...\n", - " True\n", - " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", - " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", - " True\n", - " \n", - " \n", - " 13\n", - " 14\n", - " 5-fluoro-2'-deoxyuridine\n", - " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810decb0>\n", - " False\n", - " InChI=1S/C9H11FN2O5/c10-4-2-12(9(16)11-8(4)15)...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810154e0>\n", - " InChI=1S/C9H11FN2O5/c10-4-2-12(9(16)11-8(4)15)...\n", - " True\n", - " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", - " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", - " True\n", - " \n", - " \n", - " 15\n", - " 16\n", - " Acadesine\n", - " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810dec10>\n", - " False\n", - " InChI=1S/C9H14N4O5/c10-7-4(8(11)17)12-2-13(7)9...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810155d0>\n", - " InChI=1S/C9H14N4O5/c10-7-4(8(11)17)12-2-13(7)9...\n", - " True\n", - " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", - " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", - " True\n", - " \n", - " \n", - " 16\n", - " 17\n", - " Acarbose\n", - " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810dec60>\n", - " False\n", - " InChI=1S/C25H43NO18/c1-6-11(26-8-2-7(3-27)12(3...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015760>\n", - " InChI=1S/C25H43NO18/c1-6-11(26-8-2-7(3-27)12(3...\n", - " True\n", - " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", - " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", - " True\n", - " \n", - " \n", - " 17\n", - " 18\n", - " Acebutolol\n", - " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810debc0>\n", - " False\n", - " InChI=1S/C18H28N2O4/c1-5-6-18(23)20-14-7-8-17(...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810157b0>\n", - " InChI=1S/C18H28N2O4/c1-5-6-18(23)20-14-7-8-17(...\n", - " True\n", - " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1\n", - " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1\n", - " True\n", - " \n", - " \n", - " 18\n", - " 19\n", - " Acenocoumarol\n", - " CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810deb70>\n", - " False\n", - " InChI=1S/C19H15NO6/c1-11(21)10-15(12-6-8-13(9-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015800>\n", - " InChI=1S/C19H15NO6/c1-11(21)10-15(12-6-8-13(9-...\n", - " True\n", - " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", - " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", - " True\n", - " \n", - " \n", - " 19\n", - " 20\n", - " Acetamide\n", - " CC(N)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810deb20>\n", - " False\n", - " InChI=1S/C2H5NO/c1-2(3)4/h1H3,(H2,3,4)\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015850>\n", - " InChI=1S/C2H5NO/c1-2(3)4/h1H3,(H2,3,4)\n", - " True\n", - " CC(N)=O\n", - " CC(N)=O\n", - " True\n", - " \n", - " \n", - " 20\n", - " 21\n", - " Acetaminophen\n", - " CC(=O)Nc1ccc(O)cc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810dead0>\n", - " False\n", - " InChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810158a0>\n", - " InChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2...\n", - " True\n", - " CC(=O)Nc1ccc(O)cc1\n", - " CC(=O)Nc1ccc(O)cc1\n", - " True\n", - " \n", - " \n", - " 21\n", - " 22\n", - " Acetazolamide\n", - " CC(=O)Nc1nnc(s1)S(N)(=O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810dea30>\n", - " False\n", - " InChI=1S/C4H6N4O3S2/c1-2(9)6-3-7-8-4(12-3)13(5...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810158f0>\n", - " InChI=1S/C4H6N4O3S2/c1-2(9)6-3-7-8-4(12-3)13(5...\n", - " True\n", - " CC(=O)Nc1nnc(S(N)(=O)=O)s1\n", - " CC(=O)Nc1nnc(S(N)(=O)=O)s1\n", - " True\n", - " \n", - " \n", - " 22\n", - " 23\n", - " Acetic acid\n", - " CC(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de990>\n", - " False\n", - " InChI=1S/C2H4O2/c1-2(3)4/h1H3,(H,3,4)\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015940>\n", - " InChI=1S/C2H4O2/c1-2(3)4/h1H3,(H,3,4)\n", - " True\n", - " CC(=O)O\n", - " CC(=O)O\n", - " True\n", - " \n", - " \n", - " 23\n", - " 24\n", - " Acetohexamide\n", - " CC(=O)c1ccc(cc1)S(=O)(=O)NC(=O)NC1CCCCC1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810dea80>\n", - " False\n", - " InChI=1S/C15H20N2O4S/c1-11(18)12-7-9-14(10-8-1...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015990>\n", - " InChI=1S/C15H20N2O4S/c1-11(18)12-7-9-14(10-8-1...\n", - " True\n", - " CC(=O)c1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1\n", - " CC(=O)c1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1\n", - " True\n", - " \n", - " \n", - " 24\n", - " 25\n", - " Acetohydroxamic acid\n", - " CC(=O)NO\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de9e0>\n", - " False\n", - " InChI=1S/C2H5NO2/c1-2(4)3-5/h5H,1H3,(H,3,4)\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810159e0>\n", - " InChI=1S/C2H5NO2/c1-2(4)3-5/h5H,1H3,(H,3,4)\n", - " True\n", - " CC(=O)NO\n", - " CC(=O)NO\n", - " True\n", - " \n", - " \n", - " 25\n", - " 26\n", - " Acetrizoate Sodium\n", - " CC(=O)Nc1c(I)cc(I)c(C(O)=O)c1I\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de940>\n", - " False\n", - " InChI=1S/C9H6I3NO3/c1-3(14)13-8-5(11)2-4(10)6(...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015a30>\n", - " InChI=1S/C9H6I3NO3/c1-3(14)13-8-5(11)2-4(10)6(...\n", - " True\n", - " CC(=O)Nc1c(I)cc(I)c(C(=O)O)c1I\n", - " CC(=O)Nc1c(I)cc(I)c(C(=O)O)c1I\n", - " True\n", - " \n", - " \n", - " 26\n", - " 27\n", - " Acetylcholine\n", - " CC(=O)OCC[N+](C)(C)C\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de8f0>\n", - " False\n", - " InChI=1S/C7H16NO2/c1-7(9)10-6-5-8(2,3)4/h5-6H2...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015a80>\n", - " InChI=1S/C7H16NO2/c1-7(9)10-6-5-8(2,3)4/h5-6H2...\n", - " True\n", - " CC(=O)OCC[N+](C)(C)C\n", - " CC(=O)OCC[N+](C)(C)C\n", - " True\n", - " \n", - " \n", - " 27\n", - " 28\n", - " Acetylcysteine\n", - " CC(=O)NC(CS)C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de8a0>\n", - " False\n", - " InChI=1S/C5H9NO3S/c1-3(7)6-4(2-10)5(8)9/h4,10H...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015ad0>\n", - " InChI=1S/C5H9NO3S/c1-3(7)6-4(2-10)5(8)9/h4,10H...\n", - " True\n", - " CC(=O)NC(CS)C(=O)O\n", - " CC(=O)NC(CS)C(=O)O\n", - " True\n", - " \n", - " \n", - " 28\n", - " 29\n", - " Acetyl-L-carnitine\n", - " CC(=O)OC(CC(O)=O)C[N+](C)(C)C\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de850>\n", - " False\n", - " InChI=1S/C9H17NO4/c1-7(11)14-8(5-9(12)13)6-10(...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015b20>\n", - " InChI=1S/C9H17NO4/c1-7(11)14-8(5-9(12)13)6-10(...\n", - " True\n", - " CC(=O)OC(CC(=O)O)C[N+](C)(C)C\n", - " CC(=O)OC(CC(=O)O)C[N+](C)(C)C\n", - " True\n", - " \n", - " \n", - " 29\n", - " 30\n", - " Acetylsalicylic acid\n", - " CC(=O)Oc1ccccc1C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de800>\n", - " False\n", - " InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015b70>\n", - " InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)...\n", - " True\n", - " CC(=O)Oc1ccccc1C(=O)O\n", - " CC(=O)Oc1ccccc1C(=O)O\n", - " True\n", - " \n", - " \n", - " 30\n", - " 31\n", - " Acitretin\n", - " COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(O)=O)c(C)c1C\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de760>\n", - " False\n", - " InChI=1S/C21H26O3/c1-14(8-7-9-15(2)12-21(22)23...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015bc0>\n", - " InChI=1S/C21H26O3/c1-14(8-7-9-15(2)12-21(22)23...\n", - " True\n", - " COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(=O)O)c(C)c1C\n", - " COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(=O)O)c(C)c1C\n", - " True\n", - " \n", - " \n", - " 31\n", - " 32\n", - " Acyclovir\n", - " NC1=NC(=O)c2ncn(COCCO)c2N1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de6c0>\n", - " False\n", - " InChI=1S/C8H11N5O3/c9-8-11-6-5(7(15)12-8)10-3-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015c10>\n", - " InChI=1S/C8H11N5O3/c9-8-11-6-5(7(15)12-8)10-3-...\n", - " True\n", - " Nc1nc(=O)c2ncn(COCCO)c2[nH]1\n", - " Nc1nc(=O)c2ncn(COCCO)c2[nH]1\n", - " True\n", - " \n", - " \n", - " 32\n", - " 33\n", - " Adefovir dipivoxil\n", - " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc12)OCO...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de670>\n", - " False\n", - " InChI=1S/C20H32N5O8P/c1-19(2,3)17(26)30-11-32-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015c60>\n", - " InChI=1S/C20H32N5O8P/c1-19(2,3)17(26)30-11-32-...\n", - " True\n", - " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...\n", - " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...\n", - " True\n", - " \n", - " \n", - " 33\n", - " 34\n", - " Adenine\n", - " Nc1ncnc2[nH]cnc12\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de7b0>\n", - " False\n", - " InChI=1S/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015cb0>\n", - " InChI=1S/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2...\n", - " True\n", - " Nc1ncnc2[nH]cnc12\n", - " Nc1ncnc2[nH]cnc12\n", - " True\n", - " \n", - " \n", - " 34\n", - " 35\n", - " Adenosine\n", - " n2c1c(ncnc1n(c2)[C@@H]3O[C@@H]([C@@H](O)[C@H]3...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de5d0>\n", - " False\n", - " InChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-1...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015d00>\n", - " InChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-1...\n", - " True\n", - " Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O\n", - " Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O\n", - " True\n", - " \n", - " \n", - " 35\n", - " 36\n", - " Adenosine triphosphate\n", - " Nc1ncnc2n(cnc12)C1OC(COP(O)(=O)OP(O)(=O)OP(O)(...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de580>\n", - " False\n", - " InChI=1S/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015d50>\n", - " InChI=1S/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(...\n", - " True\n", - " Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...\n", - " Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...\n", - " True\n", - " \n", - " \n", - " 36\n", - " 37\n", - " AET\n", - " NCCSC(N)=N\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de530>\n", - " False\n", - " InChI=1S/C3H9N3S/c4-1-2-7-3(5)6/h1-2,4H2,(H3,5,6)\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015da0>\n", - " InChI=1S/C3H9N3S/c4-1-2-7-3(5)6/h1-2,4H2,(H3,5,6)\n", - " True\n", - " N=C(N)SCCN\n", - " N=C(N)SCCN\n", - " True\n", - " \n", - " \n", - " 37\n", - " 38\n", - " Ajmaline\n", - " CCC1C2CC3C4N(C)c5ccccc5C44CC(C2C4O)N3C1O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de4e0>\n", - " False\n", - " InChI=1S/C20H26N2O2/c1-3-10-11-8-14-17-20(12-6...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015df0>\n", - " InChI=1S/C20H26N2O2/c1-3-10-11-8-14-17-20(12-6...\n", - " True\n", - " CCC1C2CC3C4N(C)c5ccccc5C45CC(C2C5O)N3C1O\n", - " CCC1C2CC3C4N(C)c5ccccc5C45CC(C2C5O)N3C1O\n", - " True\n", - " \n", - " \n", - " 38\n", - " 39\n", - " Alanosine\n", - " NC(CN(O)N=O)C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de490>\n", - " False\n", - " InChI=1S/C3H7N3O4/c4-2(3(7)8)1-6(10)5-9/h2,10H...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015e40>\n", - " InChI=1S/C3H7N3O4/c4-2(3(7)8)1-6(10)5-9/h2,10H...\n", - " True\n", - " NC(CN(O)N=O)C(=O)O\n", - " NC(CN(O)N=O)C(=O)O\n", - " True\n", - " \n", - " \n", - " 39\n", - " 40\n", - " Alatrofloxacin mesylate\n", - " CC(N)C(=O)NC(C)C(=O)NC1C2CN(CC12)c1nc2N(C=C(C(...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de440>\n", - " False\n", - " InChI=1S/C26H25F3N6O5/c1-10(30)24(37)31-11(2)2...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015e90>\n", - " InChI=1S/C26H25F3N6O5/c1-10(30)24(37)31-11(2)2...\n", - " True\n", - " CC(N)C(=O)NC(C)C(=O)NC1C2CN(c3nc4c(cc3F)c(=O)c...\n", - " CC(N)C(=O)NC(C)C(=O)NC1C2CN(c3nc4c(cc3F)c(=O)c...\n", - " True\n", - " \n", - " \n", - " 40\n", - " 41\n", - " Albendazole\n", - " CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de3f0>\n", - " False\n", - " InChI=1S/C12H15N3O2S/c1-3-6-18-8-4-5-9-10(7-8)...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015ee0>\n", - " InChI=1S/C12H15N3O2S/c1-3-6-18-8-4-5-9-10(7-8)...\n", - " True\n", - " CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1\n", - " CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1\n", - " True\n", - " \n", - " \n", - " 42\n", - " 43\n", - " Alitretinoin\n", - " CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de3a0>\n", - " False\n", - " InChI=1S/C20H28O2/c1-15(8-6-9-16(2)14-19(21)22...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015f30>\n", - " InChI=1S/C20H28O2/c1-15(8-6-9-16(2)14-19(21)22...\n", - " True\n", - " CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)O\n", - " CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)O\n", - " True\n", - " \n", - " \n", - " 43\n", - " 44\n", - " Allantoin\n", - " NC(=O)NC1NC(=O)NC1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de350>\n", - " False\n", - " InChI=1S/C4H6N4O3/c5-3(10)6-1-2(9)8-4(11)7-1/h...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381015f80>\n", - " InChI=1S/C4H6N4O3/c5-3(10)6-1-2(9)8-4(11)7-1/h...\n", - " True\n", - " NC(=O)NC1NC(=O)NC1=O\n", - " NC(=O)NC1NC(=O)NC1=O\n", - " True\n", - " \n", - " \n", - " 44\n", - " 45\n", - " Allobarbital\n", - " C=CCC1(CC=C)C(=O)NC(=O)NC1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de300>\n", - " False\n", - " InChI=1S/C10H12N2O3/c1-3-5-10(6-4-2)7(13)11-9(...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381081030>\n", - " InChI=1S/C10H12N2O3/c1-3-5-10(6-4-2)7(13)11-9(...\n", - " True\n", - " C=CCC1(CC=C)C(=O)NC(=O)NC1=O\n", - " C=CCC1(CC=C)C(=O)NC(=O)NC1=O\n", - " True\n", - " \n", - " \n", - " 45\n", - " 46\n", - " Allopurinol\n", - " O=C1N=CNc2cn[nH]c12\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de2b0>\n", - " False\n", - " InChI=1S/C5H4N4O/c10-5-4-3(1-8-9-4)6-2-7-5/h1-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381081080>\n", - " InChI=1S/C5H4N4O/c10-5-4-3(1-8-9-4)6-2-7-5/h1-...\n", - " True\n", - " O=c1nc[nH]c2cn[nH]c12\n", - " O=c1nc[nH]c2cn[nH]c12\n", - " True\n", - " \n", - " \n", - " 46\n", - " 47\n", - " Alpha-tocopherol acetate\n", - " CC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(OC(C)=O)c...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de260>\n", - " False\n", - " InChI=1S/C31H52O3/c1-21(2)13-10-14-22(3)15-11-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810810d0>\n", - " InChI=1S/C31H52O3/c1-21(2)13-10-14-22(3)15-11-...\n", - " True\n", - " CC(=O)Oc1c(C)c(C)c2c(c1C)CCC(C)(CCCC(C)CCCC(C)...\n", - " CC(=O)Oc1c(C)c(C)c2c(c1C)CCC(C)(CCCC(C)CCCC(C)...\n", - " True\n", - " \n", - " \n", - " 47\n", - " 48\n", - " Alverine\n", - " CCN(CCCc1ccccc1)CCCc1ccccc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de210>\n", - " False\n", - " InChI=1S/C20H27N/c1-2-21(17-9-15-19-11-5-3-6-1...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381081120>\n", - " InChI=1S/C20H27N/c1-2-21(17-9-15-19-11-5-3-6-1...\n", - " True\n", - " CCN(CCCc1ccccc1)CCCc1ccccc1\n", - " CCN(CCCc1ccccc1)CCCc1ccccc1\n", - " True\n", - " \n", - " \n", - " 48\n", - " 49\n", - " Amantadine\n", - " NC12CC3CC(CC(C3)C1)C2\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de030>\n", - " False\n", - " InChI=1S/C10H17N/c11-10-4-7-1-8(5-10)3-9(2-7)6...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381081170>\n", - " InChI=1S/C10H17N/c11-10-4-7-1-8(5-10)3-9(2-7)6...\n", - " True\n", - " NC12CC3CC(CC(C3)C1)C2\n", - " NC12CC3CC(CC(C3)C1)C2\n", - " True\n", - " \n", - " \n", - " 49\n", - " 50\n", - " ambrisentan\n", - " COC(C(Oc1nc(C)cc(C)n1)C(O)=O)(c1ccccc1)c1ccccc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810de1c0>\n", - " False\n", - " InChI=1S/C22H22N2O4/c1-15-14-16(2)24-21(23-15)...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810811c0>\n", - " InChI=1S/C22H22N2O4/c1-15-14-16(2)24-21(23-15)...\n", - " True\n", - " COC(c1ccccc1)(c1ccccc1)C(Oc1nc(C)cc(C)n1)C(=O)O\n", - " COC(c1ccccc1)(c1ccccc1)C(Oc1nc(C)cc(C)n1)C(=O)O\n", - " True\n", - " \n", - " \n", - " 50\n", - " 51\n", - " Ambroxol\n", - " Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f438112d170>\n", - " False\n", - " InChI=1S/C13H18Br2N2O/c14-9-5-8(13(16)12(15)6-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381081210>\n", - " InChI=1S/C13H18Br2N2O/c14-9-5-8(13(16)12(15)6-...\n", - " True\n", - " Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1\n", - " Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1\n", - " True\n", - " \n", - " \n", - " 51\n", - " 52\n", - " Amikacin\n", - " NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f438112d8f0>\n", - " False\n", - " InChI=1S/C22H43N5O13/c23-2-1-8(29)20(36)27-7-3...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381081260>\n", - " InChI=1S/C22H43N5O13/c23-2-1-8(29)20(36)27-7-3...\n", - " True\n", - " NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", - " NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", - " True\n", - " \n", - " \n", - " 52\n", - " 53\n", - " Amiloride\n", - " NC(=N)NC(=O)c1nc(Cl)c(N)nc1N\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f438112d9e0>\n", - " False\n", - " InChI=1S/C6H8ClN7O/c7-2-4(9)13-3(8)1(12-2)5(15...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810812b0>\n", - " InChI=1S/C6H8ClN7O/c7-2-4(9)13-3(8)1(12-2)5(15...\n", - " True\n", - " N=C(N)NC(=O)c1nc(Cl)c(N)nc1N\n", - " N=C(N)NC(=O)c1nc(Cl)c(N)nc1N\n", - " True\n", - " \n", - " \n", - " 53\n", - " 54\n", - " Amineptine\n", - " OC(=O)CCCCCCNC1c2ccccc2CCc2ccccc12\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f438112d940>\n", - " False\n", - " InChI=1S/C22H27NO2/c24-21(25)13-3-1-2-8-16-23-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381081300>\n", - " InChI=1S/C22H27NO2/c24-21(25)13-3-1-2-8-16-23-...\n", - " True\n", - " O=C(O)CCCCCCNC1c2ccccc2CCc2ccccc21\n", - " O=C(O)CCCCCCNC1c2ccccc2CCc2ccccc21\n", - " True\n", " \n", " \n", "\n", "" ], "text/plain": [ - " IDs Names \\\n", - "1 2 17-Methyltestosterone \n", - "2 3 1-alpha-Hydroxycholecalciferol \n", - "3 4 2,3-Dimercaptosuccinic acid \n", - "4 5 2,4,6-Trinitrotoluene \n", - "6 7 2'-fluoro-5-methylarabinosyluracil \n", - "7 8 2-Methoxyestradiol \n", - "8 9 4-aminobenzoic acid \n", - "9 10 4-Hydroxytamoxifen \n", - "10 11 5 fluorouracil \n", - "11 12 5-Azacitidine \n", - "12 13 5-Bromouracil \n", - "13 14 5-fluoro-2'-deoxyuridine \n", - "15 16 Acadesine \n", - "16 17 Acarbose \n", - "17 18 Acebutolol \n", - "18 19 Acenocoumarol \n", - "19 20 Acetamide \n", - "20 21 Acetaminophen \n", - "21 22 Acetazolamide \n", - "22 23 Acetic acid \n", - "23 24 Acetohexamide \n", - "24 25 Acetohydroxamic acid \n", - "25 26 Acetrizoate Sodium \n", - "26 27 Acetylcholine \n", - "27 28 Acetylcysteine \n", - "28 29 Acetyl-L-carnitine \n", - "29 30 Acetylsalicylic acid \n", - "30 31 Acitretin \n", - "31 32 Acyclovir \n", - "32 33 Adefovir dipivoxil \n", - "33 34 Adenine \n", - "34 35 Adenosine \n", - "35 36 Adenosine triphosphate \n", - "36 37 AET \n", - "37 38 Ajmaline \n", - "38 39 Alanosine \n", - "39 40 Alatrofloxacin mesylate \n", - "40 41 Albendazole \n", - "42 43 Alitretinoin \n", - "43 44 Allantoin \n", - "44 45 Allobarbital \n", - "45 46 Allopurinol \n", - "46 47 Alpha-tocopherol acetate \n", - "47 48 Alverine \n", - "48 49 Amantadine \n", - "49 50 ambrisentan \n", - "50 51 Ambroxol \n", - "51 52 Amikacin \n", - "52 53 Amiloride \n", - "53 54 Amineptine \n", - "\n", - " SMILEs Failed_at \\\n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", - "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", - "8 Nc1ccc(cc1)C(O)=O 0 \n", - "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", - "10 FC1=CNC(=O)NC1=O 0 \n", - "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", - "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", - "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", - "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", - "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O 0 \n", - "18 CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O 0 \n", - "19 CC(N)=O 0 \n", - "20 CC(=O)Nc1ccc(O)cc1 0 \n", - "21 CC(=O)Nc1nnc(s1)S(N)(=O)=O 0 \n", - "22 CC(O)=O 0 \n", - "23 CC(=O)c1ccc(cc1)S(=O)(=O)NC(=O)NC1CCCCC1 0 \n", - "24 CC(=O)NO 0 \n", - "25 CC(=O)Nc1c(I)cc(I)c(C(O)=O)c1I 0 \n", - "26 CC(=O)OCC[N+](C)(C)C 0 \n", - "27 CC(=O)NC(CS)C(O)=O 0 \n", - "28 CC(=O)OC(CC(O)=O)C[N+](C)(C)C 0 \n", - "29 CC(=O)Oc1ccccc1C(O)=O 0 \n", - "30 COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(O)=O)c(C)c1C 0 \n", - "31 NC1=NC(=O)c2ncn(COCCO)c2N1 0 \n", - "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc12)OCO... 0 \n", - "33 Nc1ncnc2[nH]cnc12 0 \n", - "34 n2c1c(ncnc1n(c2)[C@@H]3O[C@@H]([C@@H](O)[C@H]3... 0 \n", - "35 Nc1ncnc2n(cnc12)C1OC(COP(O)(=O)OP(O)(=O)OP(O)(... 0 \n", - "36 NCCSC(N)=N 0 \n", - "37 CCC1C2CC3C4N(C)c5ccccc5C44CC(C2C4O)N3C1O 0 \n", - "38 NC(CN(O)N=O)C(O)=O 0 \n", - "39 CC(N)C(=O)NC(C)C(=O)NC1C2CN(CC12)c1nc2N(C=C(C(... 0 \n", - "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 0 \n", - "42 CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(O)=O 0 \n", - "43 NC(=O)NC1NC(=O)NC1=O 0 \n", - "44 C=CCC1(CC=C)C(=O)NC(=O)NC1=O 0 \n", - "45 O=C1N=CNc2cn[nH]c12 0 \n", - "46 CC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(OC(C)=O)c... 0 \n", - "47 CCN(CCCc1ccccc1)CCCc1ccccc1 0 \n", - "48 NC12CC3CC(CC(C3)C1)C2 0 \n", - "49 COC(C(Oc1nc(C)cc(C)n1)C(O)=O)(c1ccccc1)c1ccccc1 0 \n", - "50 Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1 0 \n", - "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... 0 \n", - "52 NC(=N)NC(=O)c1nc(Cl)c(N)nc1N 0 \n", - "53 OC(=O)CCCCCCNC1c2ccccc2CCc2ccccc12 0 \n", - "\n", - " mol Inorganics \\\n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "6 False \n", - "7 False \n", - "8 False \n", - "9 False \n", - "10 False \n", - "11 False \n", - "12 False \n", - "13 False \n", - "15 False \n", - "16 False \n", - "17 False \n", - "18 False \n", - "19 False \n", - "20 False \n", - "21 False \n", - "22 False \n", - "23 False \n", - "24 False \n", - "25 False \n", - "26 False \n", - "27 False \n", - "28 False \n", - "29 False \n", - "30 False \n", - "31 False \n", - "32 False \n", - "33 False \n", - "34 False \n", - "35 False \n", - "36 False \n", - "37 False \n", - "38 False \n", - "39 False \n", - "40 False \n", - "42 False \n", - "43 False \n", - "44 False \n", - "45 False \n", - "46 False \n", - "47 False \n", - "48 False \n", - "49 False \n", - "50 False \n", - "51 False \n", - "52 False \n", - "53 False \n", + " IDs Names SMILEs Failed_at \\\n", + "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 3 \n", "\n", - " InchI_before \\\n", - "1 InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5... \n", - "2 InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-... \n", - "3 InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9... \n", - "4 InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3... \n", - "6 InChI=1S/C10H13FN2O5/c1-4-2-13(10(17)12-8(4)16... \n", - "7 InChI=1S/C19H26O3/c1-19-8-7-12-13(15(19)5-6-18... \n", - "8 InChI=1S/C7H7NO2/c8-6-3-1-5(2-4-6)7(9)10/h1-4H... \n", - "9 InChI=1S/C26H29NO2/c1-4-25(20-8-6-5-7-9-20)26(... \n", - "10 InChI=1S/C4H3FN2O2/c5-2-1-6-4(9)7-3(2)8/h1H,(H... \n", - "11 InChI=1S/C8H12N4O5/c9-7-10-2-12(8(16)11-7)6-5(... \n", - "12 InChI=1S/C9H11BrN2O5/c10-4-2-12(9(16)11-8(4)15... \n", - "13 InChI=1S/C9H11FN2O5/c10-4-2-12(9(16)11-8(4)15)... \n", - "15 InChI=1S/C9H14N4O5/c10-7-4(8(11)17)12-2-13(7)9... \n", - "16 InChI=1S/C25H43NO18/c1-6-11(26-8-2-7(3-27)12(3... \n", - "17 InChI=1S/C18H28N2O4/c1-5-6-18(23)20-14-7-8-17(... \n", - "18 InChI=1S/C19H15NO6/c1-11(21)10-15(12-6-8-13(9-... \n", - "19 InChI=1S/C2H5NO/c1-2(3)4/h1H3,(H2,3,4) \n", - "20 InChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2... \n", - "21 InChI=1S/C4H6N4O3S2/c1-2(9)6-3-7-8-4(12-3)13(5... \n", - "22 InChI=1S/C2H4O2/c1-2(3)4/h1H3,(H,3,4) \n", - "23 InChI=1S/C15H20N2O4S/c1-11(18)12-7-9-14(10-8-1... \n", - "24 InChI=1S/C2H5NO2/c1-2(4)3-5/h5H,1H3,(H,3,4) \n", - "25 InChI=1S/C9H6I3NO3/c1-3(14)13-8-5(11)2-4(10)6(... \n", - "26 InChI=1S/C7H16NO2/c1-7(9)10-6-5-8(2,3)4/h5-6H2... \n", - "27 InChI=1S/C5H9NO3S/c1-3(7)6-4(2-10)5(8)9/h4,10H... \n", - "28 InChI=1S/C9H17NO4/c1-7(11)14-8(5-9(12)13)6-10(... \n", - "29 InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)... \n", - "30 InChI=1S/C21H26O3/c1-14(8-7-9-15(2)12-21(22)23... \n", - "31 InChI=1S/C8H11N5O3/c9-8-11-6-5(7(15)12-8)10-3-... \n", - "32 InChI=1S/C20H32N5O8P/c1-19(2,3)17(26)30-11-32-... \n", - "33 InChI=1S/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2... \n", - "34 InChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-1... \n", - "35 InChI=1S/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(... \n", - "36 InChI=1S/C3H9N3S/c4-1-2-7-3(5)6/h1-2,4H2,(H3,5,6) \n", - "37 InChI=1S/C20H26N2O2/c1-3-10-11-8-14-17-20(12-6... \n", - "38 InChI=1S/C3H7N3O4/c4-2(3(7)8)1-6(10)5-9/h2,10H... \n", - "39 InChI=1S/C26H25F3N6O5/c1-10(30)24(37)31-11(2)2... \n", - "40 InChI=1S/C12H15N3O2S/c1-3-6-18-8-4-5-9-10(7-8)... \n", - "42 InChI=1S/C20H28O2/c1-15(8-6-9-16(2)14-19(21)22... \n", - "43 InChI=1S/C4H6N4O3/c5-3(10)6-1-2(9)8-4(11)7-1/h... \n", - "44 InChI=1S/C10H12N2O3/c1-3-5-10(6-4-2)7(13)11-9(... \n", - "45 InChI=1S/C5H4N4O/c10-5-4-3(1-8-9-4)6-2-7-5/h1-... \n", - "46 InChI=1S/C31H52O3/c1-21(2)13-10-14-22(3)15-11-... \n", - "47 InChI=1S/C20H27N/c1-2-21(17-9-15-19-11-5-3-6-1... \n", - "48 InChI=1S/C10H17N/c11-10-4-7-1-8(5-10)3-9(2-7)6... \n", - "49 InChI=1S/C22H22N2O4/c1-15-14-16(2)24-21(23-15)... \n", - "50 InChI=1S/C13H18Br2N2O/c14-9-5-8(13(16)12(15)6-... \n", - "51 InChI=1S/C22H43N5O13/c23-2-1-8(29)20(36)27-7-3... \n", - "52 InChI=1S/C6H8ClN7O/c7-2-4(9)13-3(8)1(12-2)5(15... \n", - "53 InChI=1S/C22H27NO2/c24-21(25)13-3-1-2-8-16-23-... \n", + " mol Inorganics \\\n", + "5 False \n", "\n", - " mol_after \\\n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 \n", - "17 \n", - "18 \n", - "19 \n", - "20 \n", - "21 \n", - "22 \n", - "23 \n", - "24 \n", - "25 \n", - "26 \n", - "27 \n", - "28 \n", - "29 \n", - "30 \n", - "31 \n", - "32 \n", - "33 \n", - "34 \n", - "35 \n", - "36 \n", - "37 \n", - "38 \n", - "39 \n", - "40 \n", - "42 \n", - "43 \n", - "44 \n", - "45 \n", - "46 \n", - "47 \n", - "48 \n", - "49 \n", - "50 \n", - "51 \n", - "52 \n", - "53 \n", + " mol_after \\\n", + "5 \n", "\n", - " InchI_after noChanges_inchi \\\n", - "1 InChI=1S/C20H30O2/c1-18-9-6-14(21)12-13(18)4-5... True \n", - "2 InChI=1S/C27H44O2/c1-18(2)8-6-9-19(3)24-13-14-... True \n", - "3 InChI=1S/C4H6O4S2/c5-3(6)1(9)2(10)4(7)8/h1-2,9... True \n", - "4 InChI=1S/C7H5N3O6/c1-4-6(9(13)14)2-5(8(11)12)3... True \n", - "6 InChI=1S/C10H13FN2O5/c1-4-2-13(10(17)12-8(4)16... True \n", - "7 InChI=1S/C19H26O3/c1-19-8-7-12-13(15(19)5-6-18... True \n", - "8 InChI=1S/C7H7NO2/c8-6-3-1-5(2-4-6)7(9)10/h1-4H... True \n", - "9 InChI=1S/C26H29NO2/c1-4-25(20-8-6-5-7-9-20)26(... True \n", - "10 InChI=1S/C4H3FN2O2/c5-2-1-6-4(9)7-3(2)8/h1H,(H... True \n", - "11 InChI=1S/C8H12N4O5/c9-7-10-2-12(8(16)11-7)6-5(... True \n", - "12 InChI=1S/C9H11BrN2O5/c10-4-2-12(9(16)11-8(4)15... True \n", - "13 InChI=1S/C9H11FN2O5/c10-4-2-12(9(16)11-8(4)15)... True \n", - "15 InChI=1S/C9H14N4O5/c10-7-4(8(11)17)12-2-13(7)9... True \n", - "16 InChI=1S/C25H43NO18/c1-6-11(26-8-2-7(3-27)12(3... True \n", - "17 InChI=1S/C18H28N2O4/c1-5-6-18(23)20-14-7-8-17(... True \n", - "18 InChI=1S/C19H15NO6/c1-11(21)10-15(12-6-8-13(9-... True \n", - "19 InChI=1S/C2H5NO/c1-2(3)4/h1H3,(H2,3,4) True \n", - "20 InChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2... True \n", - "21 InChI=1S/C4H6N4O3S2/c1-2(9)6-3-7-8-4(12-3)13(5... True \n", - "22 InChI=1S/C2H4O2/c1-2(3)4/h1H3,(H,3,4) True \n", - "23 InChI=1S/C15H20N2O4S/c1-11(18)12-7-9-14(10-8-1... True \n", - "24 InChI=1S/C2H5NO2/c1-2(4)3-5/h5H,1H3,(H,3,4) True \n", - "25 InChI=1S/C9H6I3NO3/c1-3(14)13-8-5(11)2-4(10)6(... True \n", - "26 InChI=1S/C7H16NO2/c1-7(9)10-6-5-8(2,3)4/h5-6H2... True \n", - "27 InChI=1S/C5H9NO3S/c1-3(7)6-4(2-10)5(8)9/h4,10H... True \n", - "28 InChI=1S/C9H17NO4/c1-7(11)14-8(5-9(12)13)6-10(... True \n", - "29 InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)... True \n", - "30 InChI=1S/C21H26O3/c1-14(8-7-9-15(2)12-21(22)23... True \n", - "31 InChI=1S/C8H11N5O3/c9-8-11-6-5(7(15)12-8)10-3-... True \n", - "32 InChI=1S/C20H32N5O8P/c1-19(2,3)17(26)30-11-32-... True \n", - "33 InChI=1S/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2... True \n", - "34 InChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-1... True \n", - "35 InChI=1S/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(... True \n", - "36 InChI=1S/C3H9N3S/c4-1-2-7-3(5)6/h1-2,4H2,(H3,5,6) True \n", - "37 InChI=1S/C20H26N2O2/c1-3-10-11-8-14-17-20(12-6... True \n", - "38 InChI=1S/C3H7N3O4/c4-2(3(7)8)1-6(10)5-9/h2,10H... True \n", - "39 InChI=1S/C26H25F3N6O5/c1-10(30)24(37)31-11(2)2... True \n", - "40 InChI=1S/C12H15N3O2S/c1-3-6-18-8-4-5-9-10(7-8)... True \n", - "42 InChI=1S/C20H28O2/c1-15(8-6-9-16(2)14-19(21)22... True \n", - "43 InChI=1S/C4H6N4O3/c5-3(10)6-1-2(9)8-4(11)7-1/h... True \n", - "44 InChI=1S/C10H12N2O3/c1-3-5-10(6-4-2)7(13)11-9(... True \n", - "45 InChI=1S/C5H4N4O/c10-5-4-3(1-8-9-4)6-2-7-5/h1-... True \n", - "46 InChI=1S/C31H52O3/c1-21(2)13-10-14-22(3)15-11-... True \n", - "47 InChI=1S/C20H27N/c1-2-21(17-9-15-19-11-5-3-6-1... True \n", - "48 InChI=1S/C10H17N/c11-10-4-7-1-8(5-10)3-9(2-7)6... True \n", - "49 InChI=1S/C22H22N2O4/c1-15-14-16(2)24-21(23-15)... True \n", - "50 InChI=1S/C13H18Br2N2O/c14-9-5-8(13(16)12(15)6-... True \n", - "51 InChI=1S/C22H43N5O13/c23-2-1-8(29)20(36)27-7-3... True \n", - "52 InChI=1S/C6H8ClN7O/c7-2-4(9)13-3(8)1(12-2)5(15... True \n", - "53 InChI=1S/C22H27NO2/c24-21(25)13-3-1-2-8-16-23-... True \n", - "\n", - " smiles_before \\\n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", - "3 O=C(O)C(S)C(S)C(=O)O \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] \n", - "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O \n", - "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 \n", - "8 Nc1ccc(C(=O)O)cc1 \n", - "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 \n", - "10 O=c1[nH]cc(F)c(=O)[nH]1 \n", - "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 \n", - "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br \n", - "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N \n", - "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... \n", - "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1 \n", - "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... \n", - "19 CC(N)=O \n", - "20 CC(=O)Nc1ccc(O)cc1 \n", - "21 CC(=O)Nc1nnc(S(N)(=O)=O)s1 \n", - "22 CC(=O)O \n", - "23 CC(=O)c1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1 \n", - "24 CC(=O)NO \n", - "25 CC(=O)Nc1c(I)cc(I)c(C(=O)O)c1I \n", - "26 CC(=O)OCC[N+](C)(C)C \n", - "27 CC(=O)NC(CS)C(=O)O \n", - "28 CC(=O)OC(CC(=O)O)C[N+](C)(C)C \n", - "29 CC(=O)Oc1ccccc1C(=O)O \n", - "30 COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(=O)O)c(C)c1C \n", - "31 Nc1nc(=O)c2ncn(COCCO)c2[nH]1 \n", - "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO... \n", - "33 Nc1ncnc2[nH]cnc12 \n", - "34 Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O \n", - "35 Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O... \n", - "36 N=C(N)SCCN \n", - "37 CCC1C2CC3C4N(C)c5ccccc5C45CC(C2C5O)N3C1O \n", - "38 NC(CN(O)N=O)C(=O)O \n", - "39 CC(N)C(=O)NC(C)C(=O)NC1C2CN(c3nc4c(cc3F)c(=O)c... \n", - "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 \n", - "42 CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)O \n", - "43 NC(=O)NC1NC(=O)NC1=O \n", - "44 C=CCC1(CC=C)C(=O)NC(=O)NC1=O \n", - "45 O=c1nc[nH]c2cn[nH]c12 \n", - "46 CC(=O)Oc1c(C)c(C)c2c(c1C)CCC(C)(CCCC(C)CCCC(C)... \n", - "47 CCN(CCCc1ccccc1)CCCc1ccccc1 \n", - "48 NC12CC3CC(CC(C3)C1)C2 \n", - "49 COC(c1ccccc1)(c1ccccc1)C(Oc1nc(C)cc(C)n1)C(=O)O \n", - "50 Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1 \n", - "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... \n", - "52 N=C(N)NC(=O)c1nc(Cl)c(N)nc1N \n", - "53 O=C(O)CCCCCCNC1c2ccccc2CCc2ccccc21 \n", - "\n", - " Smiles 3 noChanges \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O True \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O True \n", - "3 O=C(O)C(S)C(S)C(=O)O True \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", - "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O True \n", - "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 True \n", - "8 Nc1ccc(C(=O)O)cc1 True \n", - "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 True \n", - "10 O=c1[nH]cc(F)c(=O)[nH]1 True \n", - "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 True \n", - "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br True \n", - "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F True \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N True \n", - "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... True \n", - "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1 True \n", - "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... True \n", - "19 CC(N)=O True \n", - "20 CC(=O)Nc1ccc(O)cc1 True \n", - "21 CC(=O)Nc1nnc(S(N)(=O)=O)s1 True \n", - "22 CC(=O)O True \n", - "23 CC(=O)c1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1 True \n", - "24 CC(=O)NO True \n", - "25 CC(=O)Nc1c(I)cc(I)c(C(=O)O)c1I True \n", - "26 CC(=O)OCC[N+](C)(C)C True \n", - "27 CC(=O)NC(CS)C(=O)O True \n", - "28 CC(=O)OC(CC(=O)O)C[N+](C)(C)C True \n", - "29 CC(=O)Oc1ccccc1C(=O)O True \n", - "30 COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(=O)O)c(C)c1C True \n", - "31 Nc1nc(=O)c2ncn(COCCO)c2[nH]1 True \n", - "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO... True \n", - "33 Nc1ncnc2[nH]cnc12 True \n", - "34 Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O True \n", - "35 Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O... True \n", - "36 N=C(N)SCCN True \n", - "37 CCC1C2CC3C4N(C)c5ccccc5C45CC(C2C5O)N3C1O True \n", - "38 NC(CN(O)N=O)C(=O)O True \n", - "39 CC(N)C(=O)NC(C)C(=O)NC1C2CN(c3nc4c(cc3F)c(=O)c... True \n", - "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 True \n", - "42 CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)O True \n", - "43 NC(=O)NC1NC(=O)NC1=O True \n", - "44 C=CCC1(CC=C)C(=O)NC(=O)NC1=O True \n", - "45 O=c1nc[nH]c2cn[nH]c12 True \n", - "46 CC(=O)Oc1c(C)c(C)c2c(c1C)CCC(C)(CCCC(C)CCCC(C)... True \n", - "47 CCN(CCCc1ccccc1)CCCc1ccccc1 True \n", - "48 NC12CC3CC(CC(C3)C1)C2 True \n", - "49 COC(c1ccccc1)(c1ccccc1)C(Oc1nc(C)cc(C)n1)C(=O)O True \n", - "50 Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1 True \n", - "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... True \n", - "52 N=C(N)NC(=O)c1nc(Cl)c(N)nc1N True \n", - "53 O=C(O)CCCCCCNC1c2ccccc2CCc2ccccc21 True " + " smiles_before Smiles 3 noChanges \n", + "5 C1COCCO1.OCC1OC(O)CC(O)C1O OCC1OC(O)CC(O)C1O False " ] }, - "execution_count": 90, + "execution_count": 125, "metadata": {}, "output_type": "execute_result" } @@ -2366,16 +1006,9 @@ "# getting the valid entries from the step before\n", "dataset = result2\n", "\n", - "# Create InchIs for evaluation\n", - "dataset['InchI_before'] = dataset['mol'].apply(convert_format.convert_mol_to_inchi)\n", - "\n", "# Perform remove_fragments on entries\n", "dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", "\n", - "# Create new InchI from the current state for evaluation of performed changes \n", - "dataset['InchI_after'] = dataset['mol_after'].apply(convert_format.convert_mol_to_inchi)\n", - "dataset['noChanges_inchi']= dataset['InchI_before'] == dataset['InchI_after']\n", - "\n", "# Create Smiles for evaluation\n", "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", "\n", @@ -2385,716 +1018,447 @@ "\n", "\n", "# Filter the failed entries\n", - "failed_step_3 = dataset[dataset['noChanges_inchi']== False]\n", + "failed_step_3 = dataset[dataset['noChanges']== False]\n", "failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n", "\n", - "result3 = dataset[dataset['noChanges_inchi']== True]\n", - "#result3 = result3[['IDs','Names','SMILEs','Failed_at']]\n", - "result3.head(50)\n", - "\n", - "#TODO: Subset of Mixtures, deletion from main set" + "# Safe entries that passed\n", + "result3 = dataset[dataset['noChanges']== True]\n", + "result3 = result3[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "failed_step_3.tail()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 4: Filter entires containing metals" ] }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 132, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:03] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit INFO: [11:09:52] WARNING: Omitted u FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:03] Running FragmentRemover\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit INFO: [11:09:52] Running MetalDisconnector\n", - "RDKit INFO: [11:09:52] Initializing MetalDisconnector\n", - "RDKit WARNING: [11:09:52] Running MetalDindefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Metal was disconnected\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Charges were rearranged; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Proton(s) added/removed; Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n", - "RDKit WARNING: [11:09:52] WARNING: Omitted undefined stereo\n" + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", + "RDKit INFO: [16:55:43] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", + "RDKit INFO: [16:57:59] Running MetalDisconnector\n", + "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n" ] }, { @@ -3123,90 +1487,48 @@ " SMILEs\n", " Failed_at\n", " mol\n", - " InchI_before\n", - " mol_after\n", - " InchI_after\n", - " noChanges_inchi\n", - " smiles_before\n", - " Smiles 3\n", - " noChanges\n", " \n", " \n", " \n", " \n", + " 195\n", + " 196\n", + " Ciprofibrate\n", + " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73170>\n", + " \n", + " \n", " 196\n", " 197\n", " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", - " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050e40>\n", - " InChI=1S/C17H18FN3O3/c18-13-7-11-14(8-15(13)20...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381045080>\n", - " InChI=1S/C17H18FN3O3/c18-13-7-11-14(8-15(13)20...\n", - " True\n", - " O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O\n", - " O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O\n", - " True\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f731c0>\n", " \n", " \n", " 197\n", " 198\n", " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", - " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050e90>\n", - " InChI=1S/C23H29ClFN3O4/c1-30-21-13-19(26)18(24...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381045120>\n", - " InChI=1S/C23H29ClFN3O4/c1-30-21-13-19(26)18(24...\n", - " True\n", - " COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)C...\n", - " COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)C...\n", - " True\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73210>\n", " \n", " \n", " 198\n", " 199\n", " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", - " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050ee0>\n", - " InChI=1S/C20H21FN2O/c1-23(2)11-3-10-20(17-5-7-...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810450d0>\n", - " InChI=1S/C20H21FN2O/c1-23(2)11-3-10-20(17-5-7-...\n", - " True\n", - " CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21\n", - " CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21\n", - " True\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73260>\n", " \n", " \n", " 199\n", " 200\n", " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", - " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050f30>\n", - " InChI=1S/C6H8O7/c7-3(8)1-6(13,5(11)12)2-4(9)10...\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381045170>\n", - " InChI=1S/C6H8O7/c7-3(8)1-6(13,5(11)12)2-4(9)10...\n", - " True\n", - " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", - " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", - " True\n", - " \n", - " \n", - " 200\n", - " 201\n", - " zirconium\n", - " CCO[Zr](OCC)(OCC)OCC\n", - " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4381050f80>\n", - " InChI=1S/4C2H5O.Zr/c4*1-2-3;/h4*2H2,1H3;/q4*-1;+4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f43810451c0>\n", - " InChI=1S/4C2H5O.Zr/c4*1-2-3;/h4*2H2,1H3;/q4*-1;+4\n", - " True\n", - " CCO[Zr](OCC)(OCC)OCC\n", - " CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]\n", - " False\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f4380f732b0>\n", " \n", " \n", "\n", @@ -3214,56 +1536,21 @@ ], "text/plain": [ " IDs Names SMILEs \\\n", + "195 196 Ciprofibrate CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O \n", "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", - "\n", - " Failed_at mol \\\n", - "196 4 \n", - "197 4 \n", - "198 4 \n", - "199 4 \n", - "200 4 \n", "\n", - " InchI_before \\\n", - "196 InChI=1S/C17H18FN3O3/c18-13-7-11-14(8-15(13)20... \n", - "197 InChI=1S/C23H29ClFN3O4/c1-30-21-13-19(26)18(24... \n", - "198 InChI=1S/C20H21FN2O/c1-23(2)11-3-10-20(17-5-7-... \n", - "199 InChI=1S/C6H8O7/c7-3(8)1-6(13,5(11)12)2-4(9)10... \n", - "200 InChI=1S/4C2H5O.Zr/c4*1-2-3;/h4*2H2,1H3;/q4*-1;+4 \n", - "\n", - " mol_after \\\n", - "196 \n", - "197 \n", - "198 \n", - "199 \n", - "200 \n", - "\n", - " InchI_after noChanges_inchi \\\n", - "196 InChI=1S/C17H18FN3O3/c18-13-7-11-14(8-15(13)20... True \n", - "197 InChI=1S/C23H29ClFN3O4/c1-30-21-13-19(26)18(24... True \n", - "198 InChI=1S/C20H21FN2O/c1-23(2)11-3-10-20(17-5-7-... True \n", - "199 InChI=1S/C6H8O7/c7-3(8)1-6(13,5(11)12)2-4(9)10... True \n", - "200 InChI=1S/4C2H5O.Zr/c4*1-2-3;/h4*2H2,1H3;/q4*-1;+4 True \n", - "\n", - " smiles_before \\\n", - "196 O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O \n", - "197 COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)C... \n", - "198 CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21 \n", - "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", - "200 CCO[Zr](OCC)(OCC)OCC \n", - "\n", - " Smiles 3 noChanges \n", - "196 O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O True \n", - "197 COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)C... True \n", - "198 CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21 True \n", - "199 O=C(O)CC(O)(CC(=O)O)C(=O)O True \n", - "200 CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4] False " + " Failed_at mol \n", + "195 0 \n", + "196 0 \n", + "197 0 \n", + "198 0 \n", + "199 0 " ] }, - "execution_count": 91, + "execution_count": 132, "metadata": {}, "output_type": "execute_result" } @@ -3272,58 +1559,111 @@ "# Setting up the taskNum \n", "taskNum = 4\n", "# getting the valid entries from the step before\n", - "dataset = result1[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "dataset = result3[['IDs','Names','SMILEs','Failed_at','mol']] #Load result1 subset to actually see this step perform\n", "\n", - "# Create InchIs for evaluation\n", - "dataset['InchI_before'] = dataset['mol'].apply(convert_format.convert_mol_to_inchi)\n", + "# Create Smiles for evaluation\n", + "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", "\n", "# Perform disconnect_metals on entries\n", "dataset['mol_after'] = dataset['mol'].apply(disconnect_metals)\n", "\n", - "# Create new InchI from the current state for evaluation of performed changes \n", - "dataset['InchI_after'] = dataset['mol_after'].apply(convert_format.convert_mol_to_inchi)\n", - "dataset['noChanges_inchi']= dataset['InchI_before'] == dataset['InchI_after']\n", - "\n", - "# Create Smiles for evaluation\n", - "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", - "\n", "# Create new SMILEs from the current state for evaluation of performed changes \n", - "dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", + "dataset['Smiles 4'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 4']\n", "\n", "# Filter the failed entries\n", - "failed_step_4 = dataset[dataset['noChanges_inchi']== True]\n", + "failed_step_4 = dataset[dataset['noChanges']== False]\n", "failed_step_4['Failed_at'] = failed_step_4['Failed_at'].apply(failMarker)\n", - "failed_step_4.tail()\n" + "failed_step_4.tail()\n", + "\n", + "# Safe entries that passed\n", + "result4 = dataset[dataset['noChanges']== True]\n", + "result4 = result4[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "result4.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 5: Filter inorganics again \n", + "This step actually doesn't make much sense here, since no actual changes happend to the entries in this first step\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 134, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolInorganics2
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [IDs, Names, SMILEs, Failed_at, mol, Inorganics2]\n", + "Index: []" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Pseudocode for filtering metals \n", - "new_data = no_fragement_record\n", - "metal_true = []\n", - "metal_false = []\n", + "# Setting up the taskNum \n", + "taskNum = 5\n", + "# getting the valid entries from the step before\n", + "dataset = result4\n", "\n", - "for x in new_data:\n", - " convert_smiles_to_mol(x)\n", - " if detect_metals(x)==\"False\":\n", - " metal_false.append(x)\n", - " elif detect_metals(x)==\"True\":\n", - " metal_true.append(x)\n", - " else:\n", - " raise Exception(\"Something is wrong with\" x)\n", - "return metal_true,metal_false" + "# Check for inorganic structures in the entries\n", + "dataset['Inorganics2'] = dataset['mol'].apply(detect_inorganic)\n", + "\n", + "# Filter the failed entries\n", + "failed_step_5 = dataset[dataset['Inorganics2']== True]\n", + "failed_step_5['Failed_at'] = failed_step_5['Failed_at'].apply(failMarker)\n", + "\n", + "# Safe entries that passed\n", + "result5 = dataset[dataset['Inorganics2']== False]\n", + "failed_step_5.tail(15)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Structural Conversion and Cleaning\n", + "### Step 3: Structural Conversion and Cleaning\n", + "--------------------------------------------------\n", "\n", "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not beeing desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", "In case that we want to continue working on the converted records, we should perform the following steps:\n", From 63ed4eb080004dfb254bb8affb956438f3732a4d Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Thu, 8 Apr 2021 21:12:12 +0200 Subject: [PATCH 21/55] added data to evaluate functionality --- docs/tutorials/data/standardization_test_data.csv | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/tutorials/data/standardization_test_data.csv b/docs/tutorials/data/standardization_test_data.csv index f6c14f34..32a949d6 100644 --- a/docs/tutorials/data/standardization_test_data.csv +++ b/docs/tutorials/data/standardization_test_data.csv @@ -4,7 +4,7 @@ IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS 3,1-alpha-Hydroxycholecalciferol,CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C,1,0,0 4,"2,3-Dimercaptosuccinic acid",OC(=O)C(S)C(S)C(O)=O,1,1,0 5,"2,4,6-Trinitrotoluene",Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O,1,0,0 -6,2-Deoxy-D-glucose,OCC1OC(O)CC(O)C1O,1,1,0 +6,2-Deoxy-D-glucose,OCC1OC(O)CC(O)C1O.O1CCOCC1,1,1,0 7,2'-fluoro-5-methylarabinosyluracil,CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O,1,0,0 8,2-Methoxyestradiol,COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O,1,1,0 9,4-aminobenzoic acid,Nc1ccc(cc1)C(O)=O,0,1,0 @@ -199,3 +199,6 @@ IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS 198,Cisapride,COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)cc1OC,1,0,0 199,Citalopram,CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1,0,1,0 200,Citric acid,OC(=O)CC(O)(CC(O)=O)C(O)=O,0,1,0 +201,zirconium,CCO[Zr](OCC)(OCC)OCC,0,0,0 +202,hemoglobin,CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=N5)C=C1N2)C=C)C)C)CCC(=O)[O-])C(=C3C)CCC(=O)O)C=C.[Fe+2],0,0,0 +203,test_salt,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 \ No newline at end of file From d09c4ae04d6ca77754e416de84705bf309183cf0 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Thu, 8 Apr 2021 21:13:03 +0200 Subject: [PATCH 22/55] Salt Remover fails -> RDKit ERROR: Empty structure --- docs/tutorials/standardization.ipynb | 2298 ++++++++++++++------------ 1 file changed, 1208 insertions(+), 1090 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 48b9e0e3..605cce4b 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -36,7 +36,7 @@ "'/home/allen/dev/opencadd/docs/tutorials'" ] }, - "execution_count": 106, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -58,12 +58,13 @@ "\n", "#import modules and Standardization API functions needed\n", "from rdkit import Chem\n", - "from opencadd.compounds.standardization import convert_format,handle_fragments,disconnect_metals,detect_inorganic,remove_salts" + "#from rdkit.Chem.PandasTools import RemoveSaltsFromFrame\n", + "from opencadd.compounds.standardization import convert_format,handle_fragments,disconnect_metals,detect_inorganic,remove_salts,normalize" ] }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -87,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -119,38 +120,38 @@ " \n", " \n", " \n", - " 0\n", - " 1\n", - " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " 198\n", + " 199\n", + " Citalopram\n", + " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", " \n", " \n", - " 1\n", - " 2\n", - " 17-Methyltestosterone\n", - " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", + " 199\n", + " 200\n", + " Citric acid\n", + " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", " \n", " \n", - " 2\n", - " 3\n", - " 1-alpha-Hydroxycholecalciferol\n", - " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", + " 200\n", + " 201\n", + " zirconium\n", + " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", " \n", " \n", - " 3\n", - " 4\n", - " 2,3-Dimercaptosuccinic acid\n", - " OC(=O)C(S)C(S)C(O)=O\n", + " 201\n", + " 202\n", + " hemoglobin\n", + " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 0\n", " \n", " \n", - " 4\n", - " 5\n", - " 2,4,6-Trinitrotoluene\n", - " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", + " 202\n", + " 203\n", + " test_salt\n", + " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", " \n", " \n", @@ -158,22 +159,22 @@ "" ], "text/plain": [ - " IDs Names \\\n", - "0 1 (R)-Roscovitine \n", - "1 2 17-Methyltestosterone \n", - "2 3 1-alpha-Hydroxycholecalciferol \n", - "3 4 2,3-Dimercaptosuccinic acid \n", - "4 5 2,4,6-Trinitrotoluene \n", + " IDs Names SMILEs \\\n", + "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", + "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", + "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", + "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", - " SMILEs Failed_at \n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 " + " Failed_at \n", + "198 0 \n", + "199 0 \n", + "200 0 \n", + "201 0 \n", + "202 0 " ] }, - "execution_count": 114, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -197,7 +198,7 @@ "\n", "\n", "#Show the current form of the main-dataframe\n", - "dataset.head()" + "dataset.tail()" ] }, { @@ -230,28 +231,28 @@ }, { "cell_type": "code", - "execution_count": 115, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [16:27:0[16:28:30] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [16:28:30] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n", - ":9: SettingWithCopyWarning: \n", + ":9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -289,20 +290,12 @@ " \n", " \n", " \n", - " 186\n", - " 187\n", - " Chlorpropamide\n", - " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6ce40>\n", - " \n", - " \n", " 187\n", " 188\n", " Chlortetracycline\n", " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6ce90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301030>\n", " \n", " \n", " 188\n", @@ -310,7 +303,7 @@ " Chlorzoxazone\n", " Oc1nc2cc(Cl)ccc2o1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6cee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301080>\n", " \n", " \n", " 189\n", @@ -318,7 +311,7 @@ " Cholestyramine\n", " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6cf30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3010d0>\n", " \n", " \n", " 190\n", @@ -326,7 +319,7 @@ " Chondroitin sulfate\n", " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f6cf80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301120>\n", " \n", " \n", " 191\n", @@ -334,7 +327,7 @@ " Cidofovir\n", " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73030>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301170>\n", " \n", " \n", " 192\n", @@ -342,7 +335,7 @@ " Cimetidine\n", " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3011c0>\n", " \n", " \n", " 193\n", @@ -350,7 +343,7 @@ " Cinchophen\n", " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f730d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301210>\n", " \n", " \n", " 194\n", @@ -358,7 +351,7 @@ " Cinoxacin\n", " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301260>\n", " \n", " \n", " 195\n", @@ -366,7 +359,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3012b0>\n", " \n", " \n", " 196\n", @@ -374,7 +367,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f731c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301300>\n", " \n", " \n", " 197\n", @@ -382,7 +375,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301350>\n", " \n", " \n", " 198\n", @@ -390,7 +383,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3013a0>\n", " \n", " \n", " 199\n", @@ -398,7 +391,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f732b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3013f0>\n", " \n", " \n", " 200\n", @@ -406,7 +399,7 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301440>\n", " \n", " \n", " 201\n", @@ -414,7 +407,15 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f4380f73350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301490>\n", + " \n", + " \n", + " 202\n", + " 203\n", + " test_salt\n", + " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3014e0>\n", " \n", " \n", "\n", @@ -422,7 +423,6 @@ ], "text/plain": [ " IDs Names \\\n", - "186 187 Chlorpropamide \n", "187 188 Chlortetracycline \n", "188 189 Chlorzoxazone \n", "189 190 Cholestyramine \n", @@ -438,9 +438,9 @@ "199 200 Citric acid \n", "200 201 zirconium \n", "201 202 hemoglobin \n", + "202 203 test_salt \n", "\n", " SMILEs Failed_at \\\n", - "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", "188 Oc1nc2cc(Cl)ccc2o1 0 \n", "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", @@ -456,27 +456,28 @@ "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", "200 CCO[Zr](OCC)(OCC)OCC 0 \n", "201 CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... 0 \n", + "202 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 0 \n", "\n", " mol \n", - "186 \n", - "187 \n", - "188 \n", - "189 \n", - "190 \n", - "191 \n", - "192 \n", - "193 \n", - "194 \n", - "195 \n", - "196 \n", - "197 \n", - "198 \n", - "199 \n", - "200 \n", - "201 " + "187 \n", + "188 \n", + "189 \n", + "190 \n", + "191 \n", + "192 \n", + "193 \n", + "194 \n", + "195 \n", + "196 \n", + "197 \n", + "198 \n", + "199 \n", + "200 \n", + "201 \n", + "202 " ] }, - "execution_count": 115, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -526,110 +527,9 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":11: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolInorganics
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]2<rdkit.Chem.rdchem.Mol object at 0x7f4380f6e760>True
114115BortezomibCC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O2<rdkit.Chem.rdchem.Mol object at 0x7f4380f5d2b0>True
200201zirconiumCCO[Zr](OCC)(OCC)OCC2<rdkit.Chem.rdchem.Mol object at 0x7f4380f73300>True
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...2<rdkit.Chem.rdchem.Mol object at 0x7f4380f73350>True
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs \\\n", - "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", - "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", - "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", - "\n", - " Failed_at mol Inorganics \n", - "0 2 True \n", - "114 2 True \n", - "200 2 True \n", - "201 2 True " - ] - }, - "execution_count": 135, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Setting up the taskNum \n", "taskNum = 2\n", @@ -657,349 +557,9 @@ }, { "cell_type": "code", - "execution_count": 125, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:47:09] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Removed fragment: 1,4-dioxane\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - "RDKit INFO: [16:49:20] Running FragmentRemover\n", - ":7: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", - ":10: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", - ":13: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - ":14: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", - ":19: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolInorganicsmol_aftersmiles_beforeSmiles 3noChanges
562-Deoxy-D-glucoseOCC1OC(O)CC(O)C1O.O1CCOCC13<rdkit.Chem.rdchem.Mol object at 0x7f4380f6e3a0>False<rdkit.Chem.rdchem.Mol object at 0x7f433178f170>C1COCCO1.OCC1OC(O)CC(O)C1OOCC1OC(O)CC(O)C1OFalse
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs Failed_at \\\n", - "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 3 \n", - "\n", - " mol Inorganics \\\n", - "5 False \n", - "\n", - " mol_after \\\n", - "5 \n", - "\n", - " smiles_before Smiles 3 noChanges \n", - "5 C1COCCO1.OCC1OC(O)CC(O)C1O OCC1OC(O)CC(O)C1O False " - ] - }, - "execution_count": 125, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Setting up the taskNum \n", "taskNum = 3\n", @@ -1037,524 +597,9 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:55:43] Initializing MetalDisconnector\n", - "RDKit INFO: [16:55:43] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n", - "RDKit INFO: [16:57:59] Running MetalDisconnector\n", - "RDKit INFO: [16:57:59] Initializing MetalDisconnector\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmol
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f4380f73170>
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7f4380f731c0>
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0<rdkit.Chem.rdchem.Mol object at 0x7f4380f73210>
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10<rdkit.Chem.rdchem.Mol object at 0x7f4380f73260>
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f4380f732b0>
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs \\\n", - "195 196 Ciprofibrate CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O \n", - "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", - "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", - "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", - "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", - "\n", - " Failed_at mol \n", - "195 0 \n", - "196 0 \n", - "197 0 \n", - "198 0 \n", - "199 0 " - ] - }, - "execution_count": 132, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Setting up the taskNum \n", "taskNum = 4\n", @@ -1592,9 +637,685 @@ }, { "cell_type": "code", - "execution_count": 134, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Setting up the taskNum \n", + "taskNum = 5\n", + "# getting the valid entries from the step before\n", + "dataset = result4\n", + "\n", + "# Check for inorganic structures in the entries\n", + "dataset['Inorganics2'] = dataset['mol'].apply(detect_inorganic)\n", + "\n", + "# Filter the failed entries\n", + "failed_step_5 = dataset[dataset['Inorganics2']== True]\n", + "failed_step_5['Failed_at'] = failed_step_5['Failed_at'].apply(failMarker)\n", + "\n", + "# Safe entries that passed\n", + "result5 = dataset[dataset['Inorganics2']== False]\n", + "failed_step_5.tail(15)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Structural Conversion and Cleaning\n", + "--------------------------------------------------\n", + "\n", + "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not beeing desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", + "In case that we want to continue working on the converted records, we should perform the following steps:\n", + "- check if records contain compounds with presence of metals --> difficult case, filter out (already done this - one step ahead)\n", + "- removing the salts from the record\n", + "- neutralize the record (normalization or basic standardization)\n", + "- neutralize the charges\n", + "- to be discussed: the adding/removing of hydrogens, both got pros and cons (pro addingH --> higher prediction performances / con addingH --> may introduce noise --> less reliable models)(removingH might introduce erros in calculating descriptors, due to it might not handle certain cases well)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Structural coversion\n", + "# Cleaning/removal of salts\n", + "# Functions remove_salts\n", + "# normalize_molecules\n", + "# handle_charges\n", + "# handle_hydrogens" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 6: Removing salts sadly fails ATM" + ] + }, + { + "cell_type": "code", + "execution_count": 11, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", + "RDKit ERROR: [20:56:10] ERROR: Empty structure\n" + ] + }, { "data": { "text/html": [ @@ -1621,72 +1342,469 @@ " SMILEs\n", " Failed_at\n", " mol\n", - " Inorganics2\n", + " removed_salts\n", " \n", " \n", " \n", + " \n", + " 0\n", + " 1\n", + " (R)-Roscovitine\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec2f1e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1ce3fb7760>\n", + " \n", + " \n", + " 1\n", + " 2\n", + " 17-Methyltestosterone\n", + " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305620>\n", + " \n", + " \n", + " 2\n", + " 3\n", + " 1-alpha-Hydroxycholecalciferol\n", + " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305670>\n", + " \n", + " \n", + " 3\n", + " 4\n", + " 2,3-Dimercaptosuccinic acid\n", + " OC(=O)C(S)C(S)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3056c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3056c0>\n", + " \n", + " \n", + " 4\n", + " 5\n", + " 2,4,6-Trinitrotoluene\n", + " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305710>\n", + " \n", + " \n", + " 5\n", + " 6\n", + " 2-Deoxy-D-glucose\n", + " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305760>\n", + " \n", + " \n", + " 6\n", + " 7\n", + " 2'-fluoro-5-methylarabinosyluracil\n", + " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3057b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3057b0>\n", + " \n", + " \n", + " 7\n", + " 8\n", + " 2-Methoxyestradiol\n", + " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305800>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305800>\n", + " \n", + " \n", + " 8\n", + " 9\n", + " 4-aminobenzoic acid\n", + " Nc1ccc(cc1)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305850>\n", + " \n", + " \n", + " 9\n", + " 10\n", + " 4-Hydroxytamoxifen\n", + " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3058a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3058a0>\n", + " \n", + " \n", + " 10\n", + " 11\n", + " 5 fluorouracil\n", + " FC1=CNC(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3058f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3058f0>\n", + " \n", + " \n", + " 11\n", + " 12\n", + " 5-Azacitidine\n", + " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305940>\n", + " \n", + " \n", + " 12\n", + " 13\n", + " 5-Bromouracil\n", + " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305990>\n", + " \n", + " \n", + " 13\n", + " 14\n", + " 5-fluoro-2'-deoxyuridine\n", + " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3059e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3059e0>\n", + " \n", + " \n", + " 15\n", + " 16\n", + " Acadesine\n", + " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305a30>\n", + " \n", + " \n", + " 16\n", + " 17\n", + " Acarbose\n", + " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305a80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305a80>\n", + " \n", + " \n", + " 17\n", + " 18\n", + " Acebutolol\n", + " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305ad0>\n", + " \n", + " \n", + " 18\n", + " 19\n", + " Acenocoumarol\n", + " CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305b20>\n", + " \n", + " \n", + " 19\n", + " 20\n", + " Acetamide\n", + " CC(N)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305b70>\n", + " \n", + " \n", + " 20\n", + " 21\n", + " Acetaminophen\n", + " CC(=O)Nc1ccc(O)cc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305bc0>\n", + " \n", " \n", "\n", "" ], "text/plain": [ - "Empty DataFrame\n", - "Columns: [IDs, Names, SMILEs, Failed_at, mol, Inorganics2]\n", - "Index: []" + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", + "5 6 2-Deoxy-D-glucose \n", + "6 7 2'-fluoro-5-methylarabinosyluracil \n", + "7 8 2-Methoxyestradiol \n", + "8 9 4-aminobenzoic acid \n", + "9 10 4-Hydroxytamoxifen \n", + "10 11 5 fluorouracil \n", + "11 12 5-Azacitidine \n", + "12 13 5-Bromouracil \n", + "13 14 5-fluoro-2'-deoxyuridine \n", + "15 16 Acadesine \n", + "16 17 Acarbose \n", + "17 18 Acebutolol \n", + "18 19 Acenocoumarol \n", + "19 20 Acetamide \n", + "20 21 Acetaminophen \n", + "\n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", + "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", + "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", + "8 Nc1ccc(cc1)C(O)=O 0 \n", + "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", + "10 FC1=CNC(=O)NC1=O 0 \n", + "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", + "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", + "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", + "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O 0 \n", + "18 CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O 0 \n", + "19 CC(N)=O 0 \n", + "20 CC(=O)Nc1ccc(O)cc1 0 \n", + "\n", + " mol \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "\n", + " removed_salts \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 " ] }, - "execution_count": 134, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Setting up the taskNum \n", - "taskNum = 5\n", + "taskNum = 6\n", "# getting the valid entries from the step before\n", - "dataset = result4\n", - "\n", - "# Check for inorganic structures in the entries\n", - "dataset['Inorganics2'] = dataset['mol'].apply(detect_inorganic)\n", - "\n", - "# Filter the failed entries\n", - "failed_step_5 = dataset[dataset['Inorganics2']== True]\n", - "failed_step_5['Failed_at'] = failed_step_5['Failed_at'].apply(failMarker)\n", + "dataset = result1\n", + "#dataset.head(100)\n", + "dataset['removed_salts'] = dataset['mol'].apply(remove_salts)\n", + "dataset.head(20)\n", "\n", - "# Safe entries that passed\n", - "result5 = dataset[dataset['Inorganics2']== False]\n", - "failed_step_5.tail(15)" + "#dataset['removed_salts'] = RemoveSaltsFromFrame(dataset,molCol='mol')\n", + "#where_salt = dataset[dataset['removed_salts'].notna()]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "test = '[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn]'\n", + "mol = convert_format.convert_smiles_to_mol(test)\n", + "mol\n", + "salt_remover = remove_salts(mol)\n", + "salt_remover" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3: Structural Conversion and Cleaning\n", - "--------------------------------------------------\n", - "\n", - "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not beeing desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", - "In case that we want to continue working on the converted records, we should perform the following steps:\n", - "- check if records contain compounds with presence of metals --> difficult case, filter out (already done this - one step ahead)\n", - "- removing the salts from the record\n", - "- neutralize the record (normalization or basic standardization)\n", - "- neutralize the charges\n", - "- to be discussed: the adding/removing of hydrogens, both got pros and cons (pro addingH --> higher prediction performances / con addingH --> may introduce noise --> less reliable models)(removingH might introduce erros in calculating descriptors, due to it might not handle certain cases well)\n", - "\n" + "#### Task 7: Normalize molecules" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolremoved_saltsnormalized
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]0<rdkit.Chem.rdchem.Mol object at 0x7f1cec2f1e90><rdkit.Chem.rdchem.Mol object at 0x7f1ce3fb7760><rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec0ad0>
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C0<rdkit.Chem.rdchem.Mol object at 0x7f1cec305620><rdkit.Chem.rdchem.Mol object at 0x7f1cec305620><rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec5080>
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C0<rdkit.Chem.rdchem.Mol object at 0x7f1cec305670><rdkit.Chem.rdchem.Mol object at 0x7f1cec305670><rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec5440>
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f1cec3056c0><rdkit.Chem.rdchem.Mol object at 0x7f1cec3056c0><rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec5260>
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f1cec305710><rdkit.Chem.rdchem.Mol object at 0x7f1cec305710><rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec5490>
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", + "\n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "\n", + " mol \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "\n", + " removed_salts \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "\n", + " normalized \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Structural coversion\n", - "# Cleaning/removal of salts\n", - "# Functions remove_salts\n", - "# normalize_molecules\n", - "# handle_charges\n", - "# handle_hydrogens" + "# Setting up the taskNum \n", + "taskNum = 7\n", + "# getting the valid entries from the step before\n", + "dataset = result1\n", + "#dataset.head(100)\n", + "dataset['normalized'] = dataset['mol'].apply(normalize)\n", + "dataset.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 8: Charges and Hydrogens" ] }, { From 44a02c661b26694f0d1b8211b5a771249f203260 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Fri, 9 Apr 2021 12:18:20 +0200 Subject: [PATCH 23/55] more entries to test --- docs/tutorials/data/standardization_test_data.csv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/tutorials/data/standardization_test_data.csv b/docs/tutorials/data/standardization_test_data.csv index 32a949d6..24065072 100644 --- a/docs/tutorials/data/standardization_test_data.csv +++ b/docs/tutorials/data/standardization_test_data.csv @@ -201,4 +201,5 @@ IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS 200,Citric acid,OC(=O)CC(O)(CC(O)=O)C(O)=O,0,1,0 201,zirconium,CCO[Zr](OCC)(OCC)OCC,0,0,0 202,hemoglobin,CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=N5)C=C1N2)C=C)C)C)CCC(=O)[O-])C(=C3C)CCC(=O)O)C=C.[Fe+2],0,0,0 -203,test_salt,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 \ No newline at end of file +203,test_salt,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 +204,test_duplicate,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 \ No newline at end of file From bfef14744fa9f64d3f5dc4821328fe073583d99b Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Fri, 9 Apr 2021 12:19:28 +0200 Subject: [PATCH 24/55] remove duplicates, generate canonical tautomer --- docs/tutorials/standardization.ipynb | 2940 ++++++++++++++++++-------- 1 file changed, 2067 insertions(+), 873 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 605cce4b..d4bf4eba 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -59,7 +59,7 @@ "#import modules and Standardization API functions needed\n", "from rdkit import Chem\n", "#from rdkit.Chem.PandasTools import RemoveSaltsFromFrame\n", - "from opencadd.compounds.standardization import convert_format,handle_fragments,disconnect_metals,detect_inorganic,remove_salts,normalize" + "from opencadd.compounds.standardization import convert_format,handle_fragments,disconnect_metals,detect_inorganic,remove_salts,normalize,handle_tautomers" ] }, { @@ -88,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -120,13 +120,6 @@ " \n", " \n", " \n", - " 198\n", - " 199\n", - " Citalopram\n", - " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", - " 0\n", - " \n", - " \n", " 199\n", " 200\n", " Citric acid\n", @@ -154,27 +147,34 @@ " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", " \n", + " \n", + " 203\n", + " 204\n", + " test_duplicate\n", + " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " 0\n", + " \n", " \n", "\n", "" ], "text/plain": [ - " IDs Names SMILEs \\\n", - "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", - "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", - "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", - "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + " IDs Names SMILEs \\\n", + "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", + "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", + "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at \n", - "198 0 \n", "199 0 \n", "200 0 \n", "201 0 \n", - "202 0 " + "202 0 \n", + "203 0 " ] }, - "execution_count": 4, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -231,28 +231,28 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:54:12] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n", - ":9: SettingWithCopyWarning: \n", + ":9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -290,20 +290,12 @@ " \n", " \n", " \n", - " 187\n", - " 188\n", - " Chlortetracycline\n", - " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301030>\n", - " \n", - " \n", " 188\n", " 189\n", " Chlorzoxazone\n", " Oc1nc2cc(Cl)ccc2o1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532af80>\n", " \n", " \n", " 189\n", @@ -311,7 +303,7 @@ " Cholestyramine\n", " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3010d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b030>\n", " \n", " \n", " 190\n", @@ -319,7 +311,7 @@ " Chondroitin sulfate\n", " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b080>\n", " \n", " \n", " 191\n", @@ -327,7 +319,7 @@ " Cidofovir\n", " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b0d0>\n", " \n", " \n", " 192\n", @@ -335,7 +327,7 @@ " Cimetidine\n", " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3011c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b120>\n", " \n", " \n", " 193\n", @@ -343,7 +335,7 @@ " Cinchophen\n", " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b170>\n", " \n", " \n", " 194\n", @@ -351,7 +343,7 @@ " Cinoxacin\n", " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b1c0>\n", " \n", " \n", " 195\n", @@ -359,7 +351,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3012b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b210>\n", " \n", " \n", " 196\n", @@ -367,7 +359,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b260>\n", " \n", " \n", " 197\n", @@ -375,7 +367,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b2b0>\n", " \n", " \n", " 198\n", @@ -383,7 +375,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3013a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b300>\n", " \n", " \n", " 199\n", @@ -391,7 +383,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3013f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b350>\n", " \n", " \n", " 200\n", @@ -399,7 +391,7 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b3a0>\n", " \n", " \n", " 201\n", @@ -407,7 +399,7 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec301490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b3f0>\n", " \n", " \n", " 202\n", @@ -415,7 +407,15 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3014e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b440>\n", + " \n", + " \n", + " 203\n", + " 204\n", + " test_duplicate\n", + " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb532b490>\n", " \n", " \n", "\n", @@ -423,7 +423,6 @@ ], "text/plain": [ " IDs Names \\\n", - "187 188 Chlortetracycline \n", "188 189 Chlorzoxazone \n", "189 190 Cholestyramine \n", "190 191 Chondroitin sulfate \n", @@ -439,9 +438,9 @@ "200 201 zirconium \n", "201 202 hemoglobin \n", "202 203 test_salt \n", + "203 204 test_duplicate \n", "\n", " SMILEs Failed_at \\\n", - "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", "188 Oc1nc2cc(Cl)ccc2o1 0 \n", "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", @@ -457,27 +456,28 @@ "200 CCO[Zr](OCC)(OCC)OCC 0 \n", "201 CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... 0 \n", "202 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 0 \n", + "203 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 0 \n", "\n", " mol \n", - "187 \n", - "188 \n", - "189 \n", - "190 \n", - "191 \n", - "192 \n", - "193 \n", - "194 \n", - "195 \n", - "196 \n", - "197 \n", - "198 \n", - "199 \n", - "200 \n", - "201 \n", - "202 " + "188 \n", + "189 \n", + "190 \n", + "191 \n", + "192 \n", + "193 \n", + "194 \n", + "195 \n", + "196 \n", + "197 \n", + "198 \n", + "199 \n", + "200 \n", + "201 \n", + "202 \n", + "203 " ] }, - "execution_count": 5, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -527,9 +527,121 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":11: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolInorganics
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]2<rdkit.Chem.rdchem.Mol object at 0x7febb5413da0>True
114115BortezomibCC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O2<rdkit.Chem.rdchem.Mol object at 0x7febb5380bc0>True
200201zirconiumCCO[Zr](OCC)(OCC)OCC2<rdkit.Chem.rdchem.Mol object at 0x7febb537c6c0>True
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...2<rdkit.Chem.rdchem.Mol object at 0x7febb537c710>True
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....2<rdkit.Chem.rdchem.Mol object at 0x7febb537c760>True
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs \\\n", + "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", + "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", + "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", + "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "\n", + " Failed_at mol Inorganics \n", + "0 2 True \n", + "114 2 True \n", + "200 2 True \n", + "201 2 True \n", + "202 2 True " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Setting up the taskNum \n", "taskNum = 2\n", @@ -557,9 +669,231 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Removed fragment: 1,4-dioxane\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + ":7: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", + ":10: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + ":13: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", + ":14: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", + ":19: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolInorganicsmol_aftersmiles_beforeSmiles 3noChanges
562-Deoxy-D-glucoseOCC1OC(O)CC(O)C1O.O1CCOCC13<rdkit.Chem.rdchem.Mol object at 0x7febb5373a30>False<rdkit.Chem.rdchem.Mol object at 0x7febb53a74e0>C1COCCO1.OCC1OC(O)CC(O)C1OOCC1OC(O)CC(O)C1OFalse
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs Failed_at \\\n", + "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 3 \n", + "\n", + " mol Inorganics \\\n", + "5 False \n", + "\n", + " mol_after \\\n", + "5 \n", + "\n", + " smiles_before Smiles 3 noChanges \n", + "5 C1COCCO1.OCC1OC(O)CC(O)C1O OCC1OC(O)CC(O)C1O False " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Setting up the taskNum \n", "taskNum = 3\n", @@ -597,87 +931,656 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Setting up the taskNum \n", - "taskNum = 4\n", - "# getting the valid entries from the step before\n", - "dataset = result3[['IDs','Names','SMILEs','Failed_at','mol']] #Load result1 subset to actually see this step perform\n", - "\n", - "# Create Smiles for evaluation\n", - "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", - "\n", - "# Perform disconnect_metals on entries\n", - "dataset['mol_after'] = dataset['mol'].apply(disconnect_metals)\n", - "\n", - "# Create new SMILEs from the current state for evaluation of performed changes \n", - "dataset['Smiles 4'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 4']\n", - "\n", - "# Filter the failed entries\n", - "failed_step_4 = dataset[dataset['noChanges']== False]\n", - "failed_step_4['Failed_at'] = failed_step_4['Failed_at'].apply(failMarker)\n", - "failed_step_4.tail()\n", - "\n", - "# Safe entries that passed\n", - "result4 = dataset[dataset['noChanges']== True]\n", - "result4 = result4[['IDs','Names','SMILEs','Failed_at','mol']]\n", - "result4.tail()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Task 5: Filter inorganics again \n", - "This step actually doesn't make much sense here, since no actual changes happend to the entries in this first step\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Setting up the taskNum \n", - "taskNum = 5\n", - "# getting the valid entries from the step before\n", - "dataset = result4\n", - "\n", - "# Check for inorganic structures in the entries\n", - "dataset['Inorganics2'] = dataset['mol'].apply(detect_inorganic)\n", - "\n", - "# Filter the failed entries\n", - "failed_step_5 = dataset[dataset['Inorganics2']== True]\n", - "failed_step_5['Failed_at'] = failed_step_5['Failed_at'].apply(failMarker)\n", - "\n", - "# Safe entries that passed\n", - "result5 = dataset[dataset['Inorganics2']== False]\n", - "failed_step_5.tail(15)" - ] - }, - { - "cell_type": "markdown", + "execution_count": 8, "metadata": {}, - "source": [ - "### Step 3: Structural Conversion and Cleaning\n", - "--------------------------------------------------\n", - "\n", - "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not beeing desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", - "In case that we want to continue working on the converted records, we should perform the following steps:\n", - "- check if records contain compounds with presence of metals --> difficult case, filter out (already done this - one step ahead)\n", - "- removing the salts from the record\n", - "- neutralize the record (normalization or basic standardization)\n", - "- neutralize the charges\n", - "- to be discussed: the adding/removing of hydrogens, both got pros and cons (pro addingH --> higher prediction performances / con addingH --> may introduce noise --> less reliable models)(removingH might introduce erros in calculating descriptors, due to it might not handle certain cases well)\n", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:22] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:23] Running FragmentRemover\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n", + "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", + "RDKit INFO: [11:54:38] Running MetalDisconnector\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmol
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7febb537c530>
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7febb537c580>
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0<rdkit.Chem.rdchem.Mol object at 0x7febb537c5d0>
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10<rdkit.Chem.rdchem.Mol object at 0x7febb537c620>
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7febb537c670>
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs \\\n", + "195 196 Ciprofibrate CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O \n", + "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", + "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", + "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", + "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", + "\n", + " Failed_at mol \n", + "195 0 \n", + "196 0 \n", + "197 0 \n", + "198 0 \n", + "199 0 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setting up the taskNum \n", + "taskNum = 4\n", + "# getting the valid entries from the step before\n", + "dataset = result3[['IDs','Names','SMILEs','Failed_at','mol']] #Load result1 subset to actually see this step perform\n", + "\n", + "# Create Smiles for evaluation\n", + "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + "\n", + "# Perform disconnect_metals on entries\n", + "dataset['mol_after'] = dataset['mol'].apply(disconnect_metals)\n", + "\n", + "# Create new SMILEs from the current state for evaluation of performed changes \n", + "dataset['Smiles 4'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 4']\n", + "\n", + "# Filter the failed entries\n", + "failed_step_4 = dataset[dataset['noChanges']== False]\n", + "failed_step_4['Failed_at'] = failed_step_4['Failed_at'].apply(failMarker)\n", + "failed_step_4.tail()\n", + "\n", + "# Safe entries that passed\n", + "result4 = dataset[dataset['noChanges']== True]\n", + "result4 = result4[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "result4.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 5: Filter inorganics again \n", + "This step actually doesn't make much sense here, since no actual changes happend to the entries in this first step\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolInorganics2
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [IDs, Names, SMILEs, Failed_at, mol, Inorganics2]\n", + "Index: []" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setting up the taskNum \n", + "taskNum = 5\n", + "# getting the valid entries from the step before\n", + "dataset = result4\n", + "\n", + "# Check for inorganic structures in the entries\n", + "dataset['Inorganics2'] = dataset['mol'].apply(detect_inorganic)\n", + "\n", + "# Filter the failed entries\n", + "failed_step_5 = dataset[dataset['Inorganics2']== True]\n", + "failed_step_5['Failed_at'] = failed_step_5['Failed_at'].apply(failMarker)\n", + "\n", + "# Safe entries that passed\n", + "result5 = dataset[dataset['Inorganics2']== False]\n", + "failed_step_5.tail(15)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Structural Conversion and Cleaning\n", + "--------------------------------------------------\n", + "\n", + "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not beeing desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", + "In case that we want to continue working on the converted records, we should perform the following steps:\n", + "- check if records contain compounds with presence of metals --> difficult case, filter out (already done this - one step ahead)\n", + "- removing the salts from the record\n", + "- neutralize the record (normalization or basic standardization)\n", + "- neutralize the charges\n", + "- to be discussed: the adding/removing of hydrogens, both got pros and cons (pro addingH --> higher prediction performances / con addingH --> may introduce noise --> less reliable models)(removingH might introduce erros in calculating descriptors, due to it might not handle certain cases well)\n", "\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -705,615 +1608,493 @@ "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:21] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:22] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n" + "RDKit ERROR: [11:54:3[11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:55:53] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n", - "RDKit ERROR: [20:56:10] ERROR: Empty structure\n" + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", + "RDKit ERROR: [11:56:08] ERROR: Empty structure\n" ] }, { @@ -1342,6 +2123,7 @@ " SMILEs\n", " Failed_at\n", " mol\n", + " Inorganics\n", " removed_salts\n", " \n", " \n", @@ -1352,8 +2134,9 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec2f1e90>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1ce3fb7760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5413da0>\n", + " True\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb533e440>\n", " \n", " \n", " 1\n", @@ -1361,8 +2144,9 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305620>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb53738f0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb53738f0>\n", " \n", " \n", " 2\n", @@ -1370,8 +2154,9 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305670>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373940>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373940>\n", " \n", " \n", " 3\n", @@ -1379,8 +2164,9 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3056c0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3056c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373990>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373990>\n", " \n", " \n", " 4\n", @@ -1388,8 +2174,9 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305710>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb53739e0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb53739e0>\n", " \n", " \n", " 5\n", @@ -1397,8 +2184,9 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305760>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a30>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a30>\n", " \n", " \n", " 6\n", @@ -1406,8 +2194,9 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3057b0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3057b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a80>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a80>\n", " \n", " \n", " 7\n", @@ -1415,8 +2204,9 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305800>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305800>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373ad0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373ad0>\n", " \n", " \n", " 8\n", @@ -1424,8 +2214,9 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305850>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373b20>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373b20>\n", " \n", " \n", " 9\n", @@ -1433,8 +2224,9 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3058a0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3058a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373b70>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373b70>\n", " \n", " \n", " 10\n", @@ -1442,8 +2234,9 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3058f0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3058f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373bc0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373bc0>\n", " \n", " \n", " 11\n", @@ -1451,8 +2244,9 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305940>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373c10>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373c10>\n", " \n", " \n", " 12\n", @@ -1460,8 +2254,9 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305990>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373c60>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373c60>\n", " \n", " \n", " 13\n", @@ -1469,8 +2264,9 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3059e0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3059e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373cb0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373cb0>\n", " \n", " \n", " 15\n", @@ -1478,8 +2274,9 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305a30>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373d50>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373d50>\n", " \n", " \n", " 16\n", @@ -1487,8 +2284,9 @@ " Acarbose\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305a80>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305a80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373da0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373da0>\n", " \n", " \n", " 17\n", @@ -1496,8 +2294,9 @@ " Acebutolol\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305ad0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373df0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373df0>\n", " \n", " \n", " 18\n", @@ -1505,8 +2304,9 @@ " Acenocoumarol\n", " CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305b20>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373e40>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373e40>\n", " \n", " \n", " 19\n", @@ -1514,8 +2314,9 @@ " Acetamide\n", " CC(N)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305b70>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373e90>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373e90>\n", " \n", " \n", " 20\n", @@ -1523,8 +2324,9 @@ " Acetaminophen\n", " CC(=O)Nc1ccc(O)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305bc0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373ee0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5373ee0>\n", " \n", " \n", "\n", @@ -1575,49 +2377,49 @@ "19 CC(N)=O 0 \n", "20 CC(=O)Nc1ccc(O)cc1 0 \n", "\n", - " mol \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 \n", - "17 \n", - "18 \n", - "19 \n", - "20 \n", + " mol Inorganics \\\n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "5 False \n", + "6 False \n", + "7 False \n", + "8 False \n", + "9 False \n", + "10 False \n", + "11 False \n", + "12 False \n", + "13 False \n", + "15 False \n", + "16 False \n", + "17 False \n", + "18 False \n", + "19 False \n", + "20 False \n", "\n", " removed_salts \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 \n", - "17 \n", - "18 \n", - "19 \n", - "20 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 " ] }, "execution_count": 11, @@ -1660,7 +2462,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -1689,7 +2491,6 @@ " SMILEs\n", " Failed_at\n", " mol\n", - " removed_salts\n", " normalized\n", " \n", " \n", @@ -1700,9 +2501,8 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec2f1e90>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1ce3fb7760>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec0ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb531fb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb531c4e0>\n", " \n", " \n", " 1\n", @@ -1710,9 +2510,8 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305620>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305620>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec5080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb53260d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5324f80>\n", " \n", " \n", " 2\n", @@ -1720,9 +2519,8 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305670>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305670>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec5440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb53266c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb531c530>\n", " \n", " \n", " 3\n", @@ -1730,9 +2528,8 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3056c0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec3056c0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec5260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5326670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb53486c0>\n", " \n", " \n", " 4\n", @@ -1740,9 +2537,8 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305710>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1cec305710>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f1ce3ec5490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5326710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7febb5348710>\n", " \n", " \n", "\n", @@ -1764,28 +2560,21 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", " mol \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "\n", - " removed_salts \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", "\n", " normalized \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 " ] }, - "execution_count": 14, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1797,14 +2586,15 @@ "dataset = result1\n", "#dataset.head(100)\n", "dataset['normalized'] = dataset['mol'].apply(normalize)\n", - "dataset.head()" + "result7 = dataset\n", + "result7.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 8: Charges and Hydrogens" + "#### Task 8: Charges and Hydrogens TODO" ] }, { @@ -1836,6 +2626,305 @@ "# handle_tautomers" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 9: Generate a canonicalized tautomer on SMILEs entries" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n", + "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolnormalizedduplicate?canonicalized tautomer
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]0<rdkit.Chem.rdchem.Mol object at 0x7febb531fb70><rdkit.Chem.rdchem.Mol object at 0x7febb531c4e0>FalseCCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C0<rdkit.Chem.rdchem.Mol object at 0x7febb53260d0><rdkit.Chem.rdchem.Mol object at 0x7febb5324f80>FalseCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C0<rdkit.Chem.rdchem.Mol object at 0x7febb53266c0><rdkit.Chem.rdchem.Mol object at 0x7febb531c530>FalseC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7febb5326670><rdkit.Chem.rdchem.Mol object at 0x7febb53486c0>FalseO=C(O)C(S)C(S)C(=O)O
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7febb5326710><rdkit.Chem.rdchem.Mol object at 0x7febb5348710>FalseCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", + "\n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "\n", + " mol \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "\n", + " normalized duplicate? \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "\n", + " canonicalized tautomer \n", + "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", + "3 O=C(O)C(S)C(S)C(=O)O \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setting up the taskNum \n", + "taskNum = 9\n", + "\n", + "dataset = result7\n", + "\n", + "# Find all duplicate occurences in SMILEs\n", + "dataset['canonicalized tautomer'] = dataset['SMILEs'].apply(handle_tautomers.canonicalize_tautomer)\n", + "dataset.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolnormalizedduplicate?canonicalized tautomer
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7febb532b350><rdkit.Chem.rdchem.Mol object at 0x7febb52b1b70>FalseO=C(O)CC(O)(CC(=O)O)C(=O)O
200201zirconiumCCO[Zr](OCC)(OCC)OCC0<rdkit.Chem.rdchem.Mol object at 0x7febb532b3a0><rdkit.Chem.rdchem.Mol object at 0x7febb52b1bc0>FalseCC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...0<rdkit.Chem.rdchem.Mol object at 0x7febb532b3f0><rdkit.Chem.rdchem.Mol object at 0x7febb52b1c10>FalseC=CC1=C(C)c2cc3[n-]c(cc4[nH]c(cc5nc(cc1n2)C(C)...
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....0<rdkit.Chem.rdchem.Mol object at 0x7febb532b440><rdkit.Chem.rdchem.Mol object at 0x7febb52b1c60>FalseBr.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....0<rdkit.Chem.rdchem.Mol object at 0x7febb532b490><rdkit.Chem.rdchem.Mol object at 0x7febb52b1cb0>TrueBr.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs \\\n", + "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", + "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", + "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "\n", + " Failed_at mol \\\n", + "199 0 \n", + "200 0 \n", + "201 0 \n", + "202 0 \n", + "203 0 \n", + "\n", + " normalized duplicate? \\\n", + "199 False \n", + "200 False \n", + "201 False \n", + "202 False \n", + "203 True \n", + "\n", + " canonicalized tautomer \n", + "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", + "200 CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4] \n", + "201 C=CC1=C(C)c2cc3[n-]c(cc4[nH]c(cc5nc(cc1n2)C(C)... \n", + "202 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... \n", + "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... " + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.tail()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1845,11 +2934,116 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":13: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " failed_step_10['Failed_at'] = failed_step_10['Failed_at'].apply(failMarker)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolnormalizedduplicate?
168169Cerivastatin sodiumCOCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc...10<rdkit.Chem.rdchem.Mol object at 0x7febb532a9e0><rdkit.Chem.rdchem.Mol object at 0x7febb52b1210>True
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....10<rdkit.Chem.rdchem.Mol object at 0x7febb532b490><rdkit.Chem.rdchem.Mol object at 0x7febb52b1cb0>True
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "168 169 Cerivastatin sodium \n", + "203 204 test_duplicate \n", + "\n", + " SMILEs Failed_at \\\n", + "168 COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc... 10 \n", + "203 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 10 \n", + "\n", + " mol \\\n", + "168 \n", + "203 \n", + "\n", + " normalized duplicate? \n", + "168 True \n", + "203 True " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Analysis/removal of duplicates" + "# Analysis/removal of duplicates\n", + "\n", + "# Setting up the taskNum \n", + "taskNum = 10\n", + "\n", + "dataset = result7\n", + "\n", + "# Find all duplicate occurences in SMILEs\n", + "dataset['duplicate?'] = dataset.duplicated(subset=['SMILEs'])\n", + "\n", + "#Filter the duplicates out\n", + "failed_step_10 = dataset[dataset['duplicate?']== True]\n", + "failed_step_10['Failed_at'] = failed_step_10['Failed_at'].apply(failMarker)\n", + "\n", + "dataset = dataset[dataset['duplicate?']== False]\n", + "failed_step_10.tail()\n" ] }, { From d1606ce1b034853d8f9155d10be4372b4ac19924 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Fri, 9 Apr 2021 18:56:03 +0200 Subject: [PATCH 25/55] status after meeting --- docs/tutorials/standardization.ipynb | 2496 ++++++++--------- .../compounds/standardization/remove_salts.py | 10 +- 2 files changed, 1116 insertions(+), 1390 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index d4bf4eba..9b03c07f 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -88,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -174,7 +174,7 @@ "203 0 " ] }, - "execution_count": 16, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -231,28 +231,28 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:06:14] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n", - ":9: SettingWithCopyWarning: \n", + ":13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -290,194 +290,194 @@ " \n", " \n", " \n", - " 188\n", - " 189\n", - " Chlorzoxazone\n", - " Oc1nc2cc(Cl)ccc2o1\n", + " 0\n", + " 1\n", + " (R)-Roscovitine\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532af80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", " \n", " \n", - " 189\n", - " 190\n", - " Cholestyramine\n", - " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", + " 1\n", + " 2\n", + " 17-Methyltestosterone\n", + " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b030>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", " \n", " \n", - " 190\n", - " 191\n", - " Chondroitin sulfate\n", - " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", + " 2\n", + " 3\n", + " 1-alpha-Hydroxycholecalciferol\n", + " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", " \n", " \n", - " 191\n", - " 192\n", - " Cidofovir\n", - " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", + " 3\n", + " 4\n", + " 2,3-Dimercaptosuccinic acid\n", + " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b0d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", " \n", " \n", - " 192\n", - " 193\n", - " Cimetidine\n", - " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", + " 4\n", + " 5\n", + " 2,4,6-Trinitrotoluene\n", + " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", " \n", " \n", - " 193\n", - " 194\n", - " Cinchophen\n", - " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", + " 5\n", + " 6\n", + " 2-Deoxy-D-glucose\n", + " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f30>\n", " \n", " \n", - " 194\n", - " 195\n", - " Cinoxacin\n", - " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", + " 6\n", + " 7\n", + " 2'-fluoro-5-methylarabinosyluracil\n", + " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b1c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f80>\n", " \n", " \n", - " 195\n", - " 196\n", - " Ciprofibrate\n", - " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", + " 7\n", + " 8\n", + " 2-Methoxyestradiol\n", + " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349030>\n", " \n", " \n", - " 196\n", - " 197\n", - " Ciprofloxacin\n", - " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", + " 8\n", + " 9\n", + " 4-aminobenzoic acid\n", + " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349080>\n", " \n", " \n", - " 197\n", - " 198\n", - " Cisapride\n", - " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", + " 9\n", + " 10\n", + " 4-Hydroxytamoxifen\n", + " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593490d0>\n", " \n", " \n", - " 198\n", - " 199\n", - " Citalopram\n", - " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", + " 10\n", + " 11\n", + " 5 fluorouracil\n", + " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349120>\n", " \n", " \n", - " 199\n", - " 200\n", - " Citric acid\n", - " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", + " 11\n", + " 12\n", + " 5-Azacitidine\n", + " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349170>\n", " \n", " \n", - " 200\n", - " 201\n", - " zirconium\n", - " CCO[Zr](OCC)(OCC)OCC\n", + " 12\n", + " 13\n", + " 5-Bromouracil\n", + " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b3a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593491c0>\n", " \n", " \n", - " 201\n", - " 202\n", - " hemoglobin\n", - " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", + " 13\n", + " 14\n", + " 5-fluoro-2'-deoxyuridine\n", + " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b3f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349210>\n", " \n", " \n", - " 202\n", - " 203\n", - " test_salt\n", - " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " 14\n", + " 15\n", + " 6-Mercaptopurine\n", + " Sc1ncnc2[nH]c[nH]c12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b440>\n", + " None\n", " \n", " \n", - " 203\n", - " 204\n", - " test_duplicate\n", - " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " 15\n", + " 16\n", + " Acadesine\n", + " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349440>\n", " \n", " \n", "\n", "" ], "text/plain": [ - " IDs Names \\\n", - "188 189 Chlorzoxazone \n", - "189 190 Cholestyramine \n", - "190 191 Chondroitin sulfate \n", - "191 192 Cidofovir \n", - "192 193 Cimetidine \n", - "193 194 Cinchophen \n", - "194 195 Cinoxacin \n", - "195 196 Ciprofibrate \n", - "196 197 Ciprofloxacin \n", - "197 198 Cisapride \n", - "198 199 Citalopram \n", - "199 200 Citric acid \n", - "200 201 zirconium \n", - "201 202 hemoglobin \n", - "202 203 test_salt \n", - "203 204 test_duplicate \n", + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", + "5 6 2-Deoxy-D-glucose \n", + "6 7 2'-fluoro-5-methylarabinosyluracil \n", + "7 8 2-Methoxyestradiol \n", + "8 9 4-aminobenzoic acid \n", + "9 10 4-Hydroxytamoxifen \n", + "10 11 5 fluorouracil \n", + "11 12 5-Azacitidine \n", + "12 13 5-Bromouracil \n", + "13 14 5-fluoro-2'-deoxyuridine \n", + "14 15 6-Mercaptopurine \n", + "15 16 Acadesine \n", "\n", - " SMILEs Failed_at \\\n", - "188 Oc1nc2cc(Cl)ccc2o1 0 \n", - "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", - "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", - "191 NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1 0 \n", - "192 CN=C(NCCSCc1nc[nH]c1C)NC#N 0 \n", - "193 OC(=O)c1cc(nc2ccccc12)-c1ccccc1 0 \n", - "194 CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 0 \n", - "195 CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O 0 \n", - "196 OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O 0 \n", - "197 COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... 0 \n", - "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", - "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", - "200 CCO[Zr](OCC)(OCC)OCC 0 \n", - "201 CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... 0 \n", - "202 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 0 \n", - "203 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 0 \n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", + "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", + "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", + "8 Nc1ccc(cc1)C(O)=O 0 \n", + "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", + "10 FC1=CNC(=O)NC1=O 0 \n", + "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", + "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", + "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", + "14 Sc1ncnc2[nH]c[nH]c12 0 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", "\n", - " mol \n", - "188 \n", - "189 \n", - "190 \n", - "191 \n", - "192 \n", - "193 \n", - "194 \n", - "195 \n", - "196 \n", - "197 \n", - "198 \n", - "199 \n", - "200 \n", - "201 \n", - "202 \n", - "203 " + " mol \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 None \n", + "15 " ] }, - "execution_count": 17, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -489,6 +489,10 @@ "# A column called mol is beeing added to the dataframe to store the mol-files\n", "dataset['mol'] = dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", "\n", + "#test set\n", + "test_numpy = dataset\n", + "\n", + "\n", "# All entries which couldn't generate a mol will get filtered another dataframe\n", "failed_step_1 = dataset[(dataset['mol'].isnull())]\n", "failed_step_1['Failed_at'] = failed_step_1['Failed_at'].apply(failMarker)\n", @@ -496,7 +500,23 @@ "\n", "# Update the dataset by removing all entries without a mol\n", "result1 = dataset[dataset['mol'].notna()]\n", - "result1.tail(16)\n" + "test_numpy.head(16)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "#Testing numpy.where\n", + "\n", + "#df = test_numpy\n", + "\n", + "#df['Failed_at'] = np.where((df['mol'].isnull()),df['Failed_at'].apply(failMarker), df['Failed_at'])\n", + "#df['Inorganics'] = np.where((df['Failed_at'].isnull()),df['mol'].apply(detect_inorganic),None)\n", + "#df['new_test'] = np.where((df[\"Failed_at\"].isnull()),df['SMILEs'].apply(handle_tautomers.canonicalize_tautomer),df['Failed_at'])\n", + "#df.head(50)" ] }, { @@ -527,14 +547,20 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":11: SettingWithCopyWarning: \n", + ":7: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", + ":11: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -578,7 +604,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5413da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", " True\n", " \n", " \n", @@ -587,7 +613,7 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5380bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59342260>\n", " True\n", " \n", " \n", @@ -596,7 +622,7 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb537c6c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344da0>\n", " True\n", " \n", " \n", @@ -605,7 +631,7 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb537c710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344df0>\n", " True\n", " \n", " \n", @@ -614,7 +640,16 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb537c760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e40>\n", + " True\n", + " \n", + " \n", + " 203\n", + " 204\n", + " test_duplicate\n", + " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " 2\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e90>\n", " True\n", " \n", " \n", @@ -628,16 +663,18 @@ "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol Inorganics \n", - "0 2 True \n", - "114 2 True \n", - "200 2 True \n", - "201 2 True \n", - "202 2 True " + "0 2 True \n", + "114 2 True \n", + "200 2 True \n", + "201 2 True \n", + "202 2 True \n", + "203 2 True " ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -669,154 +706,154 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Removed fragment: 1,4-dioxane\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - ":7: SettingWithCopyWarning: \n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Removed fragment: 1,4-dioxane\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + ":7: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", - ":10: SettingWithCopyWarning: \n", + ":10: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", - ":13: SettingWithCopyWarning: \n", + ":13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - ":14: SettingWithCopyWarning: \n", + ":14: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", - ":19: SettingWithCopyWarning: \n", + ":19: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -864,9 +901,9 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f30>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53a74e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c5936ee90>\n", " C1COCCO1.OCC1OC(O)CC(O)C1O\n", " OCC1OC(O)CC(O)C1O\n", " False\n", @@ -880,16 +917,16 @@ "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 3 \n", "\n", " mol Inorganics \\\n", - "5 False \n", + "5 False \n", "\n", " mol_after \\\n", - "5 \n", + "5 \n", "\n", " smiles_before Smiles 3 noChanges \n", "5 C1COCCO1.OCC1OC(O)CC(O)C1O OCC1OC(O)CC(O)C1O False " ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -931,437 +968,437 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:22] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:23] Running FragmentRemover\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n", - "RDKit INFO: [11:54:38] Initializing MetalDisconnector\n", - "RDKit INFO: [11:54:38] Running MetalDisconnector\n" + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Running FragmentRemover\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n", + "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", + "RDKit INFO: [14:36:22] Running MetalDisconnector\n" ] }, { @@ -1399,7 +1436,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb537c530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344c10>\n", " \n", " \n", " 196\n", @@ -1407,7 +1444,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb537c580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344c60>\n", " \n", " \n", " 197\n", @@ -1415,7 +1452,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb537c5d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344cb0>\n", " \n", " \n", " 198\n", @@ -1423,7 +1460,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb537c620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344d00>\n", " \n", " \n", " 199\n", @@ -1431,7 +1468,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb537c670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344d50>\n", " \n", " \n", "\n", @@ -1446,14 +1483,14 @@ "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", "\n", " Failed_at mol \n", - "195 0 \n", - "196 0 \n", - "197 0 \n", - "198 0 \n", - "199 0 " + "195 0 \n", + "196 0 \n", + "197 0 \n", + "198 0 \n", + "199 0 " ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -1495,7 +1532,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -1538,7 +1575,7 @@ "Index: []" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -1580,7 +1617,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -1601,500 +1638,29 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "RDKit ERROR: [11:54:3[11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n" + "CC(=O)O\n", + "O=C(O)CC(O)(CC(=O)O)C(=O)O\n", + "[Zn]\n", + "[Zn]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:55:51] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n", - "RDKit ERROR: [11:56:08] ERROR: Empty structure\n" + ":6: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['removed_salts'] = dataset['mol'].map(remove_salts)\n" ] }, { @@ -2134,9 +1700,9 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5413da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb533e440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365e90>\n", " \n", " \n", " 1\n", @@ -2144,9 +1710,9 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53738f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53738f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", " \n", " \n", " 2\n", @@ -2154,9 +1720,9 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", " \n", " \n", " 3\n", @@ -2164,9 +1730,9 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", " \n", " \n", " 4\n", @@ -2174,9 +1740,9 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53739e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53739e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", " \n", " \n", " 5\n", @@ -2184,9 +1750,9 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f30>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f30>\n", " \n", " \n", " 6\n", @@ -2194,9 +1760,9 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f80>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373a80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f80>\n", " \n", " \n", " 7\n", @@ -2204,9 +1770,9 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349030>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349030>\n", " \n", " \n", " 8\n", @@ -2214,9 +1780,9 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349080>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349080>\n", " \n", " \n", " 9\n", @@ -2224,9 +1790,9 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593490d0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593490d0>\n", " \n", " \n", " 10\n", @@ -2234,9 +1800,9 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349120>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349120>\n", " \n", " \n", " 11\n", @@ -2244,9 +1810,9 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373c10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349170>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373c10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349170>\n", " \n", " \n", " 12\n", @@ -2254,9 +1820,9 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373c60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593491c0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373c60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593491c0>\n", " \n", " \n", " 13\n", @@ -2264,9 +1830,9 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349210>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349210>\n", " \n", " \n", " 15\n", @@ -2274,9 +1840,9 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349440>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349440>\n", " \n", " \n", " 16\n", @@ -2284,9 +1850,9 @@ " Acarbose\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349350>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349350>\n", " \n", " \n", " 17\n", @@ -2294,9 +1860,9 @@ " Acebutolol\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349490>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349490>\n", " \n", " \n", " 18\n", @@ -2304,9 +1870,9 @@ " Acenocoumarol\n", " CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593494e0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593494e0>\n", " \n", " \n", " 19\n", @@ -2314,9 +1880,9 @@ " Acetamide\n", " CC(N)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349530>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349530>\n", " \n", " \n", " 20\n", @@ -2324,9 +1890,9 @@ " Acetaminophen\n", " CC(=O)Nc1ccc(O)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349580>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5373ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349580>\n", " \n", " \n", "\n", @@ -2378,51 +1944,51 @@ "20 CC(=O)Nc1ccc(O)cc1 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "5 False \n", - "6 False \n", - "7 False \n", - "8 False \n", - "9 False \n", - "10 False \n", - "11 False \n", - "12 False \n", - "13 False \n", - "15 False \n", - "16 False \n", - "17 False \n", - "18 False \n", - "19 False \n", - "20 False \n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "5 False \n", + "6 False \n", + "7 False \n", + "8 False \n", + "9 False \n", + "10 False \n", + "11 False \n", + "12 False \n", + "13 False \n", + "15 False \n", + "16 False \n", + "17 False \n", + "18 False \n", + "19 False \n", + "20 False \n", "\n", " removed_salts \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 \n", - "17 \n", - "18 \n", - "19 \n", - "20 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 " ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -2433,7 +1999,7 @@ "# getting the valid entries from the step before\n", "dataset = result1\n", "#dataset.head(100)\n", - "dataset['removed_salts'] = dataset['mol'].apply(remove_salts)\n", + "dataset['removed_salts'] = dataset['mol'].map(remove_salts)\n", "dataset.head(20)\n", "\n", "#dataset['removed_salts'] = RemoveSaltsFromFrame(dataset,molCol='mol')\n", @@ -2442,17 +2008,89 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "Name: mol, dtype: object" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset['mol'][0:10].apply(remove_salts)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ - "test = '[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn]'\n", + "example = dataset['mol'].values[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAHs0lEQVR4nO3dXUhTfRzA8TO1RMO3UlNoGYpE9D5jJgXRKKtBiCFUKEUoQoZ5JXlRRphQdJEYUhIGZV1ECAaFQ7SuDNQe6kaMEsQtRLbMtBSdL3suRnvU1Myf+j8+fT9X/21nOz8hvp3jzpzB4/FoAICF8lM9AACsbGQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIBKgeAJjV2NiYw+FwuVy9vb0BAQExMTGxsbGRkZGq5wKm4GgUujMyMnL//v309PTIyMj4+Pjk5GSr1Zqamrpjx46oqKjdu3eXlJTY7fZfn3jixAnDT+3t7fPc3ePHj33PKi0tXdQfBX8FMgp9efDgQWJiYm5ubm1tbX9//68bvH//vri4ePPmzSUlJePj48s/ITANGYVejI2N5eTkZGdnOxyOaQ/5+U3/hzo8PFxcXJyZmUlJoRwZhS54PJ5Tp05VVVX57gkODs7Ly6uvr+/p6RkdHXW73Xa7vbq6+siRI75tnj59mp+fr2Je4D9kFLpw9+7dmpoa381Dhw61t7dXVFQcPnx4/fr1fn5+q1atMhqNWVlZNputtrY2IiJC07S4uLjc3Fx1UwOaRkahBw6Ho7Cw0Hfz2LFjL1682Lhx42zbp6Wl2Ww2q9Xa0tKya9euZZkRmBUXPEG9ysrKoaEh7zoyMvLRo0eBgYFzP8VsNr98+XLpRwN+j6NRKOZ2uyf/SrSkpIQrQ7GykFEo1tra2tPT410HBQWdPn1a7TzAnyKjUKy1tdW3Tk1NDQsLUzgMsABkFIq1tLT41iaTSeEkwMKQUSj2+fNn33r79u0KJwEWhnfqoVhfX59vvW7dusV6WZPJZDAY5rMln4OCEBmFYpM/OB8aGrpYLzs8PLxYLwXMjZN6KDb5YPDXz84D+sfRKBQLDw/v7u72rr9//75YL1tdXR0XFzefLevr669fv75Y+8VfiIxCsclXOH379m2xXjYpKWnLli3z2bKrq2uxdoq/E+dQUCw6Otq3/vjxo8JJgIUho1Bs8rWi7969UzgJsDBkFIolJyf71o2NjVx+hBWHjEKxvXv3BgUFedfd3d0NDQ1q5wH+FBmFYmFhYSdPnvTdvHr16sTEhMJ5gD9FRqHe+fPnfevm5ubbt28rHAb4U2QU6pnN5nPnzvluFhYWlpeX//ZZDofD6XQu5VxTdHV1/fOTy+Vatv1C/8godKGsrGzTpk3etcfjKSgosFgsTU1Nv57gj46O2my2zMzMhISEe/fuLc94vb29ZrN5z0/Pnj1bnv1iReDye+hCaGhoQ0PD0aNHOzo6vPe8fv16//790dHRKSkpMTEx4eHhvb29HR0db9++/fHjh3ebhw8fXrlyZZ5/gkSioKDA6XRGR0cv5/EvVgoyCr1ISEh48+bNmTNnbDab706n0/n8+fPZnvL161e73T7PD30uWF1d3ZMnTzRNu3Xr1tmzZ5d0X1iJOKmHjkRFRdXV1TU2Nh48eDAgYK7/43fu3FlaWtrZ2bnUDR0cHLxw4YKmaRkZGcePH1/SfWGF4mgUumOxWCwWS39//6tXr9ra2lwu15cvXwwGQ1hYWGxs7LZt20wm04xfv3zp0qWsrCzvesOGDfPc3YEDB2pqarzrrVu3Tnu0qKios7MzJCSkrKxsoT8Q/ucMHo9H9QyATjU3N+/bt298fLy8vDw/P7+vr2/t2rWaplVUVOTl5ameDnrBST0wM7fbnZ2dPT4+vmfPHqKJOZBRYGalpaVtbW3+/v6VlZX+/v6qx4F+kVFgBh8+fLh586amaRcvXuT7SjE3MgpMNzExkZOTMzIyYjQar127pnoc6B0ZBaa7c+dOU1OTdxESEqJ6HOgdGQWmsNvtly9f1jTNarWmpaWpHgcrABc8AVNkZWV5P7O0Zs2a1atXT37I4/F4vy0qODg4MDAwPT29qqpKzZTQEy6/B6bw/fWmwcHBwcHBGbcZGhoaGhqa7VH8bTgaBab49OnTwMDAjA8NDAxYLBZN04qKijIyMiIiIuLj45d3OugRR6PAFImJibM91NfX510YjcakpKTlmgh6x1tMACBCRgFAhJN6YL6CgoJu3LihaVpKSorqWaAjvMUEACKc1AOACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIj8C6is6hkNqCbvAAAAQnpUWHRyZGtpdFBLTCByZGtpdCAyMDIwLjA5LjQAAHice79v7T0GIOABYkYGCIDRDYxsDA5AmoVbhEEcJgiXBQMxAO2BBGDYkj9mAAAAVHpUWHRNT0wgcmRraXQgMjAyMC4wOS40AAB4nONSAIEgF+/MEgU4MHLh4lJQMFRQMMCFLC0tFcKMDAwMuEDqDfSALAOsLGcFPKbAEZevgoKrnwsXAFqrFpYYGSy3AAAAKnpUWHRTTUlMRVMgcmRraXQgMjAyMC4wOS40AAB4nHNWqNEw0DHQ0awBAAzOAmXMfEOOAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test = 'C.[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn]'\n", "mol = convert_format.convert_smiles_to_mol(test)\n", "mol\n", "salt_remover = remove_salts(mol)\n", "salt_remover" ] }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAe+klEQVR4nO3de1RU5d4H8O/MwDDckZtXVExFRRIVjhdQKzFdiZ5MKS9rLI9LsttYqY3psvH0qlGdbLA3a+hCYOW71MzGSjM8qUBeUgETdQREIG+AglwGGJh53j82johCwOyZPeDvs/pj2Hvz/J5p6ddn7/3s/YgYYyCEENJRYqE7QAghnRvFKCGEWIRilBBCLEIxSgghFqEYJYQQi1CMks7k6NGjkZGR169fF7ojhNxBMUo6h7q6ulWrVkVGRqanp2/atEno7hByh4PQHSDk72VnZ8vl8oyMDIlEolQq3377baF7RMgdFKPErjHGNm/erFQq6+rqAgMDv/rqq4kTJwrdKULuQjFK7FdBQcFzzz138OBBAHK5fMuWLW5ubkJ3ipDm6NoosVPJyckhISEHDx7s3r27VqtNTk6mDCX2iUajxO4UFxc///zzu3fvBjBnzpxPPvnE19dX6E4R0iIajRL7snfv3tDQ0N27d3t6emo0mh07dlCGEjtHo1FiLyoqKlauXJmQkABg8uTJiYmJAQEBQneKkL9Ho1FiF37//fdRo0YlJCTIZLK4uLj9+/dThpLOgkajRGC1tbXr1q37z3/+YzQaw8PDk5OThwwZInSnCGkHEb22mQjozz//XLhwYWZmpoODw/Lly99++22pVCp0pwhpH4pRIpiamprAwMDr168HBQUlJyf/4x//ELpHhHQEndQTwWzevLm+vv7RRx/98ccfXVxchO4OIR1Et5iIYGpra2/evBkZGUkZSjo1ilEiGD8/PwClpaVCd4QQi1CMEsFwMVpSUiJ0RwixCMUoEQzFKOkaKEaJYLinPClGSWdHMUoEQ6NR0jXQvFEiGKPRKJVKRSKRwWAQi+lfdNJZ0Z9dIhiJROLl5WU0GsvKyoTuCyEdRzFKhETn9aQLoBglQqK7TKQLoBglQqLRKOkCKEaJkOhBJtIFUIwSIdFolHQBFKNESHRtlHQBFKNESAKc1Kem4ssvcehQ449a7Z1dTT8T0mYUo0RItj6pVyiwYwf8/LBrF5YuBYA337yzt+lnQtqMXttMhGTTGC0sREYGUlMBYMYMTJqEvDxb1CVdHcUoEZJNr43m5GD48Ds/jhiBCxdw8yZmzmzc0tBgi26QLodilAjJpqNRHx/cuHHnxxs34OMDb+87l0SDg23RDdLl0LVRIiRnZ2dXV9e6urqqqiorlsnLw/PPIygIFy/izBkAOHsW585h5EgrFiUPDBqNEiHt2LFDJBJ5e3tHRUWtWbMmOjpaJBLxWYAxJCRgxQpUVaF/f+zcibVrUVYGT0/s3AlHR4wadefgpp8JaTN6UR4RRnFx8ZIlS7RaLQAXFxe9Xg9gxIgRq1atiomJkUgkPNS4fh2xsY3n7DEx+OQT+Pjw0Cwhd6OTeiKAvXv3hoaGarVaT09PjUZTXFysVqsDAgKysrLmzZs3aNCg+Pj4mpoai2p89x2GD4dWC09PJCdj+3bKUGItjBAbunXrVmxsLPdnLyoqqrCw0Lyrrq4uKSlpyJAh3F5/f3+VSlVeXt6BGiw2lgEMYFOmsKIiPr8AIfegGCW2k56ePnDgQAAymSwuLs5oNN57jNFo1Gq14eHhXJh6eHgolcrS0tI2lkhJSflu5kwGMBcX9vHHzGTi9RsQch8Uo8QWamqYUskeeWQ7gPDw8HPnzv3tr6SmpkZHR3Nh6urqqlAoilodV+r1eoVCwd2hKpg/n+l0/HWfkNZQjBKrO3WKBQczgLm7mzZu3FJfX9/23+XClAtHqVQql8vvG8FZWVkPP/wwAAcHB6VSaTAY+Os+IX+DYpRYkdHI1GomlTKADRjA0tI62M7p06flcrmDgwMAsVgcHR19/Phxbld9fX1cXJxUKgUwdOjQP/74g7feE9I2FKPEWi5eZBMnMoCJRCw2llVVWd7gRYVCIZPJuDP9iIiIhISEyMhIACKRKDY2trq6mo+OE9I+NG+UdERtLSQSODoCQE0NHB1RWYlu3QDAaERtLb77Di+9hKoq9OiBzz/H9Om8lb58+fKmTZsSEhKqqqq4Cad9+/ZNTEx87LHHeKtBSHtQjJKOUKkQEoI5cwDgjTcwaRL++U/83/9hzhzodFi+HCkpqKvDvHn4+OPGeOXXjRs3PvroI29v74KCgrfeesvT05P/GoS0DT0MSvgxZAg++ACPPw4Abm744AP4+uKZZ6xVzsfHZ926ddZqnZD2oBglHfTDD7h4EQCOH8ekSXB2xquvYu1avPgiALz0krC9I8R26GFQ0kFDhiAiAhER6N27ccszz0CnQ1aWoN0ixOZoNEo6KCgIEREA8MMPdzbGx+PJJzFihFCdIkQANBolfAoKwlNPCd0JQmyL7tSTjmg64am2Fg4O0OtRXo6UFPj6YvJkuLoK3UVCbIVGo6QjZLLGDOU+OzjAwwNZWVi8GAkJlKHkwUIxSnjj5wcAtlxznhB7QDFKeMPFqM3WnCfETlCMEt74+gIUo+TBQ7eYCJ9kMtTVoaYGt98fQkjXR6NRwiduuaOmq8ET0uVRjBI+0eVR8gCiGCV8osuj5AFED4MSPj388JH6+hNVVY8Cw4XuCyE2QqNRwqeGhm2HDyuKiv4rdEcIsR2KUcInPz8/ACV0Vk8eJBSjhE++vr6gGCUPGIpRwicajZIHEMUo4RMXo6X0XD15kFCMEj7RaJQ8gChGCZ8oRskDiJ6pJ3wyGo1SqRRATU0N94GQLo9Go4Q3tbW1a9ascXR0dHd3DwoKio+Pr62tFbpThFgdjUYJPzIyMuRyeXZ2tkQi8fX1vX79OoA+ffq8/vrrsbGxrvRCfNJ10WiUWMpkMsXHx48dOzY7O3vAgAGHDh26cuWKVqsNCwv766+/Xn/99X79+q1bt+7mzZtC95QQq6DRKLFIfn7+c889d/jwYZFItGTJkk2bNpkHnoyxn3/++Z133klPTwfg7u7+6qvrly5V9OolaI8J4RuNRkkHMQaNJiEkJOTw4cN9+vT55ZdfNBqNOUPLyspEItH06dPT0tJSU1Ojo6OrqqoOH44IDMTChdDphO07IXyiGCUdcf06nnwS27b1qq6ujomJyczMnDJlinlvVlZWz549Fy5cqNPpAERGRu7Zs+fkyZMBAQ83NGDrVgQHY/58nD4t3BcghEeMkHbasYP5+DCA9exp2rnzp3sPUKvVYrEYgEQimTdvXlZWlnlXXh5TKJhMxgAGsKgolp7OGGO5uay0tPGYs2dt8S0I4QtdGyXtcOsW3ngDCQkA8Pjj+PJL9O59/yMvXLjw7rvvfv311waDQSQSzZ797GuvJY4f37j3r7/wwQf47DNUVwPApEnw8EBtLfbvB4CRI5GRYYNvQwg/6KSetNWBAwgJQUICnJ2hVmPfvhYzFMDgwYO/+OKLwsJClUrl7u5eUjI7IgKRkdizB4yhTx98+CEuXYJKBW9v1NXB0RHdu+Pbb234fQjhi9DDYWKPjEZ28mTj56oqptMxpZKJxQxgY8Ywna59rZWUlGzYUNWtW+OJ/KhRbMcOZjQ27q2oYDk57KmnWHY2Gz2alZWx0FA+vwsh1kajUXIfej3CwrBtGwBkZ2PtWsTHQyLBhg1IT8fgwe1rzdfXd/Vq14ICvPceevbEqVOIicGzzzbudXfHwIEA4OYGpRJvvcXrNyHE+ihGyf2NGYP4eJSXA4CXFz7/HMeOYfVqSCQdbNDdHStX4tIlJCVh8GAsWHCfY2JikJeHa9c63m1CbI9ilNyfTIaVK7F6deOPCxZg5EgempVKsXAhsrMxdepd211dIRYDwIcfwtGRh0KE2AytDEpaNHs2vvzSKjfNHe75c5ecjPp6rF2LigoUFvJfkRDroQlP5D6qqjBjBn77Dbm5iIrC1KnQaGxR18kJBgNqa+HkZItyhPCCTurJfYhEcHMDgIEDsXgxXFxsVNfHBwBoCRLSudBJPbkPV1fs2YOMDHz/PYYNw9y5Nqrr54erV1FS0tqMVELsDY1GSYvOn8f//A9++MF2Ff38ABqNks6GYpS0yNcXAMzrKhUV4fhx1NVZsSIXo7SSE+lcKEZJi5qF2pQpGDMG+flWrNgsuAnpFChGSYuanWLbYKhIJ/WkM6IYJS3ixoalpeAmxdkgRmk0SjojilHSIicneHjAYEBFBWCTjOvT5/ykSa87Of2vFWsQwjeKUdKaptFpg9Goh8e1Q4c+zMzcacUahPCNYpS0punFShtcuPTz8wNQ0nXP6hlj6enpKSkpBQUFQveF8IZilLQmLOzEpEna8vIzAHr1OtCr17hbt16yXrmuHaPXrl2bMWPGxIkT586dO2jQoIULF549e1boThEeUIyS1lRXf3zo0D+vXDkOwNOz4cqVo5cv51ivnI+Pj1gsvnnzptFotF4VQXz77bdDhw796aefunXrFhoayhjbunVrSEjI7NmzT5w4IXTviEUoRu3X+fPn//Wvf23atEnAPjQdHnKfS615Vi+RSLy8vIxGY1lZmfWqNFVWVpabm7tr1676+norlSgvL5fL5QsWLCgvL582bdrp06dTUlJyc3MVCoVMJtu1a1d4eDi3eKqVOkCsTuC375OW7d+/H0BAQEB9fb1QfXjvvfcArFixgjFWWFgIoE+fPvyWaPbtgoKCAJy1yeqgv/76a58+ffr27QugX79+arW6urqa3xK//PJL7969Abi4uKjVapPJ1HRvcXGxSqXy8vLi/jKOHDkyKSmpoaGB3z4Qa6MYtV8mk4nLlO+//16oPiQmJgJ49tlnGWM1NTUAnJyceGx/7969gYGBf/75p3lLZGQkgMOHD/NY5V7V1dUvv/yySCQCMGzYsMG310Xp3r37xo0by8vLLS+h1+sVCgVXYty4cRcuXGi698aNG+ZIraioUKvVPXv25PoQHByclJQk4L+dpL0oRu2aWq0GMGXKFKE68OOPPwJ44oknuB9dXV0BVFRUWN5yRUXF4sWLueB45ZVXzNsnT54MQK1WW16iJcePHx8yZAgAR0dHlUrV0NBgMpm0Wu3YsWO5/ri7uysUisuXL3e4xNGjR7loNpdodsC0adOGDx/eNC5ra2s1Gg03NAbQv39/tVqt1+s7/j2JrVCM2rXy8nJXV1eRSHT+/HlBOnD06FEA4eHh3I8ajSYpKcnyv9u///77wIEDAchksri4OKPRyBirr6+Pi4tzcHAICAgQiUTR0dG///67pV/gblwJR0dHbhB60rz86W2pqanR0dFckDk5Ocnl8pycnA6XCA4OPnXq1L3H3Lx50xyXgYGBW7Zsqamp4XYZDIakpKShQ4dye/39/VUqVVlZWce+L7ENilF7t2TJEgDLli0TpHpeXh43MuKrQYPBoFKpJBIJgJCQkMzMTG67TqcbM2YMALFYHBYW5nL7TdGPPfbY/v37eSl9/nxJWFgYV2LFihW1tbUtHZmRkSGXy7lOOjo6yuXy7OzstpTIzs4ePXo0AJFIpFAoWinRelwajUatVsv9DzGPjq9cudLer0xsg2LU3mVmZgLw9PSsqqqyffWKigoAzs7OvNx7OXPmzMiRIwFIJBKlUllXV8cYM5lMGo3Gzc0NQN++fQ8cOMAYKykpUalU3bp143IkNDTUknsvJhPTaJibmyksbFq/fv1+++23tvxWTk5ObGwsN67kRsdHjhxpuYRJo9Fw6d+/f/+DBw+2pcTfxuUvv/zyyCOPcHtdXFwUCoXBYGhLy8SWKEY7gYiICAAJCQm2L52YmOjm5iaTyXx9fVUq1Y0bNzrWjslkUqvVTk5O3Gms+Q7S1atXzSfRMTExzdq/devWO++8071799v3XkK2bq1tb4wUFrLJkxnAAKZQXL1161a7fv3SpUsKhcI8Oo6IiNBqtc2OKSgoePTRR7kD5HJ5B64dN7uYEBsbW1BQYN578uTJmJgYkUg0bNiwPXv2tLdxYm0Uo53AN998A2DEiBE2rvvtt9+KxWKRSDRgwADub7iHh8cbb7xx9erVdrWTn58/adIkc8pUVlZy27dv3+7j4wPAy8vrm2++aenXa2trk5KSBg0aNHbsewDr25ep1ayNg+Pt25m3NwOYnx/btatdvb5LKzOTtm/fzo2a/f39d+/e3fEajJ08eVIul4vFYvPFhKYTv7hZExMmTLCkBLEGitFOoK6ujhuRpaWl2azoDz/8wJ3PvvPOO+z2cImbviOVSuVyuU6na0s7SUlJ7u7u3Fwi8ziuvLw8NjaWi6SpU6e25Z64wWDYtq182LDGcaW/P9u4kbUyMamsjC1Y0HjwtGnMgrvuTdssW79+PfcYAoChQ4eOGzeO+zxr1qzi4mIeajB2+vTpBQsWODg4cJdxc3Nzue3ck6NDhgzhpQrhEcVo57BmzRoA8+bNs025AwcOyGQyAGvWrGm6PTMz03zvRSwWR0dHnzhxopV21q5dy6XM008/XVpaym3kJr2jhRnprTOZmFbLxo5tzEd3d6ZQsMuXmU7H9u5tPOboUfbNN6xnz8YDvviifd/9b3GjY26mQY8ePdzc3DQaDc81GMvPz1coFDNnzjRvKS4uBuDj48N7LWIhitHOobCw0MHBQSqVXrt2zdq1jh49yo0fX3rppfsewD3IyF3obH1mUn5+fkBAgDll9Hq9UqnkTlrHjh3bbEZ6u6Sk3Lni6ezMli9n7u6MOwNWKtlbbzGAjRvH2jlbqR0MBgN3pSIuLs5aNRhr+m9MQ0ODRCIRi8X0mJO9oRjtNGbNmgVg/fr1Vq1y+vRpb29v7iImN52zJQUFBffee7l3aGm+s3zs2DHuoayWZqR3QEYGk8tZt25syxb28stsyhRmMjGlku3bx/bsYa12nwdKpRLAxo0brVumCV9fXwB8XT0gfKFXk3QaL774IgCNRtPQ0GClEjodli/Pr66unj17dmJiIjdsbEnfvn3j4+MLCgpUKpW3t3d6evrMmTNHjhyZnJzc9P1Mjo6ODQ0N7777bmRkpE6nCw4OPnbs2Lp167grAxYKDUVyMnJz4eKCwYMxciSSkhp3RUej1e7zoOm7Wmpqaj766KP333/fBhW76osEOzGhc5y0lclk4h5h3GXJLeeWXbrEAgIYwBYvPsrN6Gy7yspKtVrNvYMDwEMPPaRWq7nJ52fPnuUmvf/tjHRLfPUV27yZVVaysDC2dCnbt88aRe4t+hUAuVzOGKutrQUglUrbdam3vSZOnAigjZNSic3QaLTTEIlEL7zwAoAtW7bw3nhxMaZORVERxo1DfPwYqVTarl93c3NbtmxZbm7uxx9/HBgYmJeX9+qrrw4ePDgmJmb06NEnTpwIDAw8dOhQfHw8d0XVStzcsGoVtm61XoW7NB0bOjk5ubu7GwwG7oEFK+FO6mk0am8oRjuTRYsWubu7p6SkZGdn89hseTmmToVOh9BQ/PQTXF072I5MJnvxxRdzc3O1Wu2oUaMKCwvT0tJqampiYmJOnTo1YcIEHvvcTK9eCAgAgNmz8eyz8PGxXqk7mr2A1QZn3HRSb58oRjsTd3f3+fPnA0hISOCrzcpKPP44MjMRFIR9+3D78cuOE4vFM2bMOHHixJw5c65du7Zw4cLt27ebJ65bidEIb+/Gz9OmwWpXj+/SLNRs8FprG5QgHUAx2sm88sorABITEysrKy1vraYGM2fijz/w0EP4739x+6lLHohEIm4C+ZQpU3hrtGVnzyLn9uImp0/j4kUb1Gx+im2DoSKd1NsnitFOJjg4ePz48ZWVlQsWLNi6dWtaWhr3CFDHWtNocPAg+vTBr7+iVy9+e4r8/HwAgYGBPLfbgoYG1NWhrg42W8bJzc3N2dlZr9fr9XrYJOPopN4+OQjdAdJuzs7O/v7+e/bsMa/e4+Tk1L9//8DbHnroxb59XQMD73OJMC8PM2YgJQW9emHfPkgkUCrx3HOwRtZdvHgRNozRzz/HgQMAcO4c3nzTNjXh6+tbVFRUUlLSr18/Oql/YFGMdjKff/75gQMHnJ2dlyxZUlVVlZ+fn5+ff/36dZ1Op9PpAEgkEolkmcEAAB4eCAy8679u3SCRYPlybNuG6mqUlyMuzir9rK6uLikpkclkPXr0sEqBeyxdCu5t+hs22KYgAPj5+RUVFZWWlppjlEajDyCK0c7k9OnTy5YtA/Dpp58uXLjQvF2v1+ffdvlyqU4nzc9Hfj4qKpCVhaysOy1s2oSRIyGRYN8+63aVO6Pv169f63P4O7umuWaDk3q6NmqfKEY7jcrKyqefflqv1y9durRphgJwcXEJDg4ODg5u9is3boDL00uXGj8MGICMDLz7LqZPx2uvWbG3XIya37BnbePHwzwhdeJEHuYbtJGNF6A2l2CMcW/bIvaAYrRzYIwtWrRIp9ONGDGi7SvX+/jAxwdhYXe2nDsHAP7+WLQImzdj+nQr9BWAze8v3V6MDgCsOT+1uabDQxuccXOT/CsrKysqKjw9Pa1XiLRLVz7h6ko+/PDD7777zsvLa9euXc7OzpY3uHSp5W20pqpqzLhx6mHDoqxbRmhNR6C2OeOmu0x2iGK0Ezh69Oibb74pEom+/PJLC0+T+/aFUgkAYjG2bYNIhLw8fjrZzPHjY44cWdajxyyrtG437j2p5z1GCwoKWqpI7ATFqL27efPm3LlzDQbDypUruXflWcLVFeYrqBoN1q7F6tWW9vC+8vMBWGUelV1pOgL18PBwcnKqqqriXlNiOe7NWIMHD965c6d5I8WoHaIYtWsmk2n+/PkFBQXjxo1bv349v42/8gpcXLBjB44c4bdhALh0CXgAYrRZqD3zzDOLFi2qq6uzvOWcnJwJEyasWrWqvr7+zJkz5u3cq08oRu2LwG+YIq1SqVQA/P39//rrL2u0/+abDGATJ/LcbGkpA5inJ8/N2qHz588DGDx4MI9tNl1xukePHj/99BO3vaysbMGCBQCeeOKJ8lZWoSI2RzFqvw4cOMAtGrF//34rlaioYP7+DGD3rBlskT/+YAALDeWzTft048YNAN26deOrwWvXrt13xel9+/Zxr3P18PCwxtJPxBIUo3aqqKiIO2G09qohajUD2JAhrL6etza3b2cAmzWLtwbtlslkcnBwEIlEx44ds7y1pitOf/3119zG6upqhULBzRIdP368eaFQYj8oRu1RfX19ZGQkgKioKGuvX1ZXxwYOZABLSOCtzbg4BrDXX+etQXu2Y8cO7l3U3GpUHWuk6YrTjz/+uPkazpEjRwYNGgRAJpPFxcW1vjoWEQrFqD167bXXAAQEBJSUlNig3LZtDGA9e7KqKn4afP55BrCPPuKnNTtXWlq6YsUKbi1VbsC4Z8+edi0lYl5x2tnZ2bzitMFgUKlU3IpVISEhGRkZVvsGxFIUo3ZHq9WKRCJHR8e0tDTbVDSZ2NSpNRMmJG/Y0Ka1gi9fZr/+ytRqJpezYcPY7Vsgd2zbxhYvZkeO8N9Vu3Xr1i21Wm1+D8vw4cOTkpLq/+5CSdMVp8eMGaPT6bjtZ86cGTVqFACJRKJUKtu7NBaxMYpR+5KTk8M95Ld582Zb1j106BAANze3a9euNdtVX1//559/bt26dfny5XPnxvr4NK4Ob/6v6cXbTZuYXN74+YUXWEGBrb6AfaiqqlKr1QHceiZA//791Wq1Xq9v6fh///vfAKRS6YYNG7irNyaTSa1Wc1cJuAWsbNh90kEUo3akpqaGG4M8/fTTtq8+ffp0AC+//LJ5y6effhoWFiaTyczT46RSqVRa5+nJIiKYQsE0Gpaaypqu9bl2LXv4YbZ7N2OMPfUUezBvhxgMhqSkJG4ZV26+mkqlKisru/fI6urqWbNmnTp1ivvx0qVLjzzyCPdbcrm8srLSth0nHUQxakfq6+uVSuWgQYNu3bpl++pnz551cHBwdHS8cOECt4Wb8C8SiQYMGDB79uy3335bq9UWFt7/BFOvZzodW7uWbdvGwsJYZeWDG6Mco9Go1WrDw8O5WPTw8FAoFFevXm3pePOKVd27d+/wrSoiCIpRuyPgGGTx4sXcdEXux4sXLx46dKilmd5lZSw1tfEK6ejRzMmJ9ezJ1q5le/eyxET2xhsPeoyapaammqeCurq6KhSKwsLCpgdcv379ySef5A6YM2eObe4rEh5RjJI7Ll++7OrqCiA9Pb3ZLqPRmJOTs3379vff//GJJ1jv3s2vkDo4sOHDmVLJ9u5lJhObPJmFhlKM3pGWlhYdHc1N/5RKpXK5/Ny5c4yxn3/+uWfPngA8PT1pXn0nRTFK7rJ69WoAEyZMMBgMZ86cSUpKUigUUVFRPrfXdQoNfYTLTXd3Nno0k8uZWs1SU1l1NWOscTTKGDtzhjk6Uow2l5mZOXfuXG4ak1gsDgoK4v6vRkVFFRUVCd070kEi1tFFJUmXVFFRMXDgwNLSUrFYbLx7jc3evXuHhob+4x+Rw4atCg3FQw/h3vev5+XBy6txKb0//sDw4eDj5ahdTX5+vlqt/uyzz0aNGnXy5Ml169atXLmya6+20rVRjJLmdu/efezYsffff79fv37Dhg0bPXr06NGjw8PDbbY43QPiypUr3Ex78wQp0klRjJL70Ov1IpGIl9fsE9LlUYwSQohF6HIMIYRYhGKUEEIsQjFKCCEWoRglhBCL/D8No40iWD+PAgAAAeR6VFh0cmRraXRQS0wgcmRraXQgMjAyMC4wOS40AAB4nHu/b+09BiDgAWJGBgiQAmIZIG5gZGNIAIkzQ2gmJgjNzAjjc0DkGdkZMkDiTIxsDhogBgs7hGaG8+EKYCZBJdgcwBJAI4lioJsOlYALoLgP5m5GZnSN3EC/MjIxMDEDxRiYWBlY2RTY2DOY2DkSODgVOLkYuLgZuHkymHh4E3j5Mpj4+BP4BTKYOAQzmASFEoSEM5iERRJERBlExRhExRlEJBIkJDOYJNkSBLgTJAQTRJjZ2CQlBDnY2Xh4+fgFuFmFBCVEhMVhgcsgVbdCxP7KqqMOII6rp/r+tUmrwOxWO479J0VLwex/e4Ps2755g9kfVjM7ZDk3gtkqEo/2V7XagdmHJ13af2n1XnsQmyNoyr4Zt8LAbL5KnX3rHqvvB7EV3k+3jzVYBmYzfpFyYLB/sg/EVtxc6ODm1w0Wv1ha6bAlTPUAiF0ptcLhe6kfmL1xxnmHlU/FwezI7acd4m8kgNWfDF/g4J1bCDaHuWPz/hKhg2Bxb+Uz+yfsswerj8l2OXCrLBDM7swtOmCY9QuspuDiigMvzj0Es2d/OnpggoktWM17r90HFqceApup1Gxw4PbyWLCaS64WB7LFFMH+EgMAYvKFyi5y09UAAAHRelRYdE1PTCByZGtpdCAyMDIwLjA5LjQAAHicnVVLrtswDNznFLpABH5EUlw3b1X0Feiid+i+90cpWyYSoAUaGkYwk0jj0ZBmbm1dPx5ff/1uedHjdmukjWZr8Nfb3dtPAoDbWg9dJthC2tEMz+/iV2hf2r8knu+lcoeuwrL2SmcaUlURJlp7uU/ymkrsmMRbBad6TYU6iI2FRgd+8fL9/0+E3VTHqef24uXzHRUdclQG+5g4q+nSdNsJsXPNC3TUOa6aS81LnAOnwXk28kPvfS+R6SDE08sYVS/cLYp0eoE5uaoS4S4Hd4o3ikdNRTrJ0bt37kQKNRWNLjl6N7ywVb1oZ9Wd7rRqLtIBj/my+o+LNYrKDKBdI4FZO9Ha62PXyP0l3TfeAO6gjrtGRrX5Enttmp+uXLT2BtyjX0z0mjSjOL1j8k/xnYtordLhZcqRRlSa7Zo076pQt/hD2l2n1X6h6Nhrwik5VdKNMOn4XCQQJwk0kgSS5180SSBLEmgeixcJ5Em8IVzLAq2Btgk2TAeBkK89gXAkGQ0liTTUJNrQnp+TDgJhOghEcJFAhEmwUToIRPxMMoO1LB0EonRAZwb7OXacJ5elnW+tfXw+bn8AOk5dd/c5fPIAAAE+elRYdFNNSUxFUyByZGtpdCAyMDIwLjA5LjQAAHicJVE5jsQwDPvKlhlAMaxbQsr0s49IPy/Yxy/tcSVQFEXR930f9+/r/fDnOd73I8968nrk83wO9F73qvnn75jDa0YHxeBMpuucI1wthHyomPuGXEWmkY6SNkAThQoLEK5ooUvG9NQkG1PbClM8MkKDZHRGbyDMmXhYcX1XSXVUEeS0JXVjHGXKtI04mHTxXlIEBelSX9tMmG2RzDwbkzoyw2ORZpVupDpL6BQcqQaTPgSXKJ06RLwhFDCT2oujqSiAaATrkq4snXts8kxZkKhnfK+zCYm1zmfpF3JcrkurO+a6UAfCnb4XplRtKCvb1mB7ILHrhK10T9qRGa8Y8B3lFVsLLN2scullQhOpwRea6bWdhiO0jUBcAomGtOAfXn//goNsIaSTrMUAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "remove_salts(example)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2462,9 +2100,21 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":6: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['normalized'] = dataset['mol'].apply(normalize)\n" + ] + }, { "data": { "text/html": [ @@ -2491,6 +2141,8 @@ " SMILEs\n", " Failed_at\n", " mol\n", + " Inorganics\n", + " removed_salts\n", " normalized\n", " \n", " \n", @@ -2501,8 +2153,10 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb531fb70>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb531c4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", + " True\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d4170>\n", " \n", " \n", " 1\n", @@ -2510,8 +2164,10 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53260d0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5324f80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d49e0>\n", " \n", " \n", " 2\n", @@ -2519,8 +2175,10 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53266c0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb531c530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d4a30>\n", " \n", " \n", " 3\n", @@ -2528,8 +2186,10 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5326670>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53486c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ea030>\n", " \n", " \n", " 4\n", @@ -2537,8 +2197,10 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5326710>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5348710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ead50>\n", " \n", " \n", "\n", @@ -2559,22 +2221,29 @@ "3 OC(=O)C(S)C(S)C(O)=O 0 \n", "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", - " mol \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", + " mol Inorganics \\\n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "\n", + " removed_salts \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", "\n", " normalized \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 " ] }, - "execution_count": 18, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -2608,7 +2277,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -2618,7 +2287,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -2635,7 +2304,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -2643,7 +2312,13 @@ "output_type": "stream", "text": [ "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n", - "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n" + "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n", + ":7: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['canonicalized tautomer'] = dataset['SMILEs'].apply(handle_tautomers.canonicalize_tautomer)\n" ] }, { @@ -2672,8 +2347,9 @@ " SMILEs\n", " Failed_at\n", " mol\n", + " Inorganics\n", + " removed_salts\n", " normalized\n", - " duplicate?\n", " canonicalized tautomer\n", " \n", " \n", @@ -2684,9 +2360,10 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb531fb70>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb531c4e0>\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", + " True\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d4170>\n", " CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...\n", " \n", " \n", @@ -2695,9 +2372,10 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53260d0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5324f80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d49e0>\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " \n", " \n", @@ -2706,9 +2384,10 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53266c0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb531c530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d4a30>\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " \n", " \n", @@ -2717,9 +2396,10 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5326670>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb53486c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ea030>\n", " O=C(O)C(S)C(S)C(=O)O\n", " \n", " \n", @@ -2728,9 +2408,10 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5326710>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb5348710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ead50>\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " \n", " \n", @@ -2752,19 +2433,26 @@ "3 OC(=O)C(S)C(S)C(O)=O 0 \n", "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", - " mol \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", + " mol Inorganics \\\n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "\n", + " removed_salts \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", "\n", - " normalized duplicate? \\\n", - "0 False \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", + " normalized \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", "\n", " canonicalized tautomer \n", "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... \n", @@ -2774,7 +2462,7 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] " ] }, - "execution_count": 27, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -2792,7 +2480,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -2821,8 +2509,9 @@ " SMILEs\n", " Failed_at\n", " mol\n", + " Inorganics\n", + " removed_salts\n", " normalized\n", - " duplicate?\n", " canonicalized tautomer\n", " \n", " \n", @@ -2833,9 +2522,10 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b350>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb52b1b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344d50>\n", " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c5930edf0>\n", " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " \n", " \n", @@ -2844,9 +2534,10 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b3a0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb52b1bc0>\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344da0>\n", + " True\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c5930ec60>\n", " CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]\n", " \n", " \n", @@ -2855,9 +2546,10 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b3f0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb52b1c10>\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344df0>\n", + " True\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c5930eee0>\n", " C=CC1=C(C)c2cc3[n-]c(cc4[nH]c(cc5nc(cc1n2)C(C)...\n", " \n", " \n", @@ -2866,9 +2558,10 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b440>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb52b1c60>\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e40>\n", + " True\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ccd50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c5930eda0>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " \n", " \n", @@ -2877,9 +2570,10 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b490>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb52b1cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e90>\n", " True\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365f30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592c1490>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " \n", " \n", @@ -2894,19 +2588,26 @@ "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", - " Failed_at mol \\\n", - "199 0 \n", - "200 0 \n", - "201 0 \n", - "202 0 \n", - "203 0 \n", + " Failed_at mol Inorganics \\\n", + "199 0 False \n", + "200 0 True \n", + "201 0 True \n", + "202 0 True \n", + "203 0 True \n", "\n", - " normalized duplicate? \\\n", - "199 False \n", - "200 False \n", - "201 False \n", - "202 False \n", - "203 True \n", + " removed_salts \\\n", + "199 \n", + "200 \n", + "201 \n", + "202 \n", + "203 \n", + "\n", + " normalized \\\n", + "199 \n", + "200 \n", + "201 \n", + "202 \n", + "203 \n", "\n", " canonicalized tautomer \n", "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", @@ -2916,7 +2617,7 @@ "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... " ] }, - "execution_count": 28, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -2934,14 +2635,20 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":13: SettingWithCopyWarning: \n", + ":9: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dataset['duplicate?'] = dataset.duplicated(subset=['SMILEs'])\n", + ":13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -2975,7 +2682,10 @@ " SMILEs\n", " Failed_at\n", " mol\n", + " Inorganics\n", + " removed_salts\n", " normalized\n", + " canonicalized tautomer\n", " duplicate?\n", " \n", " \n", @@ -2986,8 +2696,11 @@ " Cerivastatin sodium\n", " COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc...\n", " 10\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532a9e0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb52b1210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593443f0>\n", + " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c593443f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59308440>\n", + " COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...\n", " True\n", " \n", " \n", @@ -2996,8 +2709,11 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 10\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb532b490>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7febb52b1cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e90>\n", + " True\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365f30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f2c592c1490>\n", + " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " True\n", " \n", " \n", @@ -3013,16 +2729,24 @@ "168 COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc... 10 \n", "203 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 10 \n", "\n", - " mol \\\n", - "168 \n", - "203 \n", + " mol Inorganics \\\n", + "168 False \n", + "203 True \n", + "\n", + " removed_salts \\\n", + "168 \n", + "203 \n", "\n", - " normalized duplicate? \n", - "168 True \n", - "203 True " + " normalized \\\n", + "168 \n", + "203 \n", + "\n", + " canonicalized tautomer duplicate? \n", + "168 COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(... True \n", + "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... True " ] }, - "execution_count": 26, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -3048,7 +2772,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -3057,7 +2781,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ diff --git a/opencadd/compounds/standardization/remove_salts.py b/opencadd/compounds/standardization/remove_salts.py index 67c57f91..4af07338 100644 --- a/opencadd/compounds/standardization/remove_salts.py +++ b/opencadd/compounds/standardization/remove_salts.py @@ -65,15 +65,17 @@ def remove_salts(mol, dictionary=True, *args, **kwargs): while i < list_len: salt = salts[i] salt_name = salt_names[i] - test = Chem.MolToInchi(mol) + test = Chem.MolToSmiles(mol) i += 1 remover = SaltRemover(defnData=salt) stripped_mol = remover.StripMol(mol) - test_inchi = Chem.MolToInchi(stripped_mol) - if test_inchi != test: + if stripped_mol.GetNumAtoms()==0: + print(test) + break + test_smiles = Chem.MolToSmiles(stripped_mol) + if test_smiles != test: logging.debug("Following salt was stripped: %s", salt_name) mol = stripped_mol - continue else: mol = SaltRemover(*args, **kwargs).StripMol(mol) From 18238b14db786bf29dac5087c193adecf969056c Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 11 Apr 2021 20:51:20 +0200 Subject: [PATCH 26/55] Fixed salt removal part, added TODOs --- docs/tutorials/standardization.ipynb | 3012 +++++++++++++++++--------- 1 file changed, 1979 insertions(+), 1033 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 9b03c07f..3ec9bda8 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -238,21 +238,21 @@ "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [14:36:22] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n", - ":13: SettingWithCopyWarning: \n", + ":9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -295,7 +295,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec350>\n", " \n", " \n", " 1\n", @@ -303,7 +303,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec170>\n", " \n", " \n", " 2\n", @@ -311,7 +311,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec2b0>\n", " \n", " \n", " 3\n", @@ -319,7 +319,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138da580>\n", " \n", " \n", " 4\n", @@ -327,7 +327,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73306f91c0>\n", " \n", " \n", " 5\n", @@ -335,7 +335,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138418a0>\n", " \n", " \n", " 6\n", @@ -343,7 +343,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852080>\n", " \n", " \n", " 7\n", @@ -351,7 +351,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349030>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138520d0>\n", " \n", " \n", " 8\n", @@ -359,7 +359,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852120>\n", " \n", " \n", " 9\n", @@ -367,7 +367,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593490d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852170>\n", " \n", " \n", " 10\n", @@ -375,7 +375,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138521c0>\n", " \n", " \n", " 11\n", @@ -383,7 +383,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852210>\n", " \n", " \n", " 12\n", @@ -391,7 +391,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593491c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852260>\n", " \n", " \n", " 13\n", @@ -399,15 +399,7 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349210>\n", - " \n", - " \n", - " 14\n", - " 15\n", - " 6-Mercaptopurine\n", - " Sc1ncnc2[nH]c[nH]c12\n", - " 0\n", - " None\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138522b0>\n", " \n", " \n", " 15\n", @@ -415,7 +407,15 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852300>\n", + " \n", + " \n", + " 16\n", + " 17\n", + " Acarbose\n", + " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852350>\n", " \n", " \n", "\n", @@ -437,44 +437,44 @@ "11 12 5-Azacitidine \n", "12 13 5-Bromouracil \n", "13 14 5-fluoro-2'-deoxyuridine \n", - "14 15 6-Mercaptopurine \n", "15 16 Acadesine \n", + "16 17 Acarbose \n", "\n", - " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", - "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", - "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", - "8 Nc1ccc(cc1)C(O)=O 0 \n", - "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", - "10 FC1=CNC(=O)NC1=O 0 \n", - "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", - "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", - "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", - "14 Sc1ncnc2[nH]c[nH]c12 0 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", + "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", + "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", + "8 Nc1ccc(cc1)C(O)=O 0 \n", + "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", + "10 FC1=CNC(=O)NC1=O 0 \n", + "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", + "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", + "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "14 None \n", - "15 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 " ] }, "execution_count": 5, @@ -489,10 +489,6 @@ "# A column called mol is beeing added to the dataframe to store the mol-files\n", "dataset['mol'] = dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", "\n", - "#test set\n", - "test_numpy = dataset\n", - "\n", - "\n", "# All entries which couldn't generate a mol will get filtered another dataframe\n", "failed_step_1 = dataset[(dataset['mol'].isnull())]\n", "failed_step_1['Failed_at'] = failed_step_1['Failed_at'].apply(failMarker)\n", @@ -500,23 +496,123 @@ "\n", "# Update the dataset by removing all entries without a mol\n", "result1 = dataset[dataset['mol'].notna()]\n", - "test_numpy.head(16)\n" + "result1.head(16)\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_at
14156-MercaptopurineSc1ncnc2[nH]c[nH]c121
4142AlfuzosinCOc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO11
5758AminophyllineCN1C(=O)N(C)c2[nH]c[nH]c2C1=O1
8586AzathioprineCn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O1
9091BacitracinCCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC...1
133134CamptothecinCCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O1
182183ChloroquineCCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc121
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs \\\n", + "14 15 6-Mercaptopurine Sc1ncnc2[nH]c[nH]c12 \n", + "41 42 Alfuzosin COc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO1 \n", + "57 58 Aminophylline CN1C(=O)N(C)c2[nH]c[nH]c2C1=O \n", + "85 86 Azathioprine Cn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O \n", + "90 91 Bacitracin CCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC... \n", + "133 134 Camptothecin CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O \n", + "182 183 Chloroquine CCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc12 \n", + "\n", + " Failed_at \n", + "14 1 \n", + "41 1 \n", + "57 1 \n", + "85 1 \n", + "90 1 \n", + "133 1 \n", + "182 1 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "#Testing numpy.where\n", - "\n", - "#df = test_numpy\n", - "\n", - "#df['Failed_at'] = np.where((df['mol'].isnull()),df['Failed_at'].apply(failMarker), df['Failed_at'])\n", - "#df['Inorganics'] = np.where((df['Failed_at'].isnull()),df['mol'].apply(detect_inorganic),None)\n", - "#df['new_test'] = np.where((df[\"Failed_at\"].isnull()),df['SMILEs'].apply(handle_tautomers.canonicalize_tautomer),df['Failed_at'])\n", - "#df.head(50)" + "# Show the subset of all failed entries\n", + "failed_step_1.head(16)" ] }, { @@ -554,13 +650,7 @@ "name": "stderr", "output_type": "stream", "text": [ - ":7: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", - ":11: SettingWithCopyWarning: \n", + ":11: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -568,6 +658,257 @@ " failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n" ] }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolInorganics
185186ChlorpromazineCN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc120<rdkit.Chem.rdchem.Mol object at 0x7f731384e850>False
186187ChlorpropamideCCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc10<rdkit.Chem.rdchem.Mol object at 0x7f731384e8a0>False
187188ChlortetracyclineCN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...0<rdkit.Chem.rdchem.Mol object at 0x7f731384e8f0>False
188189ChlorzoxazoneOc1nc2cc(Cl)ccc2o10<rdkit.Chem.rdchem.Mol object at 0x7f731384e940>False
189190CholestyramineCC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...0<rdkit.Chem.rdchem.Mol object at 0x7f731384e990>False
190191Chondroitin sulfateCC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...0<rdkit.Chem.rdchem.Mol object at 0x7f731384e9e0>False
191192CidofovirNC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C10<rdkit.Chem.rdchem.Mol object at 0x7f731384ea30>False
192193CimetidineCN=C(NCCSCc1nc[nH]c1C)NC#N0<rdkit.Chem.rdchem.Mol object at 0x7f731384ea80>False
193194CinchophenOC(=O)c1cc(nc2ccccc12)-c1ccccc10<rdkit.Chem.rdchem.Mol object at 0x7f731384ead0>False
194195CinoxacinCCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc120<rdkit.Chem.rdchem.Mol object at 0x7f731384eb20>False
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f731384eb70>False
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7f731384ebc0>False
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0<rdkit.Chem.rdchem.Mol object at 0x7f731384ec10>False
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10<rdkit.Chem.rdchem.Mol object at 0x7f731384ec60>False
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>False
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "185 186 Chlorpromazine \n", + "186 187 Chlorpropamide \n", + "187 188 Chlortetracycline \n", + "188 189 Chlorzoxazone \n", + "189 190 Cholestyramine \n", + "190 191 Chondroitin sulfate \n", + "191 192 Cidofovir \n", + "192 193 Cimetidine \n", + "193 194 Cinchophen \n", + "194 195 Cinoxacin \n", + "195 196 Ciprofibrate \n", + "196 197 Ciprofloxacin \n", + "197 198 Cisapride \n", + "198 199 Citalopram \n", + "199 200 Citric acid \n", + "\n", + " SMILEs Failed_at \\\n", + "185 CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12 0 \n", + "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", + "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", + "188 Oc1nc2cc(Cl)ccc2o1 0 \n", + "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", + "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", + "191 NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1 0 \n", + "192 CN=C(NCCSCc1nc[nH]c1C)NC#N 0 \n", + "193 OC(=O)c1cc(nc2ccccc12)-c1ccccc1 0 \n", + "194 CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 0 \n", + "195 CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O 0 \n", + "196 OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O 0 \n", + "197 COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... 0 \n", + "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", + "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", + "\n", + " mol Inorganics \n", + "185 False \n", + "186 False \n", + "187 False \n", + "188 False \n", + "189 False \n", + "190 False \n", + "191 False \n", + "192 False \n", + "193 False \n", + "194 False \n", + "195 False \n", + "196 False \n", + "197 False \n", + "198 False \n", + "199 False " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setting up the taskNum \n", + "taskNum = 2\n", + "# getting the valid entries from the step before\n", + "dataset = result1\n", + "\n", + "# Check for inorganic structures in the entries\n", + "dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", + "\n", + "# Filter the failed entries\n", + "failed_step_2 = dataset[dataset['Inorganics']== True]\n", + "failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n", + "\n", + "\n", + "# Safe entries that passed\n", + "result2 = dataset[dataset['Inorganics']== False]\n", + "result2.tail(15)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -604,7 +945,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec350>\n", " True\n", " \n", " \n", @@ -613,7 +954,7 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59342260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384d170>\n", " True\n", " \n", " \n", @@ -622,7 +963,7 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ed00>\n", " True\n", " \n", " \n", @@ -631,7 +972,7 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ed50>\n", " True\n", " \n", " \n", @@ -640,7 +981,7 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384eda0>\n", " True\n", " \n", " \n", @@ -649,7 +990,7 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384edf0>\n", " True\n", " \n", " \n", @@ -666,35 +1007,22 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol Inorganics \n", - "0 2 True \n", - "114 2 True \n", - "200 2 True \n", - "201 2 True \n", - "202 2 True \n", - "203 2 True " + "0 2 True \n", + "114 2 True \n", + "200 2 True \n", + "201 2 True \n", + "202 2 True \n", + "203 2 True " ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum \n", - "taskNum = 2\n", - "# getting the valid entries from the step before\n", - "dataset = result1\n", - "\n", - "# Check for inorganic structures in the entries\n", - "dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", - "\n", - "# Filter the failed entries\n", - "failed_step_2 = dataset[dataset['Inorganics']== True]\n", - "failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n", - "\n", - "# Safe entries that passed\n", - "result2 = dataset[dataset['Inorganics']== False]\n", - "failed_step_2.tail(15)" + "# Show the subset of all failed entries\n", + "failed_step_2.head(16)" ] }, { @@ -706,154 +1034,154 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Removed fragment: 1,4-dioxane\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - ":7: SettingWithCopyWarning: \n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Removed fragment: 1,4-dioxane\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:39] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + ":7: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", - ":10: SettingWithCopyWarning: \n", + ":10: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", - ":13: SettingWithCopyWarning: \n", + ":13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - ":14: SettingWithCopyWarning: \n", + ":14: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", - ":19: SettingWithCopyWarning: \n", + ":19: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -861,6 +1189,133 @@ " failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n" ] }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmol
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f731384eb70>
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7f731384ebc0>
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0<rdkit.Chem.rdchem.Mol object at 0x7f731384ec10>
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10<rdkit.Chem.rdchem.Mol object at 0x7f731384ec60>
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs \\\n", + "195 196 Ciprofibrate CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O \n", + "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", + "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", + "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", + "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", + "\n", + " Failed_at mol \n", + "195 0 \n", + "196 0 \n", + "197 0 \n", + "198 0 \n", + "199 0 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setting up the taskNum \n", + "taskNum = 3\n", + "# getting the valid entries from the step before\n", + "dataset = result2\n", + "\n", + "# Perform remove_fragments on entries\n", + "dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", + "\n", + "# Create Smiles for evaluation\n", + "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + "\n", + "# Create new SMILEs from the current state for evaluation of performed changes \n", + "dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", + "\n", + "\n", + "# Filter the failed entries\n", + "failed_step_3 = dataset[dataset['noChanges']== False]\n", + "failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n", + "\n", + "# Safe entries that passed\n", + "result3 = dataset[dataset['noChanges']== True]\n", + "result3 = result3[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "result3.tail()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -901,9 +1356,9 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138418a0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c5936ee90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313879d50>\n", " C1COCCO1.OCC1OC(O)CC(O)C1O\n", " OCC1OC(O)CC(O)C1O\n", " False\n", @@ -917,46 +1372,23 @@ "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 3 \n", "\n", " mol Inorganics \\\n", - "5 False \n", + "5 False \n", "\n", " mol_after \\\n", - "5 \n", + "5 \n", "\n", " smiles_before Smiles 3 noChanges \n", "5 C1COCCO1.OCC1OC(O)CC(O)C1O OCC1OC(O)CC(O)C1O False " ] }, - "execution_count": 8, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum \n", - "taskNum = 3\n", - "# getting the valid entries from the step before\n", - "dataset = result2\n", - "\n", - "# Perform remove_fragments on entries\n", - "dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", - "\n", - "# Create Smiles for evaluation\n", - "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", - "\n", - "# Create new SMILEs from the current state for evaluation of performed changes \n", - "dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", - "\n", - "\n", - "# Filter the failed entries\n", - "failed_step_3 = dataset[dataset['noChanges']== False]\n", - "failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n", - "\n", - "# Safe entries that passed\n", - "result3 = dataset[dataset['noChanges']== True]\n", - "result3 = result3[['IDs','Names','SMILEs','Failed_at','mol']]\n", - "failed_step_3.tail()\n", - "\n" + "# Show the subset of all failed entries\n", + "failed_step_3.head(16)" ] }, { @@ -968,437 +1400,443 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Running FragmentRemover\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n", - "RDKit INFO: [14:36:22] Initializing MetalDisconnector\n", - "RDKit INFO: [14:36:22] Running MetalDisconnector\n" + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Running FragmentRemover\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n", + "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", + "RDKit INFO: [20:45:40] Running MetalDisconnector\n" ] }, { @@ -1427,6 +1865,7 @@ " SMILEs\n", " Failed_at\n", " mol\n", + " noChanges\n", " \n", " \n", " \n", @@ -1436,7 +1875,8 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344c10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb70>\n", + " True\n", " \n", " \n", " 196\n", @@ -1444,7 +1884,8 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344c60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ebc0>\n", + " True\n", " \n", " \n", " 197\n", @@ -1452,7 +1893,8 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec10>\n", + " True\n", " \n", " \n", " 198\n", @@ -1460,7 +1902,8 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344d00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec60>\n", + " True\n", " \n", " \n", " 199\n", @@ -1468,7 +1911,8 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>\n", + " True\n", " \n", " \n", "\n", @@ -1482,15 +1926,15 @@ "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", "\n", - " Failed_at mol \n", - "195 0 \n", - "196 0 \n", - "197 0 \n", - "198 0 \n", - "199 0 " + " Failed_at mol noChanges \n", + "195 0 True \n", + "196 0 True \n", + "197 0 True \n", + "198 0 True \n", + "199 0 True " ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -1514,25 +1958,80 @@ "# Filter the failed entries\n", "failed_step_4 = dataset[dataset['noChanges']== False]\n", "failed_step_4['Failed_at'] = failed_step_4['Failed_at'].apply(failMarker)\n", + "failed_step_4 = failed_step_4[['IDs','Names','SMILEs','Failed_at','mol']]\n", "failed_step_4.tail()\n", "\n", "# Safe entries that passed\n", "result4 = dataset[dataset['noChanges']== True]\n", - "result4 = result4[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "result4 = result4[['IDs','Names','SMILEs','Failed_at','mol','noChanges']]\n", "result4.tail()" ] }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmol
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [IDs, Names, SMILEs, Failed_at, mol]\n", + "Index: []" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Show the subset of all failed entries\n", + "failed_step_4.head(16)" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Task 5: Filter inorganics again \n", - "This step actually doesn't make much sense here, since no actual changes happend to the entries in this first step\n" + "This step actually doesn't make much sense here, since no actual changes happend to the entries in this first step, but the paper states that we do that. Maybe if we wish to keep the failed subsets and actually perform the modifications they need?\n" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -1561,21 +2060,187 @@ " SMILEs\n", " Failed_at\n", " mol\n", - " Inorganics2\n", " \n", " \n", " \n", + " \n", + " 185\n", + " 186\n", + " Chlorpromazine\n", + " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384e850>\n", + " \n", + " \n", + " 186\n", + " 187\n", + " Chlorpropamide\n", + " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384e8a0>\n", + " \n", + " \n", + " 187\n", + " 188\n", + " Chlortetracycline\n", + " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384e8f0>\n", + " \n", + " \n", + " 188\n", + " 189\n", + " Chlorzoxazone\n", + " Oc1nc2cc(Cl)ccc2o1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384e940>\n", + " \n", + " \n", + " 189\n", + " 190\n", + " Cholestyramine\n", + " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384e990>\n", + " \n", + " \n", + " 190\n", + " 191\n", + " Chondroitin sulfate\n", + " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384e9e0>\n", + " \n", + " \n", + " 191\n", + " 192\n", + " Cidofovir\n", + " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ea30>\n", + " \n", + " \n", + " 192\n", + " 193\n", + " Cimetidine\n", + " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ea80>\n", + " \n", + " \n", + " 193\n", + " 194\n", + " Cinchophen\n", + " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ead0>\n", + " \n", + " \n", + " 194\n", + " 195\n", + " Cinoxacin\n", + " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb20>\n", + " \n", + " \n", + " 195\n", + " 196\n", + " Ciprofibrate\n", + " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb70>\n", + " \n", + " \n", + " 196\n", + " 197\n", + " Ciprofloxacin\n", + " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ebc0>\n", + " \n", + " \n", + " 197\n", + " 198\n", + " Cisapride\n", + " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec10>\n", + " \n", + " \n", + " 198\n", + " 199\n", + " Citalopram\n", + " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec60>\n", + " \n", + " \n", + " 199\n", + " 200\n", + " Citric acid\n", + " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>\n", + " \n", " \n", "\n", "" ], "text/plain": [ - "Empty DataFrame\n", - "Columns: [IDs, Names, SMILEs, Failed_at, mol, Inorganics2]\n", - "Index: []" + " IDs Names \\\n", + "185 186 Chlorpromazine \n", + "186 187 Chlorpropamide \n", + "187 188 Chlortetracycline \n", + "188 189 Chlorzoxazone \n", + "189 190 Cholestyramine \n", + "190 191 Chondroitin sulfate \n", + "191 192 Cidofovir \n", + "192 193 Cimetidine \n", + "193 194 Cinchophen \n", + "194 195 Cinoxacin \n", + "195 196 Ciprofibrate \n", + "196 197 Ciprofloxacin \n", + "197 198 Cisapride \n", + "198 199 Citalopram \n", + "199 200 Citric acid \n", + "\n", + " SMILEs Failed_at \\\n", + "185 CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12 0 \n", + "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", + "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", + "188 Oc1nc2cc(Cl)ccc2o1 0 \n", + "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", + "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", + "191 NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1 0 \n", + "192 CN=C(NCCSCc1nc[nH]c1C)NC#N 0 \n", + "193 OC(=O)c1cc(nc2ccccc12)-c1ccccc1 0 \n", + "194 CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 0 \n", + "195 CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O 0 \n", + "196 OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O 0 \n", + "197 COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... 0 \n", + "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", + "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", + "\n", + " mol \n", + "185 \n", + "186 \n", + "187 \n", + "188 \n", + "189 \n", + "190 \n", + "191 \n", + "192 \n", + "193 \n", + "194 \n", + "195 \n", + "196 \n", + "197 \n", + "198 \n", + "199 " ] }, - "execution_count": 10, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -1592,10 +2257,66 @@ "# Filter the failed entries\n", "failed_step_5 = dataset[dataset['Inorganics2']== True]\n", "failed_step_5['Failed_at'] = failed_step_5['Failed_at'].apply(failMarker)\n", + "failed_step_5 = failed_step_5[['IDs','Names','SMILEs','Failed_at','mol']]\n", "\n", "# Safe entries that passed\n", "result5 = dataset[dataset['Inorganics2']== False]\n", - "failed_step_5.tail(15)" + "result5 = result5[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "result5.tail(15)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmol
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [IDs, Names, SMILEs, Failed_at, mol]\n", + "Index: []" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Show the subset of all failed entries\n", + "failed_step_5.head()" ] }, { @@ -1617,7 +2338,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -1633,12 +2354,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 6: Removing salts sadly fails ATM" + "#### Task 6: Removing salts " ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -1655,12 +2376,12 @@ "name": "stderr", "output_type": "stream", "text": [ - ":6: SettingWithCopyWarning: \n", + ":18: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['removed_salts'] = dataset['mol'].map(remove_salts)\n" + " changed_at_step_6['Changed_at'] = changed_at_step_6['Failed_at'].apply(failMarker)\n" ] }, { @@ -1690,7 +2411,10 @@ " Failed_at\n", " mol\n", " Inorganics\n", - " removed_salts\n", + " smiles_before\n", + " Smiles 5\n", + " no_removed_salt\n", + " Changed_at\n", " \n", " \n", " \n", @@ -1700,9 +2424,12 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf940>\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365e90>\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " False\n", + " 6.0\n", " \n", " \n", " 1\n", @@ -1710,9 +2437,12 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec170>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " True\n", + " NaN\n", " \n", " \n", " 2\n", @@ -1720,9 +2450,12 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec2b0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " True\n", + " NaN\n", " \n", " \n", " 3\n", @@ -1730,9 +2463,12 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138da580>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", + " O=C(O)C(S)C(S)C(=O)O\n", + " O=C(O)C(S)C(S)C(=O)O\n", + " True\n", + " NaN\n", " \n", " \n", " 4\n", @@ -1740,9 +2476,12 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73306f91c0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " True\n", + " NaN\n", " \n", " \n", " 5\n", @@ -1750,9 +2489,12 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138418a0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f30>\n", + " C1COCCO1.OCC1OC(O)CC(O)C1O\n", + " C1COCCO1.OCC1OC(O)CC(O)C1O\n", + " True\n", + " NaN\n", " \n", " \n", " 6\n", @@ -1760,9 +2502,12 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852080>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339f80>\n", + " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", + " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", + " True\n", + " NaN\n", " \n", " \n", " 7\n", @@ -1770,9 +2515,12 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349030>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138520d0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349030>\n", + " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", + " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", + " True\n", + " NaN\n", " \n", " \n", " 8\n", @@ -1780,9 +2528,12 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852120>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349080>\n", + " Nc1ccc(C(=O)O)cc1\n", + " Nc1ccc(C(=O)O)cc1\n", + " True\n", + " NaN\n", " \n", " \n", " 9\n", @@ -1790,9 +2541,12 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593490d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852170>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593490d0>\n", + " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", + " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", + " True\n", + " NaN\n", " \n", " \n", " 10\n", @@ -1800,9 +2554,12 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138521c0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349120>\n", + " O=c1[nH]cc(F)c(=O)[nH]1\n", + " O=c1[nH]cc(F)c(=O)[nH]1\n", + " True\n", + " NaN\n", " \n", " \n", " 11\n", @@ -1810,9 +2567,12 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852210>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349170>\n", + " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", + " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", + " True\n", + " NaN\n", " \n", " \n", " 12\n", @@ -1820,9 +2580,12 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593491c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852260>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593491c0>\n", + " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", + " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", + " True\n", + " NaN\n", " \n", " \n", " 13\n", @@ -1830,9 +2593,12 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138522b0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349210>\n", + " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", + " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", + " True\n", + " NaN\n", " \n", " \n", " 15\n", @@ -1840,9 +2606,12 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852300>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349440>\n", + " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", + " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", + " True\n", + " NaN\n", " \n", " \n", " 16\n", @@ -1850,9 +2619,12 @@ " Acarbose\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852350>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349350>\n", + " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", + " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", + " True\n", + " NaN\n", " \n", " \n", " 17\n", @@ -1860,9 +2632,12 @@ " Acebutolol\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138523a0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349490>\n", + " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1\n", + " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1\n", + " True\n", + " NaN\n", " \n", " \n", " 18\n", @@ -1870,9 +2645,12 @@ " Acenocoumarol\n", " CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593494e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138523f0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593494e0>\n", + " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", + " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", + " True\n", + " NaN\n", " \n", " \n", " 19\n", @@ -1880,9 +2658,12 @@ " Acetamide\n", " CC(N)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852440>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349530>\n", + " CC(N)=O\n", + " CC(N)=O\n", + " True\n", + " NaN\n", " \n", " \n", " 20\n", @@ -1890,9 +2671,12 @@ " Acetaminophen\n", " CC(=O)Nc1ccc(O)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313852490>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59349580>\n", + " CC(=O)Nc1ccc(O)cc1\n", + " CC(=O)Nc1ccc(O)cc1\n", + " True\n", + " NaN\n", " \n", " \n", "\n", @@ -1944,51 +2728,95 @@ "20 CC(=O)Nc1ccc(O)cc1 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "5 False \n", - "6 False \n", - "7 False \n", - "8 False \n", - "9 False \n", - "10 False \n", - "11 False \n", - "12 False \n", - "13 False \n", - "15 False \n", - "16 False \n", - "17 False \n", - "18 False \n", - "19 False \n", - "20 False \n", - "\n", - " removed_salts \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 \n", - "17 \n", - "18 \n", - "19 \n", - "20 " + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "5 False \n", + "6 False \n", + "7 False \n", + "8 False \n", + "9 False \n", + "10 False \n", + "11 False \n", + "12 False \n", + "13 False \n", + "15 False \n", + "16 False \n", + "17 False \n", + "18 False \n", + "19 False \n", + "20 False \n", + "\n", + " smiles_before \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", + "3 O=C(O)C(S)C(S)C(=O)O \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] \n", + "5 C1COCCO1.OCC1OC(O)CC(O)C1O \n", + "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O \n", + "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 \n", + "8 Nc1ccc(C(=O)O)cc1 \n", + "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 \n", + "10 O=c1[nH]cc(F)c(=O)[nH]1 \n", + "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 \n", + "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br \n", + "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N \n", + "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... \n", + "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1 \n", + "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... \n", + "19 CC(N)=O \n", + "20 CC(=O)Nc1ccc(O)cc1 \n", + "\n", + " Smiles 5 no_removed_salt \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 False \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O True \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O True \n", + "3 O=C(O)C(S)C(S)C(=O)O True \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", + "5 C1COCCO1.OCC1OC(O)CC(O)C1O True \n", + "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O True \n", + "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 True \n", + "8 Nc1ccc(C(=O)O)cc1 True \n", + "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 True \n", + "10 O=c1[nH]cc(F)c(=O)[nH]1 True \n", + "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 True \n", + "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br True \n", + "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F True \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N True \n", + "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... True \n", + "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1 True \n", + "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... True \n", + "19 CC(N)=O True \n", + "20 CC(=O)Nc1ccc(O)cc1 True \n", + "\n", + " Changed_at \n", + "0 6.0 \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "5 NaN \n", + "6 NaN \n", + "7 NaN \n", + "8 NaN \n", + "9 NaN \n", + "10 NaN \n", + "11 NaN \n", + "12 NaN \n", + "13 NaN \n", + "15 NaN \n", + "16 NaN \n", + "17 NaN \n", + "18 NaN \n", + "19 NaN \n", + "20 NaN " ] }, - "execution_count": 12, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1997,9 +2825,24 @@ "# Setting up the taskNum \n", "taskNum = 6\n", "# getting the valid entries from the step before\n", - "dataset = result1\n", - "#dataset.head(100)\n", - "dataset['removed_salts'] = dataset['mol'].map(remove_salts)\n", + "dataset = result1 # Load results 1 here, to see the functionality, 'cause all entries containing salts, have already been filtered by prior steps.\n", + "\n", + "# Create Smiles for evaluation\n", + "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + "\n", + "# Perform disconnect_metals on entries\n", + "dataset['mol'] = dataset['mol'].map(remove_salts)\n", + "\n", + "# Create new SMILEs from the current state for evaluation of performed changes \n", + "dataset['Smiles 5'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset['no_removed_salt']= dataset['smiles_before'] == dataset['Smiles 5']\n", + "\n", + "# Filter the changed entries\n", + "changed_at_step_6 = dataset[dataset['no_removed_salt']== False]\n", + "changed_at_step_6['Changed_at'] = changed_at_step_6['Failed_at'].apply(failMarker)\n", + "changed_at_step_6 = changed_at_step_6[['IDs','Names','SMILEs','Changed_at','mol']]\n", + "\n", + "dataset['Changed_at'] = dataset[dataset['no_removed_salt'] == False]['Failed_at'].apply(failMarker)\n", "dataset.head(20)\n", "\n", "#dataset['removed_salts'] = RemoveSaltsFromFrame(dataset,molCol='mol')\n", @@ -2008,87 +2851,86 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "Name: mol, dtype: object" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataset['mol'][0:10].apply(remove_salts)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "example = dataset['mol'].values[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAHs0lEQVR4nO3dXUhTfRzA8TO1RMO3UlNoGYpE9D5jJgXRKKtBiCFUKEUoQoZ5JXlRRphQdJEYUhIGZV1ECAaFQ7SuDNQe6kaMEsQtRLbMtBSdL3suRnvU1Myf+j8+fT9X/21nOz8hvp3jzpzB4/FoAICF8lM9AACsbGQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIkFEAECGjACBCRgFAhIwCgAgZBQARMgoAImQUAETIKACIBKgeAJjV2NiYw+FwuVy9vb0BAQExMTGxsbGRkZGq5wKm4GgUujMyMnL//v309PTIyMj4+Pjk5GSr1Zqamrpjx46oqKjdu3eXlJTY7fZfn3jixAnDT+3t7fPc3ePHj33PKi0tXdQfBX8FMgp9efDgQWJiYm5ubm1tbX9//68bvH//vri4ePPmzSUlJePj48s/ITANGYVejI2N5eTkZGdnOxyOaQ/5+U3/hzo8PFxcXJyZmUlJoRwZhS54PJ5Tp05VVVX57gkODs7Ly6uvr+/p6RkdHXW73Xa7vbq6+siRI75tnj59mp+fr2Je4D9kFLpw9+7dmpoa381Dhw61t7dXVFQcPnx4/fr1fn5+q1atMhqNWVlZNputtrY2IiJC07S4uLjc3Fx1UwOaRkahBw6Ho7Cw0Hfz2LFjL1682Lhx42zbp6Wl2Ww2q9Xa0tKya9euZZkRmBUXPEG9ysrKoaEh7zoyMvLRo0eBgYFzP8VsNr98+XLpRwN+j6NRKOZ2uyf/SrSkpIQrQ7GykFEo1tra2tPT410HBQWdPn1a7TzAnyKjUKy1tdW3Tk1NDQsLUzgMsABkFIq1tLT41iaTSeEkwMKQUSj2+fNn33r79u0KJwEWhnfqoVhfX59vvW7dusV6WZPJZDAY5rMln4OCEBmFYpM/OB8aGrpYLzs8PLxYLwXMjZN6KDb5YPDXz84D+sfRKBQLDw/v7u72rr9//75YL1tdXR0XFzefLevr669fv75Y+8VfiIxCsclXOH379m2xXjYpKWnLli3z2bKrq2uxdoq/E+dQUCw6Otq3/vjxo8JJgIUho1Bs8rWi7969UzgJsDBkFIolJyf71o2NjVx+hBWHjEKxvXv3BgUFedfd3d0NDQ1q5wH+FBmFYmFhYSdPnvTdvHr16sTEhMJ5gD9FRqHe+fPnfevm5ubbt28rHAb4U2QU6pnN5nPnzvluFhYWlpeX//ZZDofD6XQu5VxTdHV1/fOTy+Vatv1C/8godKGsrGzTpk3etcfjKSgosFgsTU1Nv57gj46O2my2zMzMhISEe/fuLc94vb29ZrN5z0/Pnj1bnv1iReDye+hCaGhoQ0PD0aNHOzo6vPe8fv16//790dHRKSkpMTEx4eHhvb29HR0db9++/fHjh3ebhw8fXrlyZZ5/gkSioKDA6XRGR0cv5/EvVgoyCr1ISEh48+bNmTNnbDab706n0/n8+fPZnvL161e73T7PD30uWF1d3ZMnTzRNu3Xr1tmzZ5d0X1iJOKmHjkRFRdXV1TU2Nh48eDAgYK7/43fu3FlaWtrZ2bnUDR0cHLxw4YKmaRkZGcePH1/SfWGF4mgUumOxWCwWS39//6tXr9ra2lwu15cvXwwGQ1hYWGxs7LZt20wm04xfv3zp0qWsrCzvesOGDfPc3YEDB2pqarzrrVu3Tnu0qKios7MzJCSkrKxsoT8Q/ucMHo9H9QyATjU3N+/bt298fLy8vDw/P7+vr2/t2rWaplVUVOTl5ameDnrBST0wM7fbnZ2dPT4+vmfPHqKJOZBRYGalpaVtbW3+/v6VlZX+/v6qx4F+kVFgBh8+fLh586amaRcvXuT7SjE3MgpMNzExkZOTMzIyYjQar127pnoc6B0ZBaa7c+dOU1OTdxESEqJ6HOgdGQWmsNvtly9f1jTNarWmpaWpHgcrABc8AVNkZWV5P7O0Zs2a1atXT37I4/F4vy0qODg4MDAwPT29qqpKzZTQEy6/B6bw/fWmwcHBwcHBGbcZGhoaGhqa7VH8bTgaBab49OnTwMDAjA8NDAxYLBZN04qKijIyMiIiIuLj45d3OugRR6PAFImJibM91NfX510YjcakpKTlmgh6x1tMACBCRgFAhJN6YL6CgoJu3LihaVpKSorqWaAjvMUEACKc1AOACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIj8C6is6hkNqCbvAAAAQnpUWHRyZGtpdFBLTCByZGtpdCAyMDIwLjA5LjQAAHice79v7T0GIOABYkYGCIDRDYxsDA5AmoVbhEEcJgiXBQMxAO2BBGDYkj9mAAAAVHpUWHRNT0wgcmRraXQgMjAyMC4wOS40AAB4nONSAIEgF+/MEgU4MHLh4lJQMFRQMMCFLC0tFcKMDAwMuEDqDfSALAOsLGcFPKbAEZevgoKrnwsXAFqrFpYYGSy3AAAAKnpUWHRTTUlMRVMgcmRraXQgMjAyMC4wOS40AAB4nHNWqNEw0DHQ0awBAAzOAmXMfEOOAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "test = 'C.[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn]'\n", - "mol = convert_format.convert_smiles_to_mol(test)\n", - "mol\n", - "salt_remover = remove_salts(mol)\n", - "salt_remover" - ] - }, - { - "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAe+klEQVR4nO3de1RU5d4H8O/MwDDckZtXVExFRRIVjhdQKzFdiZ5MKS9rLI9LsttYqY3psvH0qlGdbLA3a+hCYOW71MzGSjM8qUBeUgETdQREIG+AglwGGJh53j82johCwOyZPeDvs/pj2Hvz/J5p6ddn7/3s/YgYYyCEENJRYqE7QAghnRvFKCGEWIRilBBCLEIxSgghFqEYJYQQi1CMks7k6NGjkZGR169fF7ojhNxBMUo6h7q6ulWrVkVGRqanp2/atEno7hByh4PQHSDk72VnZ8vl8oyMDIlEolQq3377baF7RMgdFKPErjHGNm/erFQq6+rqAgMDv/rqq4kTJwrdKULuQjFK7FdBQcFzzz138OBBAHK5fMuWLW5ubkJ3ipDm6NoosVPJyckhISEHDx7s3r27VqtNTk6mDCX2iUajxO4UFxc///zzu3fvBjBnzpxPPvnE19dX6E4R0iIajRL7snfv3tDQ0N27d3t6emo0mh07dlCGEjtHo1FiLyoqKlauXJmQkABg8uTJiYmJAQEBQneKkL9Ho1FiF37//fdRo0YlJCTIZLK4uLj9+/dThpLOgkajRGC1tbXr1q37z3/+YzQaw8PDk5OThwwZInSnCGkHEb22mQjozz//XLhwYWZmpoODw/Lly99++22pVCp0pwhpH4pRIpiamprAwMDr168HBQUlJyf/4x//ELpHhHQEndQTwWzevLm+vv7RRx/98ccfXVxchO4OIR1Et5iIYGpra2/evBkZGUkZSjo1ilEiGD8/PwClpaVCd4QQi1CMEsFwMVpSUiJ0RwixCMUoEQzFKOkaKEaJYLinPClGSWdHMUoEQ6NR0jXQvFEiGKPRKJVKRSKRwWAQi+lfdNJZ0Z9dIhiJROLl5WU0GsvKyoTuCyEdRzFKhETn9aQLoBglQqK7TKQLoBglQqLRKOkCKEaJkOhBJtIFUIwSIdFolHQBFKNESHRtlHQBFKNESAKc1Kem4ssvcehQ449a7Z1dTT8T0mYUo0RItj6pVyiwYwf8/LBrF5YuBYA337yzt+lnQtqMXttMhGTTGC0sREYGUlMBYMYMTJqEvDxb1CVdHcUoEZJNr43m5GD48Ds/jhiBCxdw8yZmzmzc0tBgi26QLodilAjJpqNRHx/cuHHnxxs34OMDb+87l0SDg23RDdLl0LVRIiRnZ2dXV9e6urqqqiorlsnLw/PPIygIFy/izBkAOHsW585h5EgrFiUPDBqNEiHt2LFDJBJ5e3tHRUWtWbMmOjpaJBLxWYAxJCRgxQpUVaF/f+zcibVrUVYGT0/s3AlHR4wadefgpp8JaTN6UR4RRnFx8ZIlS7RaLQAXFxe9Xg9gxIgRq1atiomJkUgkPNS4fh2xsY3n7DEx+OQT+Pjw0Cwhd6OTeiKAvXv3hoaGarVaT09PjUZTXFysVqsDAgKysrLmzZs3aNCg+Pj4mpoai2p89x2GD4dWC09PJCdj+3bKUGItjBAbunXrVmxsLPdnLyoqqrCw0Lyrrq4uKSlpyJAh3F5/f3+VSlVeXt6BGiw2lgEMYFOmsKIiPr8AIfegGCW2k56ePnDgQAAymSwuLs5oNN57jNFo1Gq14eHhXJh6eHgolcrS0tI2lkhJSflu5kwGMBcX9vHHzGTi9RsQch8Uo8QWamqYUskeeWQ7gPDw8HPnzv3tr6SmpkZHR3Nh6urqqlAoilodV+r1eoVCwd2hKpg/n+l0/HWfkNZQjBKrO3WKBQczgLm7mzZu3FJfX9/23+XClAtHqVQql8vvG8FZWVkPP/wwAAcHB6VSaTAY+Os+IX+DYpRYkdHI1GomlTKADRjA0tI62M7p06flcrmDgwMAsVgcHR19/Phxbld9fX1cXJxUKgUwdOjQP/74g7feE9I2FKPEWi5eZBMnMoCJRCw2llVVWd7gRYVCIZPJuDP9iIiIhISEyMhIACKRKDY2trq6mo+OE9I+NG+UdERtLSQSODoCQE0NHB1RWYlu3QDAaERtLb77Di+9hKoq9OiBzz/H9Om8lb58+fKmTZsSEhKqqqq4Cad9+/ZNTEx87LHHeKtBSHtQjJKOUKkQEoI5cwDgjTcwaRL++U/83/9hzhzodFi+HCkpqKvDvHn4+OPGeOXXjRs3PvroI29v74KCgrfeesvT05P/GoS0DT0MSvgxZAg++ACPPw4Abm744AP4+uKZZ6xVzsfHZ926ddZqnZD2oBglHfTDD7h4EQCOH8ekSXB2xquvYu1avPgiALz0krC9I8R26GFQ0kFDhiAiAhER6N27ccszz0CnQ1aWoN0ixOZoNEo6KCgIEREA8MMPdzbGx+PJJzFihFCdIkQANBolfAoKwlNPCd0JQmyL7tSTjmg64am2Fg4O0OtRXo6UFPj6YvJkuLoK3UVCbIVGo6QjZLLGDOU+OzjAwwNZWVi8GAkJlKHkwUIxSnjj5wcAtlxznhB7QDFKeMPFqM3WnCfETlCMEt74+gIUo+TBQ7eYCJ9kMtTVoaYGt98fQkjXR6NRwiduuaOmq8ET0uVRjBI+0eVR8gCiGCV8osuj5AFED4MSPj388JH6+hNVVY8Cw4XuCyE2QqNRwqeGhm2HDyuKiv4rdEcIsR2KUcInPz8/ACV0Vk8eJBSjhE++vr6gGCUPGIpRwicajZIHEMUo4RMXo6X0XD15kFCMEj7RaJQ8gChGCZ8oRskDiJ6pJ3wyGo1SqRRATU0N94GQLo9Go4Q3tbW1a9ascXR0dHd3DwoKio+Pr62tFbpThFgdjUYJPzIyMuRyeXZ2tkQi8fX1vX79OoA+ffq8/vrrsbGxrvRCfNJ10WiUWMpkMsXHx48dOzY7O3vAgAGHDh26cuWKVqsNCwv766+/Xn/99X79+q1bt+7mzZtC95QQq6DRKLFIfn7+c889d/jwYZFItGTJkk2bNpkHnoyxn3/++Z133klPTwfg7u7+6qvrly5V9OolaI8J4RuNRkkHMQaNJiEkJOTw4cN9+vT55ZdfNBqNOUPLyspEItH06dPT0tJSU1Ojo6OrqqoOH44IDMTChdDphO07IXyiGCUdcf06nnwS27b1qq6ujomJyczMnDJlinlvVlZWz549Fy5cqNPpAERGRu7Zs+fkyZMBAQ83NGDrVgQHY/58nD4t3BcghEeMkHbasYP5+DCA9exp2rnzp3sPUKvVYrEYgEQimTdvXlZWlnlXXh5TKJhMxgAGsKgolp7OGGO5uay0tPGYs2dt8S0I4QtdGyXtcOsW3ngDCQkA8Pjj+PJL9O59/yMvXLjw7rvvfv311waDQSQSzZ797GuvJY4f37j3r7/wwQf47DNUVwPApEnw8EBtLfbvB4CRI5GRYYNvQwg/6KSetNWBAwgJQUICnJ2hVmPfvhYzFMDgwYO/+OKLwsJClUrl7u5eUjI7IgKRkdizB4yhTx98+CEuXYJKBW9v1NXB0RHdu+Pbb234fQjhi9DDYWKPjEZ28mTj56oqptMxpZKJxQxgY8Ywna59rZWUlGzYUNWtW+OJ/KhRbMcOZjQ27q2oYDk57KmnWHY2Gz2alZWx0FA+vwsh1kajUXIfej3CwrBtGwBkZ2PtWsTHQyLBhg1IT8fgwe1rzdfXd/Vq14ICvPceevbEqVOIicGzzzbudXfHwIEA4OYGpRJvvcXrNyHE+ihGyf2NGYP4eJSXA4CXFz7/HMeOYfVqSCQdbNDdHStX4tIlJCVh8GAsWHCfY2JikJeHa9c63m1CbI9ilNyfTIaVK7F6deOPCxZg5EgempVKsXAhsrMxdepd211dIRYDwIcfwtGRh0KE2AytDEpaNHs2vvzSKjfNHe75c5ecjPp6rF2LigoUFvJfkRDroQlP5D6qqjBjBn77Dbm5iIrC1KnQaGxR18kJBgNqa+HkZItyhPCCTurJfYhEcHMDgIEDsXgxXFxsVNfHBwBoCRLSudBJPbkPV1fs2YOMDHz/PYYNw9y5Nqrr54erV1FS0tqMVELsDY1GSYvOn8f//A9++MF2Ff38ABqNks6GYpS0yNcXAMzrKhUV4fhx1NVZsSIXo7SSE+lcKEZJi5qF2pQpGDMG+flWrNgsuAnpFChGSYuanWLbYKhIJ/WkM6IYJS3ixoalpeAmxdkgRmk0SjojilHSIicneHjAYEBFBWCTjOvT5/ykSa87Of2vFWsQwjeKUdKaptFpg9Goh8e1Q4c+zMzcacUahPCNYpS0punFShtcuPTz8wNQ0nXP6hlj6enpKSkpBQUFQveF8IZilLQmLOzEpEna8vIzAHr1OtCr17hbt16yXrmuHaPXrl2bMWPGxIkT586dO2jQoIULF549e1boThEeUIyS1lRXf3zo0D+vXDkOwNOz4cqVo5cv51ivnI+Pj1gsvnnzptFotF4VQXz77bdDhw796aefunXrFhoayhjbunVrSEjI7NmzT5w4IXTviEUoRu3X+fPn//Wvf23atEnAPjQdHnKfS615Vi+RSLy8vIxGY1lZmfWqNFVWVpabm7tr1676+norlSgvL5fL5QsWLCgvL582bdrp06dTUlJyc3MVCoVMJtu1a1d4eDi3eKqVOkCsTuC375OW7d+/H0BAQEB9fb1QfXjvvfcArFixgjFWWFgIoE+fPvyWaPbtgoKCAJy1yeqgv/76a58+ffr27QugX79+arW6urqa3xK//PJL7969Abi4uKjVapPJ1HRvcXGxSqXy8vLi/jKOHDkyKSmpoaGB3z4Qa6MYtV8mk4nLlO+//16oPiQmJgJ49tlnGWM1NTUAnJyceGx/7969gYGBf/75p3lLZGQkgMOHD/NY5V7V1dUvv/yySCQCMGzYsMG310Xp3r37xo0by8vLLS+h1+sVCgVXYty4cRcuXGi698aNG+ZIraioUKvVPXv25PoQHByclJQk4L+dpL0oRu2aWq0GMGXKFKE68OOPPwJ44oknuB9dXV0BVFRUWN5yRUXF4sWLueB45ZVXzNsnT54MQK1WW16iJcePHx8yZAgAR0dHlUrV0NBgMpm0Wu3YsWO5/ri7uysUisuXL3e4xNGjR7loNpdodsC0adOGDx/eNC5ra2s1Gg03NAbQv39/tVqt1+s7/j2JrVCM2rXy8nJXV1eRSHT+/HlBOnD06FEA4eHh3I8ajSYpKcnyv9u///77wIEDAchksri4OKPRyBirr6+Pi4tzcHAICAgQiUTR0dG///67pV/gblwJR0dHbhB60rz86W2pqanR0dFckDk5Ocnl8pycnA6XCA4OPnXq1L3H3Lx50xyXgYGBW7Zsqamp4XYZDIakpKShQ4dye/39/VUqVVlZWce+L7ENilF7t2TJEgDLli0TpHpeXh43MuKrQYPBoFKpJBIJgJCQkMzMTG67TqcbM2YMALFYHBYW5nL7TdGPPfbY/v37eSl9/nxJWFgYV2LFihW1tbUtHZmRkSGXy7lOOjo6yuXy7OzstpTIzs4ePXo0AJFIpFAoWinRelwajUatVsv9DzGPjq9cudLer0xsg2LU3mVmZgLw9PSsqqqyffWKigoAzs7OvNx7OXPmzMiRIwFIJBKlUllXV8cYM5lMGo3Gzc0NQN++fQ8cOMAYKykpUalU3bp143IkNDTUknsvJhPTaJibmyksbFq/fv1+++23tvxWTk5ObGwsN67kRsdHjhxpuYRJo9Fw6d+/f/+DBw+2pcTfxuUvv/zyyCOPcHtdXFwUCoXBYGhLy8SWKEY7gYiICAAJCQm2L52YmOjm5iaTyXx9fVUq1Y0bNzrWjslkUqvVTk5O3Gms+Q7S1atXzSfRMTExzdq/devWO++8071799v3XkK2bq1tb4wUFrLJkxnAAKZQXL1161a7fv3SpUsKhcI8Oo6IiNBqtc2OKSgoePTRR7kD5HJ5B64dN7uYEBsbW1BQYN578uTJmJgYkUg0bNiwPXv2tLdxYm0Uo53AN998A2DEiBE2rvvtt9+KxWKRSDRgwADub7iHh8cbb7xx9erVdrWTn58/adIkc8pUVlZy27dv3+7j4wPAy8vrm2++aenXa2trk5KSBg0aNHbsewDr25ep1ayNg+Pt25m3NwOYnx/btatdvb5LKzOTtm/fzo2a/f39d+/e3fEajJ08eVIul4vFYvPFhKYTv7hZExMmTLCkBLEGitFOoK6ujhuRpaWl2azoDz/8wJ3PvvPOO+z2cImbviOVSuVyuU6na0s7SUlJ7u7u3Fwi8ziuvLw8NjaWi6SpU6e25Z64wWDYtq182LDGcaW/P9u4kbUyMamsjC1Y0HjwtGnMgrvuTdssW79+PfcYAoChQ4eOGzeO+zxr1qzi4mIeajB2+vTpBQsWODg4cJdxc3Nzue3ck6NDhgzhpQrhEcVo57BmzRoA8+bNs025AwcOyGQyAGvWrGm6PTMz03zvRSwWR0dHnzhxopV21q5dy6XM008/XVpaym3kJr2jhRnprTOZmFbLxo5tzEd3d6ZQsMuXmU7H9u5tPOboUfbNN6xnz8YDvviifd/9b3GjY26mQY8ePdzc3DQaDc81GMvPz1coFDNnzjRvKS4uBuDj48N7LWIhitHOobCw0MHBQSqVXrt2zdq1jh49yo0fX3rppfsewD3IyF3obH1mUn5+fkBAgDll9Hq9UqnkTlrHjh3bbEZ6u6Sk3Lni6ezMli9n7u6MOwNWKtlbbzGAjRvH2jlbqR0MBgN3pSIuLs5aNRhr+m9MQ0ODRCIRi8X0mJO9oRjtNGbNmgVg/fr1Vq1y+vRpb29v7iImN52zJQUFBffee7l3aGm+s3zs2DHuoayWZqR3QEYGk8tZt25syxb28stsyhRmMjGlku3bx/bsYa12nwdKpRLAxo0brVumCV9fXwB8XT0gfKFXk3QaL774IgCNRtPQ0GClEjodli/Pr66unj17dmJiIjdsbEnfvn3j4+MLCgpUKpW3t3d6evrMmTNHjhyZnJzc9P1Mjo6ODQ0N7777bmRkpE6nCw4OPnbs2Lp167grAxYKDUVyMnJz4eKCwYMxciSSkhp3RUej1e7zoOm7Wmpqaj766KP333/fBhW76osEOzGhc5y0lclk4h5h3GXJLeeWXbrEAgIYwBYvPsrN6Gy7yspKtVrNvYMDwEMPPaRWq7nJ52fPnuUmvf/tjHRLfPUV27yZVVaysDC2dCnbt88aRe4t+hUAuVzOGKutrQUglUrbdam3vSZOnAigjZNSic3QaLTTEIlEL7zwAoAtW7bw3nhxMaZORVERxo1DfPwYqVTarl93c3NbtmxZbm7uxx9/HBgYmJeX9+qrrw4ePDgmJmb06NEnTpwIDAw8dOhQfHw8d0XVStzcsGoVtm61XoW7NB0bOjk5ubu7GwwG7oEFK+FO6mk0am8oRjuTRYsWubu7p6SkZGdn89hseTmmToVOh9BQ/PQTXF072I5MJnvxxRdzc3O1Wu2oUaMKCwvT0tJqampiYmJOnTo1YcIEHvvcTK9eCAgAgNmz8eyz8PGxXqk7mr2A1QZn3HRSb58oRjsTd3f3+fPnA0hISOCrzcpKPP44MjMRFIR9+3D78cuOE4vFM2bMOHHixJw5c65du7Zw4cLt27ebJ65bidEIb+/Gz9OmwWpXj+/SLNRs8FprG5QgHUAx2sm88sorABITEysrKy1vraYGM2fijz/w0EP4739x+6lLHohEIm4C+ZQpU3hrtGVnzyLn9uImp0/j4kUb1Gx+im2DoSKd1NsnitFOJjg4ePz48ZWVlQsWLNi6dWtaWhr3CFDHWtNocPAg+vTBr7+iVy9+e4r8/HwAgYGBPLfbgoYG1NWhrg42W8bJzc3N2dlZr9fr9XrYJOPopN4+OQjdAdJuzs7O/v7+e/bsMa/e4+Tk1L9//8DbHnroxb59XQMD73OJMC8PM2YgJQW9emHfPkgkUCrx3HOwRtZdvHgRNozRzz/HgQMAcO4c3nzTNjXh6+tbVFRUUlLSr18/Oql/YFGMdjKff/75gQMHnJ2dlyxZUlVVlZ+fn5+ff/36dZ1Op9PpAEgkEolkmcEAAB4eCAy8679u3SCRYPlybNuG6mqUlyMuzir9rK6uLikpkclkPXr0sEqBeyxdCu5t+hs22KYgAPj5+RUVFZWWlppjlEajDyCK0c7k9OnTy5YtA/Dpp58uXLjQvF2v1+ffdvlyqU4nzc9Hfj4qKpCVhaysOy1s2oSRIyGRYN8+63aVO6Pv169f63P4O7umuWaDk3q6NmqfKEY7jcrKyqefflqv1y9durRphgJwcXEJDg4ODg5u9is3boDL00uXGj8MGICMDLz7LqZPx2uvWbG3XIya37BnbePHwzwhdeJEHuYbtJGNF6A2l2CMcW/bIvaAYrRzYIwtWrRIp9ONGDGi7SvX+/jAxwdhYXe2nDsHAP7+WLQImzdj+nQr9BWAze8v3V6MDgCsOT+1uabDQxuccXOT/CsrKysqKjw9Pa1XiLRLVz7h6ko+/PDD7777zsvLa9euXc7OzpY3uHSp5W20pqpqzLhx6mHDoqxbRmhNR6C2OeOmu0x2iGK0Ezh69Oibb74pEom+/PJLC0+T+/aFUgkAYjG2bYNIhLw8fjrZzPHjY44cWdajxyyrtG437j2p5z1GCwoKWqpI7ATFqL27efPm3LlzDQbDypUruXflWcLVFeYrqBoN1q7F6tWW9vC+8vMBWGUelV1pOgL18PBwcnKqqqriXlNiOe7NWIMHD965c6d5I8WoHaIYtWsmk2n+/PkFBQXjxo1bv349v42/8gpcXLBjB44c4bdhALh0CXgAYrRZqD3zzDOLFi2qq6uzvOWcnJwJEyasWrWqvr7+zJkz5u3cq08oRu2LwG+YIq1SqVQA/P39//rrL2u0/+abDGATJ/LcbGkpA5inJ8/N2qHz588DGDx4MI9tNl1xukePHj/99BO3vaysbMGCBQCeeOKJ8lZWoSI2RzFqvw4cOMAtGrF//34rlaioYP7+DGD3rBlskT/+YAALDeWzTft048YNAN26deOrwWvXrt13xel9+/Zxr3P18PCwxtJPxBIUo3aqqKiIO2G09qohajUD2JAhrL6etza3b2cAmzWLtwbtlslkcnBwEIlEx44ds7y1pitOf/3119zG6upqhULBzRIdP368eaFQYj8oRu1RfX19ZGQkgKioKGuvX1ZXxwYOZABLSOCtzbg4BrDXX+etQXu2Y8cO7l3U3GpUHWuk6YrTjz/+uPkazpEjRwYNGgRAJpPFxcW1vjoWEQrFqD167bXXAAQEBJSUlNig3LZtDGA9e7KqKn4afP55BrCPPuKnNTtXWlq6YsUKbi1VbsC4Z8+edi0lYl5x2tnZ2bzitMFgUKlU3IpVISEhGRkZVvsGxFIUo3ZHq9WKRCJHR8e0tDTbVDSZ2NSpNRMmJG/Y0Ka1gi9fZr/+ytRqJpezYcPY7Vsgd2zbxhYvZkeO8N9Vu3Xr1i21Wm1+D8vw4cOTkpLq/+5CSdMVp8eMGaPT6bjtZ86cGTVqFACJRKJUKtu7NBaxMYpR+5KTk8M95Ld582Zb1j106BAANze3a9euNdtVX1//559/bt26dfny5XPnxvr4NK4Ob/6v6cXbTZuYXN74+YUXWEGBrb6AfaiqqlKr1QHceiZA//791Wq1Xq9v6fh///vfAKRS6YYNG7irNyaTSa1Wc1cJuAWsbNh90kEUo3akpqaGG4M8/fTTtq8+ffp0AC+//LJ5y6effhoWFiaTyczT46RSqVRa5+nJIiKYQsE0Gpaaypqu9bl2LXv4YbZ7N2OMPfUUezBvhxgMhqSkJG4ZV26+mkqlKisru/fI6urqWbNmnTp1ivvx0qVLjzzyCPdbcrm8srLSth0nHUQxakfq6+uVSuWgQYNu3bpl++pnz551cHBwdHS8cOECt4Wb8C8SiQYMGDB79uy3335bq9UWFt7/BFOvZzodW7uWbdvGwsJYZeWDG6Mco9Go1WrDw8O5WPTw8FAoFFevXm3pePOKVd27d+/wrSoiCIpRuyPgGGTx4sXcdEXux4sXLx46dKilmd5lZSw1tfEK6ejRzMmJ9ezJ1q5le/eyxET2xhsPeoyapaammqeCurq6KhSKwsLCpgdcv379ySef5A6YM2eObe4rEh5RjJI7Ll++7OrqCiA9Pb3ZLqPRmJOTs3379vff//GJJ1jv3s2vkDo4sOHDmVLJ9u5lJhObPJmFhlKM3pGWlhYdHc1N/5RKpXK5/Ny5c4yxn3/+uWfPngA8PT1pXn0nRTFK7rJ69WoAEyZMMBgMZ86cSUpKUigUUVFRPrfXdQoNfYTLTXd3Nno0k8uZWs1SU1l1NWOscTTKGDtzhjk6Uow2l5mZOXfuXG4ak1gsDgoK4v6vRkVFFRUVCd070kEi1tFFJUmXVFFRMXDgwNLSUrFYbLx7jc3evXuHhob+4x+Rw4atCg3FQw/h3vev5+XBy6txKb0//sDw4eDj5ahdTX5+vlqt/uyzz0aNGnXy5Ml169atXLmya6+20rVRjJLmdu/efezYsffff79fv37Dhg0bPXr06NGjw8PDbbY43QPiypUr3Ex78wQp0klRjJL70Ov1IpGIl9fsE9LlUYwSQohF6HIMIYRYhGKUEEIsQjFKCCEWoRglhBCL/D8No40iWD+PAgAAAeR6VFh0cmRraXRQS0wgcmRraXQgMjAyMC4wOS40AAB4nHu/b+09BiDgAWJGBgiQAmIZIG5gZGNIAIkzQ2gmJgjNzAjjc0DkGdkZMkDiTIxsDhogBgs7hGaG8+EKYCZBJdgcwBJAI4lioJsOlYALoLgP5m5GZnSN3EC/MjIxMDEDxRiYWBlY2RTY2DOY2DkSODgVOLkYuLgZuHkymHh4E3j5Mpj4+BP4BTKYOAQzmASFEoSEM5iERRJERBlExRhExRlEJBIkJDOYJNkSBLgTJAQTRJjZ2CQlBDnY2Xh4+fgFuFmFBCVEhMVhgcsgVbdCxP7KqqMOII6rp/r+tUmrwOxWO479J0VLwex/e4Ps2755g9kfVjM7ZDk3gtkqEo/2V7XagdmHJ13af2n1XnsQmyNoyr4Zt8LAbL5KnX3rHqvvB7EV3k+3jzVYBmYzfpFyYLB/sg/EVtxc6ODm1w0Wv1ha6bAlTPUAiF0ptcLhe6kfmL1xxnmHlU/FwezI7acd4m8kgNWfDF/g4J1bCDaHuWPz/hKhg2Bxb+Uz+yfsswerj8l2OXCrLBDM7swtOmCY9QuspuDiigMvzj0Es2d/OnpggoktWM17r90HFqceApup1Gxw4PbyWLCaS64WB7LFFMH+EgMAYvKFyi5y09UAAAHRelRYdE1PTCByZGtpdCAyMDIwLjA5LjQAAHicnVVLrtswDNznFLpABH5EUlw3b1X0Feiid+i+90cpWyYSoAUaGkYwk0jj0ZBmbm1dPx5ff/1uedHjdmukjWZr8Nfb3dtPAoDbWg9dJthC2tEMz+/iV2hf2r8knu+lcoeuwrL2SmcaUlURJlp7uU/ymkrsmMRbBad6TYU6iI2FRgd+8fL9/0+E3VTHqef24uXzHRUdclQG+5g4q+nSdNsJsXPNC3TUOa6aS81LnAOnwXk28kPvfS+R6SDE08sYVS/cLYp0eoE5uaoS4S4Hd4o3ikdNRTrJ0bt37kQKNRWNLjl6N7ywVb1oZ9Wd7rRqLtIBj/my+o+LNYrKDKBdI4FZO9Ha62PXyP0l3TfeAO6gjrtGRrX5Enttmp+uXLT2BtyjX0z0mjSjOL1j8k/xnYtordLhZcqRRlSa7Zo076pQt/hD2l2n1X6h6Nhrwik5VdKNMOn4XCQQJwk0kgSS5180SSBLEmgeixcJ5Em8IVzLAq2Btgk2TAeBkK89gXAkGQ0liTTUJNrQnp+TDgJhOghEcJFAhEmwUToIRPxMMoO1LB0EonRAZwb7OXacJ5elnW+tfXw+bn8AOk5dd/c5fPIAAAE+elRYdFNNSUxFUyByZGtpdCAyMDIwLjA5LjQAAHicJVE5jsQwDPvKlhlAMaxbQsr0s49IPy/Yxy/tcSVQFEXR930f9+/r/fDnOd73I8968nrk83wO9F73qvnn75jDa0YHxeBMpuucI1wthHyomPuGXEWmkY6SNkAThQoLEK5ooUvG9NQkG1PbClM8MkKDZHRGbyDMmXhYcX1XSXVUEeS0JXVjHGXKtI04mHTxXlIEBelSX9tMmG2RzDwbkzoyw2ORZpVupDpL6BQcqQaTPgSXKJ06RLwhFDCT2oujqSiAaATrkq4snXts8kxZkKhnfK+zCYm1zmfpF3JcrkurO+a6UAfCnb4XplRtKCvb1mB7ILHrhK10T9qRGa8Y8B3lFVsLLN2scullQhOpwRea6bWdhiO0jUBcAomGtOAfXn//goNsIaSTrMUAAAAASUVORK5CYII=\n", + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsChanged_atmol
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]6<rdkit.Chem.rdchem.Mol object at 0x7f73137bf940>
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....6<rdkit.Chem.rdchem.Mol object at 0x7f73138201c0>
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....6<rdkit.Chem.rdchem.Mol object at 0x7f73137bf670>
\n", + "
" + ], "text/plain": [ - "" + " IDs Names SMILEs \\\n", + "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", + "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "\n", + " Changed_at mol \n", + "0 6 \n", + "202 6 \n", + "203 6 " ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "remove_salts(example)" + "# Show the subset of all changed entries (salts were removed)\n", + "changed_at_step_6.head()" ] }, { @@ -2100,21 +2942,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 26, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":6: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['normalized'] = dataset['mol'].apply(normalize)\n" - ] - }, { "data": { "text/html": [ @@ -2142,8 +2972,13 @@ " Failed_at\n", " mol\n", " Inorganics\n", - " removed_salts\n", + " smiles_before\n", + " Smiles 5\n", + " no_removed_salt\n", + " Changed_at\n", " normalized\n", + " canonicalized tautomer\n", + " duplicate?\n", " \n", " \n", " \n", @@ -2153,10 +2988,15 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf940>\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365e90>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d4170>\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " False\n", + " 6.0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137a40d0>\n", + " CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...\n", + " False\n", " \n", " \n", " 1\n", @@ -2164,10 +3004,15 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec170>\n", + " False\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731385f1c0>\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d49e0>\n", " \n", " \n", " 2\n", @@ -2175,10 +3020,15 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec2b0>\n", + " False\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313819940>\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d4a30>\n", " \n", " \n", " 3\n", @@ -2186,10 +3036,15 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138da580>\n", + " False\n", + " O=C(O)C(S)C(S)C(=O)O\n", + " O=C(O)C(S)C(S)C(=O)O\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138190d0>\n", + " O=C(O)C(S)C(S)C(=O)O\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ea030>\n", " \n", " \n", " 4\n", @@ -2197,10 +3052,15 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73306f91c0>\n", + " False\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137eb8a0>\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ead50>\n", " \n", " \n", "\n", @@ -2222,33 +3082,49 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "\n", - " removed_salts \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "\n", - " normalized \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 " + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "\n", + " smiles_before \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", + "3 O=C(O)C(S)C(S)C(=O)O \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] \n", + "\n", + " Smiles 5 no_removed_salt \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 False \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O True \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O True \n", + "3 O=C(O)C(S)C(S)C(=O)O True \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", + "\n", + " Changed_at normalized \\\n", + "0 6.0 \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "\n", + " canonicalized tautomer duplicate? \n", + "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... False \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O False \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O False \n", + "3 O=C(O)C(S)C(S)C(=O)O False \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] False " ] }, - "execution_count": 17, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "#TODO: Finish all steps here\n", + "\n", "# Setting up the taskNum \n", "taskNum = 7\n", "# getting the valid entries from the step before\n", @@ -2256,7 +3132,7 @@ "#dataset.head(100)\n", "dataset['normalized'] = dataset['mol'].apply(normalize)\n", "result7 = dataset\n", - "result7.head()" + "result7.head()\n" ] }, { @@ -2266,6 +3142,15 @@ "#### Task 8: Charges and Hydrogens TODO" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#TODO: Add the functionlaity here" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2277,20 +3162,24 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ + "#TODO: Finish all steps here\n", + "\n", "# Normalization of specific chemotypes\n", "# normalize_molecules" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ + "#TODO: Finish all steps here\n", + "\n", "# Treatment of tautomeric forms\n", "# handle_tautomers" ] @@ -2304,7 +3193,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -2312,13 +3201,7 @@ "output_type": "stream", "text": [ "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n", - "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n", - ":7: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['canonicalized tautomer'] = dataset['SMILEs'].apply(handle_tautomers.canonicalize_tautomer)\n" + "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n" ] }, { @@ -2348,7 +3231,10 @@ " Failed_at\n", " mol\n", " Inorganics\n", - " removed_salts\n", + " smiles_before\n", + " Smiles 5\n", + " no_removed_salt\n", + " Changed_at\n", " normalized\n", " canonicalized tautomer\n", " \n", @@ -2360,10 +3246,13 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d83f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf940>\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365e90>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d4170>\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " False\n", + " 6.0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313811580>\n", " CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...\n", " \n", " \n", @@ -2372,10 +3261,13 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec170>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593d43f0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d49e0>\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313819350>\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " \n", " \n", @@ -2384,10 +3276,13 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec2b0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339df0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592d4a30>\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313811440>\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " \n", " \n", @@ -2396,10 +3291,13 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138da580>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339e40>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ea030>\n", + " O=C(O)C(S)C(S)C(=O)O\n", + " O=C(O)C(S)C(S)C(=O)O\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138113f0>\n", " O=C(O)C(S)C(S)C(=O)O\n", " \n", " \n", @@ -2408,10 +3306,13 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73306f91c0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59339ee0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ead50>\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138114e0>\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " \n", " \n", @@ -2434,25 +3335,32 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "\n", - " removed_salts \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "\n", - " normalized \\\n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "\n", + " smiles_before \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", + "3 O=C(O)C(S)C(S)C(=O)O \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] \n", + "\n", + " Smiles 5 no_removed_salt \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 False \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O True \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O True \n", + "3 O=C(O)C(S)C(S)C(=O)O True \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", + "\n", + " Changed_at normalized \\\n", + "0 6.0 \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", "\n", " canonicalized tautomer \n", "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... \n", @@ -2462,12 +3370,14 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] " ] }, - "execution_count": 20, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "#TODO: Finish all steps here\n", + "\n", "# Setting up the taskNum \n", "taskNum = 9\n", "\n", @@ -2480,7 +3390,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -2510,7 +3420,10 @@ " Failed_at\n", " mol\n", " Inorganics\n", - " removed_salts\n", + " smiles_before\n", + " Smiles 5\n", + " no_removed_salt\n", + " Changed_at\n", " normalized\n", " canonicalized tautomer\n", " \n", @@ -2522,10 +3435,13 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344d50>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c5930edf0>\n", + " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", + " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137d38f0>\n", " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " \n", " \n", @@ -2534,10 +3450,13 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ed00>\n", + " True\n", + " CCO[Zr](OCC)(OCC)OCC\n", + " CCO[Zr](OCC)(OCC)OCC\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344da0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c5930ec60>\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137d3670>\n", " CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]\n", " \n", " \n", @@ -2546,10 +3465,13 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384ed50>\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344df0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c5930eee0>\n", + " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", + " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137d3b20>\n", " C=CC1=C(C)c2cc3[n-]c(cc4[nH]c(cc5nc(cc1n2)C(C)...\n", " \n", " \n", @@ -2558,10 +3480,13 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73138201c0>\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592ccd50>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c5930eda0>\n", + " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", + " [Zn]\n", + " False\n", + " 6.0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137d38a0>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " \n", " \n", @@ -2570,10 +3495,13 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf670>\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365f30>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592c1490>\n", + " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", + " [Zn]\n", + " False\n", + " 6.0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313819d00>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " \n", " \n", @@ -2589,25 +3517,32 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol Inorganics \\\n", - "199 0 False \n", - "200 0 True \n", - "201 0 True \n", - "202 0 True \n", - "203 0 True \n", - "\n", - " removed_salts \\\n", - "199 \n", - "200 \n", - "201 \n", - "202 \n", - "203 \n", - "\n", - " normalized \\\n", - "199 \n", - "200 \n", - "201 \n", - "202 \n", - "203 \n", + "199 0 False \n", + "200 0 True \n", + "201 0 True \n", + "202 0 True \n", + "203 0 True \n", + "\n", + " smiles_before \\\n", + "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", + "200 CCO[Zr](OCC)(OCC)OCC \n", + "201 C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... \n", + "202 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", + "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", + "\n", + " Smiles 5 no_removed_salt \\\n", + "199 O=C(O)CC(O)(CC(=O)O)C(=O)O True \n", + "200 CCO[Zr](OCC)(OCC)OCC True \n", + "201 C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... True \n", + "202 [Zn] False \n", + "203 [Zn] False \n", + "\n", + " Changed_at normalized \\\n", + "199 NaN \n", + "200 NaN \n", + "201 NaN \n", + "202 6.0 \n", + "203 6.0 \n", "\n", " canonicalized tautomer \n", "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", @@ -2617,7 +3552,7 @@ "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... " ] }, - "execution_count": 21, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -2635,20 +3570,14 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":9: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['duplicate?'] = dataset.duplicated(subset=['SMILEs'])\n", - ":13: SettingWithCopyWarning: \n", + ":13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -2683,7 +3612,10 @@ " Failed_at\n", " mol\n", " Inorganics\n", - " removed_salts\n", + " smiles_before\n", + " Smiles 5\n", + " no_removed_salt\n", + " Changed_at\n", " normalized\n", " canonicalized tautomer\n", " duplicate?\n", @@ -2696,10 +3628,13 @@ " Cerivastatin sodium\n", " COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc...\n", " 10\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593443f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f731384e350>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c593443f0>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59308440>\n", + " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", + " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", + " True\n", + " NaN\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137d58f0>\n", " COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...\n", " True\n", " \n", @@ -2709,10 +3644,13 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 10\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59344e90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf670>\n", " True\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c59365f30>\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f2c592c1490>\n", + " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", + " [Zn]\n", + " False\n", + " 6.0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f7313819d00>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " True\n", " \n", @@ -2730,28 +3668,34 @@ "203 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 10 \n", "\n", " mol Inorganics \\\n", - "168 False \n", - "203 True \n", + "168 False \n", + "203 True \n", + "\n", + " smiles_before \\\n", + "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... \n", + "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", "\n", - " removed_salts \\\n", - "168 \n", - "203 \n", + " Smiles 5 no_removed_salt \\\n", + "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... True \n", + "203 [Zn] False \n", "\n", - " normalized \\\n", - "168 \n", - "203 \n", + " Changed_at normalized \\\n", + "168 NaN \n", + "203 6.0 \n", "\n", " canonicalized tautomer duplicate? \n", "168 COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(... True \n", "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... True " ] }, - "execution_count": 22, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "#TODO: Fine tune the output\n", + "\n", "# Analysis/removal of duplicates\n", "\n", "# Setting up the taskNum \n", @@ -2772,16 +3716,18 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ - "# Manual inspection" + "# Manual inspection\n", + "\n", + "#TODO: Create csv-exports for better readability of the subsets or jupyter notebook searchable tables " ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ From 12fda36d7c368878bdbc8eb763ff6cf73a2905c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Rodr=C3=ADguez-Guerra?= Date: Tue, 13 Apr 2021 12:14:28 +0200 Subject: [PATCH 27/55] JRG: Initial cleaning --- README.md | 2 + docs/tutorials/standardization.ipynb | 2187 +++++++++-------- .../compounds/standardization/__init__.py | 11 - .../compounds/standardization/_version.py | 556 ----- .../standardization/convert_format.py | 10 +- .../standardization/disconnect_metals.py | 1 - .../standardization/handle_charges.py | 1 - .../standardization/handle_fragments.py | 1 - .../standardization/handle_tautomers.py | 1 - .../standardization/normalize_molecules.py | 1 - .../compounds/standardization/remove_salts.py | 4 +- .../standardization/standardization.py | 34 - opencadd/compounds/standardization/utils.py | 21 - .../standardization/validate_molecules.py | 1 - .../standardization => }/data/salts.tsv | 0 opencadd/interactions/perception.py | 7 + opencadd/utils.py | 17 + 17 files changed, 1219 insertions(+), 1636 deletions(-) delete mode 100644 opencadd/compounds/standardization/_version.py delete mode 100644 opencadd/compounds/standardization/standardization.py delete mode 100644 opencadd/compounds/standardization/utils.py rename opencadd/{compounds/standardization => }/data/salts.tsv (100%) create mode 100644 opencadd/interactions/perception.py diff --git a/README.md b/README.md index 768f8619..def5301e 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ A Python library for structural cheminformatics. > This library is still in early stages of development. +- `compounds.standardization`: standardize chemical records. - `databases.klifs`: utilities to query the KLIFS database, offline or online. - `io`: read and write molecules from/to files. - `structure.pocket`: identification and analysis of protein (sub)pockets. @@ -34,6 +35,7 @@ The Documentation will be available soon. - Jaime Rodríguez-Guerra, PhD - Dominique Sydow - Dennis Köser, Annie Pham, Enes Kurnaz, Julian Pipart (structural superposition, 2020) +- Allen Dumler (standardizer, 2021) # Acknowledgements diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 3ec9bda8..8bf2157f 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -5,7 +5,10 @@ "metadata": {}, "source": [ "# Implementation and evaluation of a computational standardization pipeline for chemical compounds\n", - "## Based on [\"Trust, But Verify: On the Importance of Chemical Structure Curation in Cheminformatics and QSAR Modeling Research\" from 2010 (D. Fourches, ...)\"](https://pubmed.ncbi.nlm.nih.gov/20572635/)\n" + "\n", + "> Based on [\"Trust, But Verify: On the Importance of Chemical Structure Curation in Cheminformatics and QSAR Modeling Research\" from 2010 (D. Fourches, ...)\"](https://pubmed.ncbi.nlm.nih.gov/20572635/)\n", + "\n", + "By Allen Dumler; reviewed by Jaime Rodríguez-Guerra, PhD." ] }, { @@ -13,16 +16,10 @@ "metadata": {}, "source": [ "### Introduction \n", - "This notebook serves to showcase the functionality of the Standardization module. Following the recommended standardization steps of \"Trust, But Verify\"(D. Fourches, ..., 2010).\n", - "This notebook uses the dataset of following paper: [Cheminformatics Analysis of Assertions Mined from Literature That Describe Drug-Induced Liver Injury in Different Species](https://pubs.acs.org/doi/10.1021/tx900326k)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " For all relative paths in this notebook to work, please make sure you are starting this notebook from the working directory ./opencadd/docs/tutorials/
\n", - "Check your directory with the cell below." + "\n", + "This notebook serves to showcase the functionality of the `opencadd.compounds.standardization` subpackage. \n", + "\n", + "We are following the recommended standardization steps of \"Trust, But Verify\"(Fourches et al., 2010), and using the dataset of the following paper: [Cheminformatics Analysis of Assertions Mined from Literature That Describe Drug-Induced Liver Injury in Different Species](https://pubs.acs.org/doi/10.1021/tx900326k)." ] }, { @@ -31,46 +28,59 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "'/home/allen/dev/opencadd/docs/tutorials'" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Tutorial location: /home/jaime/devel/py/volkamerlab/opencadd/docs/tutorials\n", + "Repo location: /home/jaime/devel/py/volkamerlab/opencadd\n" + ] } ], "source": [ - "import os\n", - "os.getcwd()" + "from pathlib import Path\n", + "\n", + "HERE = Path(_dh[-1])\n", + "REPO = HERE.parents[1]\n", + "\n", + "print(\"Tutorial location:\", HERE)\n", + "print(\"Repo location: \", REPO)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ - "#Import pandas and numpy\n", + "# Import pandas and numpy\n", "import pandas as pd\n", "import numpy as np\n", "\n", - "#import modules and Standardization API functions needed\n", + "# import modules and Standardization API functions needed\n", "from rdkit import Chem\n", - "#from rdkit.Chem.PandasTools import RemoveSaltsFromFrame\n", - "from opencadd.compounds.standardization import convert_format,handle_fragments,disconnect_metals,detect_inorganic,remove_salts,normalize,handle_tautomers" + "\n", + "# from rdkit.Chem.PandasTools import RemoveSaltsFromFrame\n", + "from opencadd.compounds.standardization import (\n", + " convert_format,\n", + " handle_fragments,\n", + " disconnect_metals,\n", + " detect_inorganic,\n", + " remove_salts,\n", + " normalize,\n", + " handle_tautomers,\n", + ")" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Helper function to mark at which step the entry failed the standardization pipeline\n", + "# JRG: ??? Is this function relying on global state at runtime?! This a bad idea... ;)\n", "def failMarker(i):\n", - " i=taskNum\n", + " i = taskNum\n", " return i" ] }, @@ -88,7 +98,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -174,7 +184,7 @@ "203 0 " ] }, - "execution_count": 4, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -182,22 +192,21 @@ "source": [ "taskNum = 0\n", "\n", - "# Importing the test-dataset \n", - "dataset = pd.read_csv (r'./data/standardization_test_data.csv')\n", + "# Importing the test-dataset\n", + "dataset = pd.read_csv(HERE / \"data\" / \"standardization_test_data.csv\")\n", "\n", - "#Filter for needed columns\n", - "dataset = dataset[['IDs','Names','SMILEs']]\n", + "# Filter for needed columns\n", + "dataset = dataset[[\"IDs\", \"Names\", \"SMILEs\"]]\n", "\n", - "#Kick all empty entries\n", - "empty_smiles = dataset[(dataset['SMILEs'].isnull())] \n", + "# Kick all empty entries\n", + "empty_smiles = dataset[(dataset[\"SMILEs\"].isnull())]\n", "# The empty_smiles dataframe could be used to check which entires are affected and review the dataset again.\n", - "dataset = dataset[(dataset['SMILEs'].notna())]\n", - "\n", - "#Setting a initial score of 0 for all entries in the 'Failed_at'-column\n", - "dataset['Failed_at'] = dataset['SMILEs'].apply(failMarker)\n", + "dataset = dataset[(dataset[\"SMILEs\"].notna())]\n", "\n", + "# Setting a initial score of 0 for all entries in the 'Failed_at'-column\n", + "dataset[\"Failed_at\"] = dataset[\"SMILEs\"].apply(failMarker)\n", "\n", - "#Show the current form of the main-dataframe\n", + "# Show the current form of the main-dataframe\n", "dataset.tail()" ] }, @@ -207,19 +216,23 @@ "source": [ "### Step 1: Conversion of SMILEs to mol\n", "------------------------------------------\n", - "### Convert the SMILE representation format of the compounds into Mol-files\n", "\n", - "RDKit performs a sanitization of the molecule by default. In this sanitization step RDKit tries to kekulize the mols (generates alternate Lewis structures). This step might fail, when the structure is aromatic, but no Hydrogen position is provided. TODO:!(This explanation might be a bit short and not fully correct, check this later again)!\n", + "__Convert the SMILES representation format of the compounds into Mol-files__\n", + "\n", + "RDKit performs a sanitization of the molecule by default. In this sanitization step RDKit tries to kekulize the mols (generates alternate Lewis structures). This step might fail, when the structure is aromatic, but no Hydrogen position is provided. \n", "\n", - "If the conversion from SMILE to mol fails, then those SMILEs will get a Failed_at marker added. \n", + "> TODO: !(This explanation might be a bit short and not fully correct, check this later again)!\n", + "\n", + "If the conversion from SMILE to mol fails, then those SMILEs will get a **Failed_at** marker added. \n", "\n", "To avoid the sanitization of the molecule `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find different representation formats of the same molecule. \n", "\n", - "References:
\n", - "https://chemistry.stackexchange.com/questions/116498/what-is-kekulization-in-rdkit
\n", - "https://rdkit-discuss.narkive.com/QwnqcKcM/another-can-t-kekulize-mol-observation
\n", - "https://www.rdkit.org/docs/Cookbook.html
\n", - "https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html
\n" + "References:\n", + "\n", + "* https://chemistry.stackexchange.com/questions/116498/what-is-kekulization-in-rdkit\n", + "* https://rdkit-discuss.narkive.com/QwnqcKcM/another-can-t-kekulize-mol-observation\n", + "* https://www.rdkit.org/docs/Cookbook.html\n", + "* https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html\n" ] }, { @@ -231,33 +244,33 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [20:45:39] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n", - ":9: SettingWithCopyWarning: \n", + ":9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_1['Failed_at'] = failed_step_1['Failed_at'].apply(failMarker)\n" + " failed_step_1[\"Failed_at\"] = failed_step_1[\"Failed_at\"].apply(failMarker)\n" ] }, { @@ -295,7 +308,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a27b0>\n", " \n", " \n", " 1\n", @@ -303,7 +316,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2850>\n", " \n", " \n", " 2\n", @@ -311,7 +324,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28a0>\n", " \n", " \n", " 3\n", @@ -319,7 +332,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138da580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28f0>\n", " \n", " \n", " 4\n", @@ -327,7 +340,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73306f91c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2940>\n", " \n", " \n", " 5\n", @@ -335,7 +348,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138418a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2990>\n", " \n", " \n", " 6\n", @@ -343,7 +356,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a29e0>\n", " \n", " \n", " 7\n", @@ -351,7 +364,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138520d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2a30>\n", " \n", " \n", " 8\n", @@ -359,7 +372,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2a80>\n", " \n", " \n", " 9\n", @@ -367,7 +380,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2ad0>\n", " \n", " \n", " 10\n", @@ -375,7 +388,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138521c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2b20>\n", " \n", " \n", " 11\n", @@ -383,7 +396,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2b70>\n", " \n", " \n", " 12\n", @@ -391,7 +404,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2bc0>\n", " \n", " \n", " 13\n", @@ -399,7 +412,7 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138522b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2c10>\n", " \n", " \n", " 15\n", @@ -407,7 +420,7 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2c60>\n", " \n", " \n", " 16\n", @@ -415,7 +428,7 @@ " Acarbose\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2cb0>\n", " \n", " \n", "\n", @@ -459,25 +472,25 @@ "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 " ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -487,21 +500,21 @@ "taskNum = 1\n", "\n", "# A column called mol is beeing added to the dataframe to store the mol-files\n", - "dataset['mol'] = dataset['SMILEs'].apply(convert_format.convert_smiles_to_mol)\n", + "dataset[\"mol\"] = dataset[\"SMILEs\"].apply(convert_format.convert_smiles_to_mol)\n", "\n", "# All entries which couldn't generate a mol will get filtered another dataframe\n", - "failed_step_1 = dataset[(dataset['mol'].isnull())]\n", - "failed_step_1['Failed_at'] = failed_step_1['Failed_at'].apply(failMarker)\n", - "failed_step_1 = failed_step_1[['IDs','Names','SMILEs','Failed_at']]\n", + "failed_step_1 = dataset[(dataset[\"mol\"].isnull())]\n", + "failed_step_1[\"Failed_at\"] = failed_step_1[\"Failed_at\"].apply(failMarker)\n", + "failed_step_1 = failed_step_1[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\"]]\n", "\n", "# Update the dataset by removing all entries without a mol\n", - "result1 = dataset[dataset['mol'].notna()]\n", - "result1.head(16)\n" + "result1 = dataset[dataset[\"mol\"].notna()]\n", + "result1.head(16)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -605,7 +618,7 @@ "182 1 " ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -643,19 +656,19 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":11: SettingWithCopyWarning: \n", + ":11: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n" + " failed_step_2[\"Failed_at\"] = failed_step_2[\"Failed_at\"].apply(failMarker)\n" ] }, { @@ -694,7 +707,7 @@ " Chlorpromazine\n", " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8170>\n", " False\n", " \n", " \n", @@ -703,7 +716,7 @@ " Chlorpropamide\n", " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e8a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a81c0>\n", " False\n", " \n", " \n", @@ -712,7 +725,7 @@ " Chlortetracycline\n", " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e8f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8210>\n", " False\n", " \n", " \n", @@ -721,7 +734,7 @@ " Chlorzoxazone\n", " Oc1nc2cc(Cl)ccc2o1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8260>\n", " False\n", " \n", " \n", @@ -730,7 +743,7 @@ " Cholestyramine\n", " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a82b0>\n", " False\n", " \n", " \n", @@ -739,7 +752,7 @@ " Chondroitin sulfate\n", " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8300>\n", " False\n", " \n", " \n", @@ -748,7 +761,7 @@ " Cidofovir\n", " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ea30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8350>\n", " False\n", " \n", " \n", @@ -757,7 +770,7 @@ " Cimetidine\n", " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ea80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a83a0>\n", " False\n", " \n", " \n", @@ -766,7 +779,7 @@ " Cinchophen\n", " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ead0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a83f0>\n", " False\n", " \n", " \n", @@ -775,7 +788,7 @@ " Cinoxacin\n", " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8440>\n", " False\n", " \n", " \n", @@ -784,7 +797,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8490>\n", " False\n", " \n", " \n", @@ -793,7 +806,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ebc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a84e0>\n", " False\n", " \n", " \n", @@ -802,7 +815,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8530>\n", " False\n", " \n", " \n", @@ -811,7 +824,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8580>\n", " False\n", " \n", " \n", @@ -820,7 +833,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", " False\n", " \n", " \n", @@ -863,50 +876,50 @@ "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", "\n", " mol Inorganics \n", - "185 False \n", - "186 False \n", - "187 False \n", - "188 False \n", - "189 False \n", - "190 False \n", - "191 False \n", - "192 False \n", - "193 False \n", - "194 False \n", - "195 False \n", - "196 False \n", - "197 False \n", - "198 False \n", - "199 False " + "185 False \n", + "186 False \n", + "187 False \n", + "188 False \n", + "189 False \n", + "190 False \n", + "191 False \n", + "192 False \n", + "193 False \n", + "194 False \n", + "195 False \n", + "196 False \n", + "197 False \n", + "198 False \n", + "199 False " ] }, - "execution_count": 7, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum \n", + "# Setting up the taskNum\n", "taskNum = 2\n", "# getting the valid entries from the step before\n", "dataset = result1\n", "\n", "# Check for inorganic structures in the entries\n", - "dataset['Inorganics'] = dataset['mol'].apply(detect_inorganic)\n", + "dataset[\"Inorganics\"] = dataset[\"mol\"].apply(detect_inorganic)\n", "\n", "# Filter the failed entries\n", - "failed_step_2 = dataset[dataset['Inorganics']== True]\n", - "failed_step_2['Failed_at'] = failed_step_2['Failed_at'].apply(failMarker)\n", + "failed_step_2 = dataset[dataset[\"Inorganics\"] == True]\n", + "failed_step_2[\"Failed_at\"] = failed_step_2[\"Failed_at\"].apply(failMarker)\n", "\n", "\n", "# Safe entries that passed\n", - "result2 = dataset[dataset['Inorganics']== False]\n", + "result2 = dataset[dataset[\"Inorganics\"] == False]\n", "result2.tail(15)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -945,7 +958,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a27b0>\n", " True\n", " \n", " \n", @@ -954,7 +967,7 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384d170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8abb20>\n", " True\n", " \n", " \n", @@ -963,7 +976,7 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ed00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8620>\n", " True\n", " \n", " \n", @@ -972,7 +985,7 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ed50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8670>\n", " True\n", " \n", " \n", @@ -981,7 +994,7 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384eda0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a86c0>\n", " True\n", " \n", " \n", @@ -990,7 +1003,7 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384edf0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8710>\n", " True\n", " \n", " \n", @@ -1007,15 +1020,15 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol Inorganics \n", - "0 2 True \n", - "114 2 True \n", - "200 2 True \n", - "201 2 True \n", - "202 2 True \n", - "203 2 True " + "0 2 True \n", + "114 2 True \n", + "200 2 True \n", + "201 2 True \n", + "202 2 True \n", + "203 2 True " ] }, - "execution_count": 8, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -1034,159 +1047,159 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Removed fragment: 1,4-dioxane\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:39] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - ":7: SettingWithCopyWarning: \n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Removed fragment: 1,4-dioxane\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + ":7: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", - ":10: SettingWithCopyWarning: \n", + " dataset[\"mol_after\"] = dataset[\"mol\"].apply(handle_fragments.remove_fragments)\n", + ":10: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", - ":13: SettingWithCopyWarning: \n", + " dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", + ":13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - ":14: SettingWithCopyWarning: \n", + " dataset[\"Smiles 3\"] = dataset[\"mol_after\"].apply(convert_format.convert_mol_to_smiles)\n", + ":14: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", - ":19: SettingWithCopyWarning: \n", + " dataset[\"noChanges\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 3\"]\n", + ":19: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n" + " failed_step_3[\"Failed_at\"] = failed_step_3[\"Failed_at\"].apply(failMarker)\n" ] }, { @@ -1224,7 +1237,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8490>\n", " \n", " \n", " 196\n", @@ -1232,7 +1245,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ebc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a84e0>\n", " \n", " \n", " 197\n", @@ -1240,7 +1253,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8530>\n", " \n", " \n", " 198\n", @@ -1248,7 +1261,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8580>\n", " \n", " \n", " 199\n", @@ -1256,7 +1269,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", " \n", " \n", "\n", @@ -1271,49 +1284,48 @@ "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", "\n", " Failed_at mol \n", - "195 0 \n", - "196 0 \n", - "197 0 \n", - "198 0 \n", - "199 0 " + "195 0 \n", + "196 0 \n", + "197 0 \n", + "198 0 \n", + "199 0 " ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum \n", + "# Setting up the taskNum\n", "taskNum = 3\n", "# getting the valid entries from the step before\n", "dataset = result2\n", "\n", "# Perform remove_fragments on entries\n", - "dataset['mol_after'] = dataset['mol'].apply(handle_fragments.remove_fragments)\n", + "dataset[\"mol_after\"] = dataset[\"mol\"].apply(handle_fragments.remove_fragments)\n", "\n", "# Create Smiles for evaluation\n", - "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", "\n", - "# Create new SMILEs from the current state for evaluation of performed changes \n", - "dataset['Smiles 3'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 3']\n", + "# Create new SMILEs from the current state for evaluation of performed changes\n", + "dataset[\"Smiles 3\"] = dataset[\"mol_after\"].apply(convert_format.convert_mol_to_smiles)\n", + "dataset[\"noChanges\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 3\"]\n", "\n", "\n", "# Filter the failed entries\n", - "failed_step_3 = dataset[dataset['noChanges']== False]\n", - "failed_step_3['Failed_at'] = failed_step_3['Failed_at'].apply(failMarker)\n", + "failed_step_3 = dataset[dataset[\"noChanges\"] == False]\n", + "failed_step_3[\"Failed_at\"] = failed_step_3[\"Failed_at\"].apply(failMarker)\n", "\n", "# Safe entries that passed\n", - "result3 = dataset[dataset['noChanges']== True]\n", - "result3 = result3[['IDs','Names','SMILEs','Failed_at','mol']]\n", - "result3.tail()\n", - "\n" + "result3 = dataset[dataset[\"noChanges\"] == True]\n", + "result3 = result3[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", + "result3.tail()" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -1356,9 +1368,9 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138418a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2990>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313879d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8bf300>\n", " C1COCCO1.OCC1OC(O)CC(O)C1O\n", " OCC1OC(O)CC(O)C1O\n", " False\n", @@ -1372,16 +1384,16 @@ "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 3 \n", "\n", " mol Inorganics \\\n", - "5 False \n", + "5 False \n", "\n", " mol_after \\\n", - "5 \n", + "5 \n", "\n", " smiles_before Smiles 3 noChanges \n", "5 C1COCCO1.OCC1OC(O)CC(O)C1O OCC1OC(O)CC(O)C1O False " ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1400,443 +1412,437 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Running FragmentRemover\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n", - "RDKit INFO: [20:45:40] Initializing MetalDisconnector\n", - "RDKit INFO: [20:45:40] Running MetalDisconnector\n" + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:29] Running FragmentRemover\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n", + "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", + "RDKit INFO: [12:04:50] Running MetalDisconnector\n" ] }, { @@ -1875,7 +1881,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8490>\n", " True\n", " \n", " \n", @@ -1884,7 +1890,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ebc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a84e0>\n", " True\n", " \n", " \n", @@ -1893,7 +1899,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8530>\n", " True\n", " \n", " \n", @@ -1902,7 +1908,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8580>\n", " True\n", " \n", " \n", @@ -1911,7 +1917,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", " True\n", " \n", " \n", @@ -1927,49 +1933,52 @@ "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", "\n", " Failed_at mol noChanges \n", - "195 0 True \n", - "196 0 True \n", - "197 0 True \n", - "198 0 True \n", - "199 0 True " + "195 0 True \n", + "196 0 True \n", + "197 0 True \n", + "198 0 True \n", + "199 0 True " ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum \n", + "# Setting up the taskNum\n", "taskNum = 4\n", "# getting the valid entries from the step before\n", - "dataset = result3[['IDs','Names','SMILEs','Failed_at','mol']] #Load result1 subset to actually see this step perform\n", + "# Load result1 subset to actually see this step perform\n", + "dataset = result3[\n", + " [\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]\n", + "] \n", "\n", "# Create Smiles for evaluation\n", - "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", "\n", "# Perform disconnect_metals on entries\n", - "dataset['mol_after'] = dataset['mol'].apply(disconnect_metals)\n", + "dataset[\"mol_after\"] = dataset[\"mol\"].apply(disconnect_metals)\n", "\n", - "# Create new SMILEs from the current state for evaluation of performed changes \n", - "dataset['Smiles 4'] = dataset['mol_after'].apply(convert_format.convert_mol_to_smiles)\n", - "dataset['noChanges']= dataset['smiles_before'] == dataset['Smiles 4']\n", + "# Create new SMILEs from the current state for evaluation of performed changes\n", + "dataset[\"Smiles 4\"] = dataset[\"mol_after\"].apply(convert_format.convert_mol_to_smiles)\n", + "dataset[\"noChanges\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 4\"]\n", "\n", "# Filter the failed entries\n", - "failed_step_4 = dataset[dataset['noChanges']== False]\n", - "failed_step_4['Failed_at'] = failed_step_4['Failed_at'].apply(failMarker)\n", - "failed_step_4 = failed_step_4[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "failed_step_4 = dataset[dataset[\"noChanges\"] == False]\n", + "failed_step_4[\"Failed_at\"] = failed_step_4[\"Failed_at\"].apply(failMarker)\n", + "failed_step_4 = failed_step_4[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", "failed_step_4.tail()\n", "\n", "# Safe entries that passed\n", - "result4 = dataset[dataset['noChanges']== True]\n", - "result4 = result4[['IDs','Names','SMILEs','Failed_at','mol','noChanges']]\n", + "result4 = dataset[dataset[\"noChanges\"] == True]\n", + "result4 = result4[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\", \"noChanges\"]]\n", "result4.tail()" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -2011,7 +2020,7 @@ "Index: []" ] }, - "execution_count": 12, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -2031,7 +2040,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -2069,7 +2078,7 @@ " Chlorpromazine\n", " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8170>\n", " \n", " \n", " 186\n", @@ -2077,7 +2086,7 @@ " Chlorpropamide\n", " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e8a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a81c0>\n", " \n", " \n", " 187\n", @@ -2085,7 +2094,7 @@ " Chlortetracycline\n", " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e8f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8210>\n", " \n", " \n", " 188\n", @@ -2093,7 +2102,7 @@ " Chlorzoxazone\n", " Oc1nc2cc(Cl)ccc2o1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8260>\n", " \n", " \n", " 189\n", @@ -2101,7 +2110,7 @@ " Cholestyramine\n", " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a82b0>\n", " \n", " \n", " 190\n", @@ -2109,7 +2118,7 @@ " Chondroitin sulfate\n", " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8300>\n", " \n", " \n", " 191\n", @@ -2117,7 +2126,7 @@ " Cidofovir\n", " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ea30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8350>\n", " \n", " \n", " 192\n", @@ -2125,7 +2134,7 @@ " Cimetidine\n", " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ea80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a83a0>\n", " \n", " \n", " 193\n", @@ -2133,7 +2142,7 @@ " Cinchophen\n", " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ead0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a83f0>\n", " \n", " \n", " 194\n", @@ -2141,7 +2150,7 @@ " Cinoxacin\n", " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8440>\n", " \n", " \n", " 195\n", @@ -2149,7 +2158,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384eb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8490>\n", " \n", " \n", " 196\n", @@ -2157,7 +2166,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ebc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a84e0>\n", " \n", " \n", " 197\n", @@ -2165,7 +2174,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8530>\n", " \n", " \n", " 198\n", @@ -2173,7 +2182,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ec60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8580>\n", " \n", " \n", " 199\n", @@ -2181,7 +2190,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", " \n", " \n", "\n", @@ -2223,51 +2232,51 @@ "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", "\n", " mol \n", - "185 \n", - "186 \n", - "187 \n", - "188 \n", - "189 \n", - "190 \n", - "191 \n", - "192 \n", - "193 \n", - "194 \n", - "195 \n", - "196 \n", - "197 \n", - "198 \n", - "199 " + "185 \n", + "186 \n", + "187 \n", + "188 \n", + "189 \n", + "190 \n", + "191 \n", + "192 \n", + "193 \n", + "194 \n", + "195 \n", + "196 \n", + "197 \n", + "198 \n", + "199 " ] }, - "execution_count": 13, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum \n", + "# Setting up the taskNum\n", "taskNum = 5\n", "# getting the valid entries from the step before\n", "dataset = result4\n", "\n", "# Check for inorganic structures in the entries\n", - "dataset['Inorganics2'] = dataset['mol'].apply(detect_inorganic)\n", + "dataset[\"Inorganics2\"] = dataset[\"mol\"].apply(detect_inorganic)\n", "\n", "# Filter the failed entries\n", - "failed_step_5 = dataset[dataset['Inorganics2']== True]\n", - "failed_step_5['Failed_at'] = failed_step_5['Failed_at'].apply(failMarker)\n", - "failed_step_5 = failed_step_5[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "failed_step_5 = dataset[dataset[\"Inorganics2\"] == True]\n", + "failed_step_5[\"Failed_at\"] = failed_step_5[\"Failed_at\"].apply(failMarker)\n", + "failed_step_5 = failed_step_5[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", "\n", "# Safe entries that passed\n", - "result5 = dataset[dataset['Inorganics2']== False]\n", - "result5 = result5[['IDs','Names','SMILEs','Failed_at','mol']]\n", + "result5 = dataset[dataset[\"Inorganics2\"] == False]\n", + "result5 = result5[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", "result5.tail(15)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -2309,7 +2318,7 @@ "Index: []" ] }, - "execution_count": 14, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -2338,7 +2347,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -2359,7 +2368,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -2376,12 +2385,12 @@ "name": "stderr", "output_type": "stream", "text": [ - ":18: SettingWithCopyWarning: \n", + ":18: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " changed_at_step_6['Changed_at'] = changed_at_step_6['Failed_at'].apply(failMarker)\n" + " changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(failMarker)\n" ] }, { @@ -2424,7 +2433,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c884120>\n", " True\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", @@ -2437,7 +2446,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2850>\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", @@ -2450,7 +2459,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28a0>\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", @@ -2463,7 +2472,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138da580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28f0>\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", " O=C(O)C(S)C(S)C(=O)O\n", @@ -2476,7 +2485,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73306f91c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2940>\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", @@ -2489,7 +2498,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138418a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2990>\n", " False\n", " C1COCCO1.OCC1OC(O)CC(O)C1O\n", " C1COCCO1.OCC1OC(O)CC(O)C1O\n", @@ -2502,7 +2511,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a29e0>\n", " False\n", " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", @@ -2515,7 +2524,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138520d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2a30>\n", " False\n", " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", @@ -2528,7 +2537,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2a80>\n", " False\n", " Nc1ccc(C(=O)O)cc1\n", " Nc1ccc(C(=O)O)cc1\n", @@ -2541,7 +2550,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2ad0>\n", " False\n", " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", @@ -2554,7 +2563,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138521c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2b20>\n", " False\n", " O=c1[nH]cc(F)c(=O)[nH]1\n", " O=c1[nH]cc(F)c(=O)[nH]1\n", @@ -2567,7 +2576,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2b70>\n", " False\n", " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", @@ -2580,7 +2589,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2bc0>\n", " False\n", " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", @@ -2593,7 +2602,7 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138522b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2c10>\n", " False\n", " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", @@ -2606,7 +2615,7 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2c60>\n", " False\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", @@ -2619,7 +2628,7 @@ " Acarbose\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2cb0>\n", " False\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", @@ -2632,7 +2641,7 @@ " Acebutolol\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138523a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2d00>\n", " False\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1\n", @@ -2645,7 +2654,7 @@ " Acenocoumarol\n", " CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138523f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2d50>\n", " False\n", " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", @@ -2658,7 +2667,7 @@ " Acetamide\n", " CC(N)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2da0>\n", " False\n", " CC(N)=O\n", " CC(N)=O\n", @@ -2671,7 +2680,7 @@ " Acetaminophen\n", " CC(=O)Nc1ccc(O)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313852490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2df0>\n", " False\n", " CC(=O)Nc1ccc(O)cc1\n", " CC(=O)Nc1ccc(O)cc1\n", @@ -2728,26 +2737,26 @@ "20 CC(=O)Nc1ccc(O)cc1 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "5 False \n", - "6 False \n", - "7 False \n", - "8 False \n", - "9 False \n", - "10 False \n", - "11 False \n", - "12 False \n", - "13 False \n", - "15 False \n", - "16 False \n", - "17 False \n", - "18 False \n", - "19 False \n", - "20 False \n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "5 False \n", + "6 False \n", + "7 False \n", + "8 False \n", + "9 False \n", + "10 False \n", + "11 False \n", + "12 False \n", + "13 False \n", + "15 False \n", + "16 False \n", + "17 False \n", + "18 False \n", + "19 False \n", + "20 False \n", "\n", " smiles_before \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", @@ -2816,42 +2825,42 @@ "20 NaN " ] }, - "execution_count": 16, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum \n", + "# Setting up the taskNum\n", "taskNum = 6\n", "# getting the valid entries from the step before\n", - "dataset = result1 # Load results 1 here, to see the functionality, 'cause all entries containing salts, have already been filtered by prior steps.\n", + "dataset = result1 # Load results 1 here, to see the functionality, 'cause all entries containing salts, have already been filtered by prior steps.\n", "\n", "# Create Smiles for evaluation\n", - "dataset['smiles_before'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", + "dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", "\n", "# Perform disconnect_metals on entries\n", - "dataset['mol'] = dataset['mol'].map(remove_salts)\n", + "dataset[\"mol\"] = dataset[\"mol\"].map(remove_salts)\n", "\n", - "# Create new SMILEs from the current state for evaluation of performed changes \n", - "dataset['Smiles 5'] = dataset['mol'].apply(convert_format.convert_mol_to_smiles)\n", - "dataset['no_removed_salt']= dataset['smiles_before'] == dataset['Smiles 5']\n", + "# Create new SMILEs from the current state for evaluation of performed changes\n", + "dataset[\"Smiles 5\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", + "dataset[\"no_removed_salt\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 5\"]\n", "\n", "# Filter the changed entries\n", - "changed_at_step_6 = dataset[dataset['no_removed_salt']== False]\n", - "changed_at_step_6['Changed_at'] = changed_at_step_6['Failed_at'].apply(failMarker)\n", - "changed_at_step_6 = changed_at_step_6[['IDs','Names','SMILEs','Changed_at','mol']]\n", + "changed_at_step_6 = dataset[dataset[\"no_removed_salt\"] == False]\n", + "changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(failMarker)\n", + "changed_at_step_6 = changed_at_step_6[[\"IDs\", \"Names\", \"SMILEs\", \"Changed_at\", \"mol\"]]\n", "\n", - "dataset['Changed_at'] = dataset[dataset['no_removed_salt'] == False]['Failed_at'].apply(failMarker)\n", + "dataset[\"Changed_at\"] = dataset[dataset[\"no_removed_salt\"] == False][\"Failed_at\"].apply(failMarker)\n", "dataset.head(20)\n", "\n", - "#dataset['removed_salts'] = RemoveSaltsFromFrame(dataset,molCol='mol')\n", - "#where_salt = dataset[dataset['removed_salts'].notna()]" + "# dataset['removed_salts'] = RemoveSaltsFromFrame(dataset,molCol='mol')\n", + "# where_salt = dataset[dataset['removed_salts'].notna()]" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -2889,7 +2898,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c884120>\n", " \n", " \n", " 202\n", @@ -2897,7 +2906,7 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138201c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c87dad0>\n", " \n", " \n", " 203\n", @@ -2905,7 +2914,7 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c83a580>\n", " \n", " \n", "\n", @@ -2918,12 +2927,12 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Changed_at mol \n", - "0 6 \n", - "202 6 \n", - "203 6 " + "0 6 \n", + "202 6 \n", + "203 6 " ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -2942,7 +2951,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -2977,8 +2986,6 @@ " no_removed_salt\n", " Changed_at\n", " normalized\n", - " canonicalized tautomer\n", - " duplicate?\n", " \n", " \n", " \n", @@ -2988,15 +2995,13 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c884120>\n", " True\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137a40d0>\n", - " CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b120>\n", " \n", " \n", " 1\n", @@ -3004,15 +3009,13 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2850>\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731385f1c0>\n", - " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b9e0>\n", " \n", " \n", " 2\n", @@ -3020,15 +3023,13 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28a0>\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313819940>\n", - " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86bbc0>\n", " \n", " \n", " 3\n", @@ -3036,15 +3037,13 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138da580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28f0>\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", " O=C(O)C(S)C(S)C(=O)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138190d0>\n", - " O=C(O)C(S)C(S)C(=O)O\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86bc60>\n", " \n", " \n", " 4\n", @@ -3052,15 +3051,13 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73306f91c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2940>\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137eb8a0>\n", - " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", - " False\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b080>\n", " \n", " \n", "\n", @@ -3082,11 +3079,11 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", "\n", " smiles_before \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", @@ -3102,37 +3099,30 @@ "3 O=C(O)C(S)C(S)C(=O)O True \n", "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", "\n", - " Changed_at normalized \\\n", - "0 6.0 \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "\n", - " canonicalized tautomer duplicate? \n", - "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... False \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O False \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O False \n", - "3 O=C(O)C(S)C(S)C(=O)O False \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] False " + " Changed_at normalized \n", + "0 6.0 \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN " ] }, - "execution_count": 26, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "#TODO: Finish all steps here\n", + "# TODO: Finish all steps here\n", "\n", - "# Setting up the taskNum \n", + "# Setting up the taskNum\n", "taskNum = 7\n", "# getting the valid entries from the step before\n", "dataset = result1\n", - "#dataset.head(100)\n", - "dataset['normalized'] = dataset['mol'].apply(normalize)\n", + "# dataset.head(100)\n", + "dataset[\"normalized\"] = dataset[\"mol\"].apply(normalize)\n", "result7 = dataset\n", - "result7.head()\n" + "result7.head()" ] }, { @@ -3144,11 +3134,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ - "#TODO: Add the functionlaity here" + "# TODO: Add the functionlaity here" ] }, { @@ -3162,11 +3152,11 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ - "#TODO: Finish all steps here\n", + "# TODO: Finish all steps here\n", "\n", "# Normalization of specific chemotypes\n", "# normalize_molecules" @@ -3174,11 +3164,11 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ - "#TODO: Finish all steps here\n", + "# TODO: Finish all steps here\n", "\n", "# Treatment of tautomeric forms\n", "# handle_tautomers" @@ -3193,7 +3183,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -3246,13 +3236,13 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c884120>\n", " True\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313811580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b120>\n", " CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...\n", " \n", " \n", @@ -3261,13 +3251,13 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2850>\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313819350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b9e0>\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " \n", " \n", @@ -3276,13 +3266,13 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138ec2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28a0>\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313811440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86bbc0>\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " \n", " \n", @@ -3291,13 +3281,13 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138da580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28f0>\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", " O=C(O)C(S)C(S)C(=O)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138113f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86bc60>\n", " O=C(O)C(S)C(S)C(=O)O\n", " \n", " \n", @@ -3306,13 +3296,13 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73306f91c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2940>\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138114e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b080>\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " \n", " \n", @@ -3335,11 +3325,11 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", "\n", " smiles_before \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", @@ -3356,11 +3346,11 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", "\n", " Changed_at normalized \\\n", - "0 6.0 \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", + "0 6.0 \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", "\n", " canonicalized tautomer \n", "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... \n", @@ -3370,27 +3360,27 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] " ] }, - "execution_count": 21, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "#TODO: Finish all steps here\n", + "# TODO: Finish all steps here\n", "\n", - "# Setting up the taskNum \n", + "# Setting up the taskNum\n", "taskNum = 9\n", "\n", "dataset = result7\n", "\n", "# Find all duplicate occurences in SMILEs\n", - "dataset['canonicalized tautomer'] = dataset['SMILEs'].apply(handle_tautomers.canonicalize_tautomer)\n", + "dataset[\"canonicalized tautomer\"] = dataset[\"SMILEs\"].apply(handle_tautomers.canonicalize_tautomer)\n", "dataset.head()" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -3435,13 +3425,13 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ecb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", " False\n", " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137d38f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c87b2b0>\n", " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " \n", " \n", @@ -3450,13 +3440,13 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ed00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8620>\n", " True\n", " CCO[Zr](OCC)(OCC)OCC\n", " CCO[Zr](OCC)(OCC)OCC\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137d3670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c87bcb0>\n", " CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]\n", " \n", " \n", @@ -3465,13 +3455,13 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384ed50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8670>\n", " True\n", " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137d3b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c87bb70>\n", " C=CC1=C(C)c2cc3[n-]c(cc4[nH]c(cc5nc(cc1n2)C(C)...\n", " \n", " \n", @@ -3480,13 +3470,13 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73138201c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c87dad0>\n", " True\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " [Zn]\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137d38a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c87b760>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " \n", " \n", @@ -3495,13 +3485,13 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c83a580>\n", " True\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " [Zn]\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313819d00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c87ba30>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " \n", " \n", @@ -3517,11 +3507,11 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol Inorganics \\\n", - "199 0 False \n", - "200 0 True \n", - "201 0 True \n", - "202 0 True \n", - "203 0 True \n", + "199 0 False \n", + "200 0 True \n", + "201 0 True \n", + "202 0 True \n", + "203 0 True \n", "\n", " smiles_before \\\n", "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", @@ -3538,11 +3528,11 @@ "203 [Zn] False \n", "\n", " Changed_at normalized \\\n", - "199 NaN \n", - "200 NaN \n", - "201 NaN \n", - "202 6.0 \n", - "203 6.0 \n", + "199 NaN \n", + "200 NaN \n", + "201 NaN \n", + "202 6.0 \n", + "203 6.0 \n", "\n", " canonicalized tautomer \n", "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", @@ -3552,7 +3542,7 @@ "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... " ] }, - "execution_count": 22, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -3570,19 +3560,19 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":13: SettingWithCopyWarning: \n", + ":15: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_10['Failed_at'] = failed_step_10['Failed_at'].apply(failMarker)\n" + " failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(failMarker)\n" ] }, { @@ -3628,13 +3618,13 @@ " Cerivastatin sodium\n", " COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc...\n", " 10\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f731384e350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c8aac10>\n", " False\n", " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137d58f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c81d260>\n", " COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...\n", " True\n", " \n", @@ -3644,13 +3634,13 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 10\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f73137bf670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c83a580>\n", " True\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " [Zn]\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f7313819d00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f797c87ba30>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " True\n", " \n", @@ -3668,8 +3658,8 @@ "203 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 10 \n", "\n", " mol Inorganics \\\n", - "168 False \n", - "203 True \n", + "168 False \n", + "203 True \n", "\n", " smiles_before \\\n", "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... \n", @@ -3680,60 +3670,257 @@ "203 [Zn] False \n", "\n", " Changed_at normalized \\\n", - "168 NaN \n", - "203 6.0 \n", + "168 NaN \n", + "203 6.0 \n", "\n", " canonicalized tautomer duplicate? \n", "168 COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(... True \n", "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... True " ] }, - "execution_count": 23, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "#TODO: Fine tune the output\n", + "# TODO: Fine tune the output\n", "\n", "# Analysis/removal of duplicates\n", "\n", - "# Setting up the taskNum \n", + "# Setting up the taskNum\n", "taskNum = 10\n", "\n", "dataset = result7\n", "\n", "# Find all duplicate occurences in SMILEs\n", - "dataset['duplicate?'] = dataset.duplicated(subset=['SMILEs'])\n", + "dataset[\"duplicate?\"] = dataset.duplicated(subset=[\"SMILEs\"])\n", "\n", - "#Filter the duplicates out\n", - "failed_step_10 = dataset[dataset['duplicate?']== True]\n", - "failed_step_10['Failed_at'] = failed_step_10['Failed_at'].apply(failMarker)\n", + "# Filter the duplicates out\n", + "failed_step_10 = dataset[dataset[\"duplicate?\"] == True]\n", + "failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(failMarker)\n", "\n", - "dataset = dataset[dataset['duplicate?']== False]\n", - "failed_step_10.tail()\n" + "dataset = dataset[dataset[\"duplicate?\"] == False]\n", + "failed_step_10.tail()" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "# Manual inspection\n", "\n", - "#TODO: Create csv-exports for better readability of the subsets or jupyter notebook searchable tables " + "# TODO: Create csv-exports for better readability of the subsets or jupyter notebook searchable tables" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ - "#Contatination of results for the end \n", - "test = pd.concat([failed_step_1,failed_step_2])\n", - "test = test.sort_values(by=['IDs'])\n" + "# Contatination of results for the end\n", + "test = pd.concat([failed_step_1, failed_step_2])\n", + "test = test.sort_values(by=[\"IDs\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolInorganics
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]2<rdkit.Chem.rdchem.Mol object at 0x7f797c8a27b0>True
14156-MercaptopurineSc1ncnc2[nH]c[nH]c121NaNNaN
4142AlfuzosinCOc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO11NaNNaN
5758AminophyllineCN1C(=O)N(C)c2[nH]c[nH]c2C1=O1NaNNaN
8586AzathioprineCn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O1NaNNaN
9091BacitracinCCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC...1NaNNaN
114115BortezomibCC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O2<rdkit.Chem.rdchem.Mol object at 0x7f797c8abb20>True
133134CamptothecinCCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O1NaNNaN
182183ChloroquineCCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc121NaNNaN
200201zirconiumCCO[Zr](OCC)(OCC)OCC2<rdkit.Chem.rdchem.Mol object at 0x7f797c8a8620>True
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...2<rdkit.Chem.rdchem.Mol object at 0x7f797c8a8670>True
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....2<rdkit.Chem.rdchem.Mol object at 0x7f797c8a86c0>True
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....2<rdkit.Chem.rdchem.Mol object at 0x7f797c8a8710>True
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs \\\n", + "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", + "14 15 6-Mercaptopurine Sc1ncnc2[nH]c[nH]c12 \n", + "41 42 Alfuzosin COc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO1 \n", + "57 58 Aminophylline CN1C(=O)N(C)c2[nH]c[nH]c2C1=O \n", + "85 86 Azathioprine Cn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O \n", + "90 91 Bacitracin CCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC... \n", + "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", + "133 134 Camptothecin CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O \n", + "182 183 Chloroquine CCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc12 \n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", + "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", + "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "\n", + " Failed_at mol Inorganics \n", + "0 2 True \n", + "14 1 NaN NaN \n", + "41 1 NaN NaN \n", + "57 1 NaN NaN \n", + "85 1 NaN NaN \n", + "90 1 NaN NaN \n", + "114 2 True \n", + "133 1 NaN NaN \n", + "182 1 NaN NaN \n", + "200 2 True \n", + "201 2 True \n", + "202 2 True \n", + "203 2 True " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test" ] } ], @@ -3753,9 +3940,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.8.3" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/opencadd/compounds/standardization/__init__.py b/opencadd/compounds/standardization/__init__.py index 5ad37480..292fd259 100644 --- a/opencadd/compounds/standardization/__init__.py +++ b/opencadd/compounds/standardization/__init__.py @@ -4,7 +4,6 @@ """ # Add imports here -from .standardization import * from .assign_stereochemistry import * from .convert_format import * from .detect_inorganic import * @@ -14,15 +13,5 @@ from .handle_hydrogens import * from .normalize_molecules import * from .remove_salts import * -from .utils import * from .sanitize_molecules import * from .validate_molecules import * - - -# Handle versioneer -from ._version import get_versions - -versions = get_versions() -__version__ = versions["version"] -__git_revision__ = versions["full-revisionid"] -del get_versions, versions diff --git a/opencadd/compounds/standardization/_version.py b/opencadd/compounds/standardization/_version.py deleted file mode 100644 index 57ebb258..00000000 --- a/opencadd/compounds/standardization/_version.py +++ /dev/null @@ -1,556 +0,0 @@ -# This file helps to compute a version number in source trees obtained from -# git-archive tarball (such as those provided by githubs download-from-tag -# feature). Distribution tarballs (built by setup.py sdist) and build -# directories (produced by setup.py build) will contain a much shorter file -# that just contains the computed version number. - -# This file is released into the public domain. Generated by -# versioneer-0.18 (https://github.com/warner/python-versioneer) - -"""Git implementation of _version.py.""" - -import errno -import os -import re -import subprocess -import sys - - -def get_keywords(): - """Get the keywords needed to look up the version information.""" - # these strings will be replaced by git during git-archive. - # setup.py/versioneer.py will grep for the variable names, so they must - # each be defined on a line of their own. _version.py will just call - # get_keywords(). - git_refnames = "$Format:%d$" - git_full = "$Format:%H$" - git_date = "$Format:%ci$" - keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} - return keywords - - -class VersioneerConfig: - """Container for Versioneer configuration parameters.""" - - -def get_config(): - """Create, populate and return the VersioneerConfig() object.""" - # these strings are filled in when 'setup.py versioneer' creates - # _version.py - cfg = VersioneerConfig() - cfg.VCS = "git" - cfg.style = "pep440" - cfg.tag_prefix = "" - cfg.parentdir_prefix = "None" - cfg.versionfile_source = "standardizer/_version.py" - cfg.verbose = False - return cfg - - -class NotThisMethod(Exception): - """Exception raised if a method is not valid for the current scenario.""" - - -LONG_VERSION_PY = {} -HANDLERS = {} - - -def register_vcs_handler(vcs, method): # decorator - """Decorator to mark a method as the handler for a particular VCS.""" - - def decorate(f): - """Store f in HANDLERS[vcs][method].""" - if vcs not in HANDLERS: - HANDLERS[vcs] = {} - HANDLERS[vcs][method] = f - return f - - return decorate - - -def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None): - """Call the given command(s).""" - assert isinstance(commands, list) - p = None - for c in commands: - try: - dispcmd = str([c] + args) - # remember shell=False, so use git.cmd on windows, not just git - p = subprocess.Popen( - [c] + args, - cwd=cwd, - env=env, - stdout=subprocess.PIPE, - stderr=(subprocess.PIPE if hide_stderr else None), - ) - break - except EnvironmentError: - e = sys.exc_info()[1] - if e.errno == errno.ENOENT: - continue - if verbose: - print("unable to run %s" % dispcmd) - print(e) - return None, None - else: - if verbose: - print("unable to find command, tried %s" % (commands,)) - return None, None - stdout = p.communicate()[0].strip() - if sys.version_info[0] >= 3: - stdout = stdout.decode() - if p.returncode != 0: - if verbose: - print("unable to run %s (error)" % dispcmd) - print("stdout was %s" % stdout) - return None, p.returncode - return stdout, p.returncode - - -def versions_from_parentdir(parentdir_prefix, root, verbose): - """Try to determine the version from the parent directory name. - - Source tarballs conventionally unpack into a directory that includes both - the project name and a version string. We will also support searching up - two directory levels for an appropriately named parent directory - """ - rootdirs = [] - - for i in range(3): - dirname = os.path.basename(root) - if dirname.startswith(parentdir_prefix): - return { - "version": dirname[len(parentdir_prefix) :], - "full-revisionid": None, - "dirty": False, - "error": None, - "date": None, - } - else: - rootdirs.append(root) - root = os.path.dirname(root) # up a level - - if verbose: - print( - "Tried directories %s but none started with prefix %s" - % (str(rootdirs), parentdir_prefix) - ) - raise NotThisMethod("rootdir doesn't start with parentdir_prefix") - - -@register_vcs_handler("git", "get_keywords") -def git_get_keywords(versionfile_abs): - """Extract version information from the given file.""" - # the code embedded in _version.py can just fetch the value of these - # keywords. When used from setup.py, we don't want to import _version.py, - # so we do it with a regexp instead. This function is not used from - # _version.py. - keywords = {} - try: - f = open(versionfile_abs, "r") - for line in f.readlines(): - if line.strip().startswith("git_refnames ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["refnames"] = mo.group(1) - if line.strip().startswith("git_full ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["full"] = mo.group(1) - if line.strip().startswith("git_date ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["date"] = mo.group(1) - f.close() - except EnvironmentError: - pass - return keywords - - -@register_vcs_handler("git", "keywords") -def git_versions_from_keywords(keywords, tag_prefix, verbose): - """Get version information from git keywords.""" - if not keywords: - raise NotThisMethod("no keywords at all, weird") - date = keywords.get("date") - if date is not None: - # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant - # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 - # -like" string, which we must then edit to make compliant), because - # it's been around since git-1.5.3, and it's too difficult to - # discover which version we're using, or to work around using an - # older one. - date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - refnames = keywords["refnames"].strip() - if refnames.startswith("$Format"): - if verbose: - print("keywords are unexpanded, not using") - raise NotThisMethod("unexpanded keywords, not a git-archive tarball") - refs = set([r.strip() for r in refnames.strip("()").split(",")]) - # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of - # just "foo-1.0". If we see a "tag: " prefix, prefer those. - TAG = "tag: " - tags = set([r[len(TAG) :] for r in refs if r.startswith(TAG)]) - if not tags: - # Either we're using git < 1.8.3, or there really are no tags. We use - # a heuristic: assume all version tags have a digit. The old git %d - # expansion behaves like git log --decorate=short and strips out the - # refs/heads/ and refs/tags/ prefixes that would let us distinguish - # between branches and tags. By ignoring refnames without digits, we - # filter out many common branch names like "release" and - # "stabilization", as well as "HEAD" and "master". - tags = set([r for r in refs if re.search(r"\d", r)]) - if verbose: - print("discarding '%s', no digits" % ",".join(refs - tags)) - if verbose: - print("likely tags: %s" % ",".join(sorted(tags))) - for ref in sorted(tags): - # sorting will prefer e.g. "2.0" over "2.0rc1" - if ref.startswith(tag_prefix): - r = ref[len(tag_prefix) :] - if verbose: - print("picking %s" % r) - return { - "version": r, - "full-revisionid": keywords["full"].strip(), - "dirty": False, - "error": None, - "date": date, - } - # no suitable tags, so version is "0+unknown", but full hex is still there - if verbose: - print("no suitable tags, using unknown + full revision id") - return { - "version": "0+unknown", - "full-revisionid": keywords["full"].strip(), - "dirty": False, - "error": "no suitable tags", - "date": None, - } - - -@register_vcs_handler("git", "pieces_from_vcs") -def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): - """Get version from 'git describe' in the root of the source tree. - - This only gets called if the git-archive 'subst' keywords were *not* - expanded, and _version.py hasn't already been rewritten with a short - version string, meaning we're inside a checked out source tree. - """ - GITS = ["git"] - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - - out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True) - if rc != 0: - if verbose: - print("Directory %s not under git control" % root) - raise NotThisMethod("'git rev-parse --git-dir' returned error") - - # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] - # if there isn't one, this yields HEX[-dirty] (no NUM) - describe_out, rc = run_command( - GITS, - [ - "describe", - "--tags", - "--dirty", - "--always", - "--long", - "--match", - "%s*" % tag_prefix, - ], - cwd=root, - ) - # --long was added in git-1.5.5 - if describe_out is None: - raise NotThisMethod("'git describe' failed") - describe_out = describe_out.strip() - full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) - if full_out is None: - raise NotThisMethod("'git rev-parse' failed") - full_out = full_out.strip() - - pieces = {} - pieces["long"] = full_out - pieces["short"] = full_out[:7] # maybe improved later - pieces["error"] = None - - # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] - # TAG might have hyphens. - git_describe = describe_out - - # look for -dirty suffix - dirty = git_describe.endswith("-dirty") - pieces["dirty"] = dirty - if dirty: - git_describe = git_describe[: git_describe.rindex("-dirty")] - - # now we have TAG-NUM-gHEX or HEX - - if "-" in git_describe: - # TAG-NUM-gHEX - mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe) - if not mo: - # unparseable. Maybe git-describe is misbehaving? - pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out - return pieces - - # tag - full_tag = mo.group(1) - if not full_tag.startswith(tag_prefix): - if verbose: - fmt = "tag '%s' doesn't start with prefix '%s'" - print(fmt % (full_tag, tag_prefix)) - pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % ( - full_tag, - tag_prefix, - ) - return pieces - pieces["closest-tag"] = full_tag[len(tag_prefix) :] - - # distance: number of commits since tag - pieces["distance"] = int(mo.group(2)) - - # commit: short hex revision ID - pieces["short"] = mo.group(3) - - else: - # HEX: no tags - pieces["closest-tag"] = None - count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root) - pieces["distance"] = int(count_out) # total number of commits - - # commit date: see ISO-8601 comment in git_versions_from_keywords() - date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[ - 0 - ].strip() - pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - - return pieces - - -def plus_or_dot(pieces): - """Return a + if we don't already have one, else return a .""" - if "+" in pieces.get("closest-tag", ""): - return "." - return "+" - - -def render_pep440(pieces): - """Build up version string, with post-release "local version identifier". - - Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you - get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty - - Exceptions: - 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += plus_or_dot(pieces) - rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_pre(pieces): - """TAG[.post.devDISTANCE] -- No -dirty. - - Exceptions: - 1: no tags. 0.post.devDISTANCE - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += ".post.dev%d" % pieces["distance"] - else: - # exception #1 - rendered = "0.post.dev%d" % pieces["distance"] - return rendered - - -def render_pep440_post(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX] . - - The ".dev0" means dirty. Note that .dev0 sorts backwards - (a dirty tree will appear "older" than the corresponding clean one), - but you shouldn't be releasing software with -dirty anyways. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%s" % pieces["short"] - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += "+g%s" % pieces["short"] - return rendered - - -def render_pep440_old(pieces): - """TAG[.postDISTANCE[.dev0]] . - - The ".dev0" means dirty. - - Eexceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - return rendered - - -def render_git_describe(pieces): - """TAG[-DISTANCE-gHEX][-dirty]. - - Like 'git describe --tags --dirty --always'. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render_git_describe_long(pieces): - """TAG-DISTANCE-gHEX[-dirty]. - - Like 'git describe --tags --dirty --always -long'. - The distance/hash is unconditional. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render(pieces, style): - """Render the given version pieces into the requested style.""" - if pieces["error"]: - return { - "version": "unknown", - "full-revisionid": pieces.get("long"), - "dirty": None, - "error": pieces["error"], - "date": None, - } - - if not style or style == "default": - style = "pep440" # the default - - if style == "pep440": - rendered = render_pep440(pieces) - elif style == "pep440-pre": - rendered = render_pep440_pre(pieces) - elif style == "pep440-post": - rendered = render_pep440_post(pieces) - elif style == "pep440-old": - rendered = render_pep440_old(pieces) - elif style == "git-describe": - rendered = render_git_describe(pieces) - elif style == "git-describe-long": - rendered = render_git_describe_long(pieces) - else: - raise ValueError("unknown style '%s'" % style) - - return { - "version": rendered, - "full-revisionid": pieces["long"], - "dirty": pieces["dirty"], - "error": None, - "date": pieces.get("date"), - } - - -def get_versions(): - """Get version information or return default if unable to do so.""" - # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have - # __file__, we can work backwards from there to the root. Some - # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which - # case we can only use expanded keywords. - - cfg = get_config() - verbose = cfg.verbose - - try: - return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, verbose) - except NotThisMethod: - pass - - try: - root = os.path.realpath(__file__) - # versionfile_source is the relative path from the top of the source - # tree (where the .git directory might live) to this file. Invert - # this to find the root from __file__. - for i in cfg.versionfile_source.split("/"): - root = os.path.dirname(root) - except NameError: - return { - "version": "0+unknown", - "full-revisionid": None, - "dirty": None, - "error": "unable to find root of source tree", - "date": None, - } - - try: - pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) - return render(pieces, cfg.style) - except NotThisMethod: - pass - - try: - if cfg.parentdir_prefix: - return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) - except NotThisMethod: - pass - - return { - "version": "0+unknown", - "full-revisionid": None, - "dirty": None, - "error": "unable to compute version", - "date": None, - } diff --git a/opencadd/compounds/standardization/convert_format.py b/opencadd/compounds/standardization/convert_format.py index dd5fa5e9..cc3d25c0 100644 --- a/opencadd/compounds/standardization/convert_format.py +++ b/opencadd/compounds/standardization/convert_format.py @@ -1,13 +1,11 @@ """ This function converts: --SMILES --InChI --SDF +- SMILES +- InChI +- SDF """ + from rdkit import Chem -from rdkit.Chem import inchi -from rdkit.Chem import SDMolSupplier -from opencadd.compounds.standardization.utils import data_path __all__ = [ "convert_smiles_to_mol", diff --git a/opencadd/compounds/standardization/disconnect_metals.py b/opencadd/compounds/standardization/disconnect_metals.py index 6e73cc68..5bcbdaee 100644 --- a/opencadd/compounds/standardization/disconnect_metals.py +++ b/opencadd/compounds/standardization/disconnect_metals.py @@ -1,7 +1,6 @@ """ This module disconnects metals from structures. """ -from rdkit import Chem from rdkit.Chem.MolStandardize import rdMolStandardize __all__ = ["disconnect_metals"] diff --git a/opencadd/compounds/standardization/handle_charges.py b/opencadd/compounds/standardization/handle_charges.py index 2d98144e..d4bf365a 100644 --- a/opencadd/compounds/standardization/handle_charges.py +++ b/opencadd/compounds/standardization/handle_charges.py @@ -1,7 +1,6 @@ """ This module performs changes on charges. """ -from rdkit import Chem from rdkit.Chem.MolStandardize import rdMolStandardize __all__ = ["uncharge", "reionize"] diff --git a/opencadd/compounds/standardization/handle_fragments.py b/opencadd/compounds/standardization/handle_fragments.py index 28525f38..0c158f29 100644 --- a/opencadd/compounds/standardization/handle_fragments.py +++ b/opencadd/compounds/standardization/handle_fragments.py @@ -1,7 +1,6 @@ """ This module handles different operations with fragments. """ -from rdkit import Chem from rdkit.Chem.MolStandardize import rdMolStandardize __all__ = ["remove_fragments", "choose_largest_fragment"] diff --git a/opencadd/compounds/standardization/handle_tautomers.py b/opencadd/compounds/standardization/handle_tautomers.py index e53398e8..1167fd3a 100644 --- a/opencadd/compounds/standardization/handle_tautomers.py +++ b/opencadd/compounds/standardization/handle_tautomers.py @@ -1,7 +1,6 @@ """ This module performs tautomer enumeration and canonicalization. """ -from rdkit import Chem from rdkit.Chem.MolStandardize.standardize import ( enumerate_tautomers_smiles, canonicalize_tautomer_smiles, diff --git a/opencadd/compounds/standardization/normalize_molecules.py b/opencadd/compounds/standardization/normalize_molecules.py index 0d752f86..10d325d7 100644 --- a/opencadd/compounds/standardization/normalize_molecules.py +++ b/opencadd/compounds/standardization/normalize_molecules.py @@ -2,7 +2,6 @@ This module performs Normalization transformations to correct functional groups and recombine charges. """ -from rdkit import Chem from rdkit.Chem.MolStandardize import rdMolStandardize __all__ = ["normalize"] diff --git a/opencadd/compounds/standardization/remove_salts.py b/opencadd/compounds/standardization/remove_salts.py index 4af07338..b10175f6 100644 --- a/opencadd/compounds/standardization/remove_salts.py +++ b/opencadd/compounds/standardization/remove_salts.py @@ -6,7 +6,7 @@ import csv import logging from rdkit import RDLogger -from opencadd.compounds.standardization.utils import data_path +from ...utils import data_path __all__ = ["remove_salts"] @@ -69,7 +69,7 @@ def remove_salts(mol, dictionary=True, *args, **kwargs): i += 1 remover = SaltRemover(defnData=salt) stripped_mol = remover.StripMol(mol) - if stripped_mol.GetNumAtoms()==0: + if stripped_mol.GetNumAtoms() == 0: print(test) break test_smiles = Chem.MolToSmiles(stripped_mol) diff --git a/opencadd/compounds/standardization/standardization.py b/opencadd/compounds/standardization/standardization.py deleted file mode 100644 index f5ae3e1f..00000000 --- a/opencadd/compounds/standardization/standardization.py +++ /dev/null @@ -1,34 +0,0 @@ -""" -standardization.py -A tool to standardize compounds. - -Handles the primary functions -""" - - -def canvas(with_attribution=True): - """ - Placeholder function to show example docstring (NumPy format) - - Replace this function and doc string for your own project - - Parameters - ---------- - with_attribution : bool, Optional, default: True - Set whether or not to display who the quote is from - - Returns - ------- - quote : str - Compiled string including quote and optional attribution - """ - - quote = "The code is but a canvas to our imagination." - if with_attribution: - quote += "\n\t- Adapted from Henry David Thoreau" - return quote - - -if __name__ == "__main__": - # Do something if this file is invoked on its own - print(canvas()) diff --git a/opencadd/compounds/standardization/utils.py b/opencadd/compounds/standardization/utils.py deleted file mode 100644 index bcc4579d..00000000 --- a/opencadd/compounds/standardization/utils.py +++ /dev/null @@ -1,21 +0,0 @@ -""" -This module contains helper and utility functions. -""" -from pathlib import Path - -__all__ = ["data_path"] - - -def data_path(fn): - """Leads to files saved in the data folder - - Parameters - ---------- - fn: str - The whole filename. - - Returns - ------- - The path of the file in the current working system. - """ - return Path(__file__).parent / "data" / fn diff --git a/opencadd/compounds/standardization/validate_molecules.py b/opencadd/compounds/standardization/validate_molecules.py index 57da49d4..de5bdb9e 100644 --- a/opencadd/compounds/standardization/validate_molecules.py +++ b/opencadd/compounds/standardization/validate_molecules.py @@ -1,7 +1,6 @@ """ This module provides all validation methods included in rdMolStandardize """ -from rdkit import Chem from rdkit.Chem.rdchem import Atom from rdkit.Chem.MolStandardize import rdMolStandardize diff --git a/opencadd/compounds/standardization/data/salts.tsv b/opencadd/data/salts.tsv similarity index 100% rename from opencadd/compounds/standardization/data/salts.tsv rename to opencadd/data/salts.tsv diff --git a/opencadd/interactions/perception.py b/opencadd/interactions/perception.py new file mode 100644 index 00000000..3c9a3f75 --- /dev/null +++ b/opencadd/interactions/perception.py @@ -0,0 +1,7 @@ +""" +Non-supervised perception of non-covalent interactions. + +Supersedes `plipify`, originally developed by Franziska Fritz +during her short-stay in 2020. +""" + diff --git a/opencadd/utils.py b/opencadd/utils.py index d9eae239..88637d6b 100644 --- a/opencadd/utils.py +++ b/opencadd/utils.py @@ -7,6 +7,8 @@ import shutil import tempfile import contextlib +from pathlib import Path + _logger = logging.getLogger(__name__) @@ -66,3 +68,18 @@ class EmojiPerLevelFormatter(PerLevelFormatter): 101: "%(message)s", 25: "☑️ %(message)s", } + + +def data_path(fn): + """Leads to files saved in the data folder + + Parameters + ---------- + fn: str + The whole filename. + + Returns + ------- + The path of the file in the current working system. + """ + return Path(__file__).parent / "data" / fn From cf131b47167d03b4822b669b21f1353a981682d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Rodr=C3=ADguez-Guerra?= Date: Tue, 13 Apr 2021 12:27:01 +0200 Subject: [PATCH 28/55] replace failTask helper with nicer lambda --- docs/tutorials/standardization.ipynb | 1787 +++++++++++++------------- 1 file changed, 887 insertions(+), 900 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 8bf2157f..e4b58949 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -71,19 +71,6 @@ ")" ] }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Helper function to mark at which step the entry failed the standardization pipeline\n", - "# JRG: ??? Is this function relying on global state at runtime?! This a bad idea... ;)\n", - "def failMarker(i):\n", - " i = taskNum\n", - " return i" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -93,12 +80,12 @@ "The first step before the standardization steps are started is a import of the dataset as an Pandas Dataframe, only including the columns necessary. In this case we use the IDs, Names and SMILEs column.
\n", "Then we search for all entries which actually don't have any strings saved under SMILEs and kick them from the dataset, since they are not holding any information.
\n", "After the import we add a Failed_at column to track in which standardization step the entry failed. \n", - "The intial `taskNum` will be 0, which leads to an default Failed_at-value of 0 for all entries, where null stands for not failed . " + "The intial `task_number` will be 0, which leads to an default Failed_at-value of 0 for all entries, where null stands for not failed . " ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -184,13 +171,13 @@ "203 0 " ] }, - "execution_count": 6, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "taskNum = 0\n", + "task_number = 0\n", "\n", "# Importing the test-dataset\n", "dataset = pd.read_csv(HERE / \"data\" / \"standardization_test_data.csv\")\n", @@ -204,7 +191,7 @@ "dataset = dataset[(dataset[\"SMILEs\"].notna())]\n", "\n", "# Setting a initial score of 0 for all entries in the 'Failed_at'-column\n", - "dataset[\"Failed_at\"] = dataset[\"SMILEs\"].apply(failMarker)\n", + "dataset[\"Failed_at\"] = dataset[\"SMILEs\"].apply(lambda x, task_number=task_number: task_number)\n", "\n", "# Show the current form of the main-dataframe\n", "dataset.tail()" @@ -244,33 +231,33 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:04:03] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n", - ":9: SettingWithCopyWarning: \n", + ":9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_1[\"Failed_at\"] = failed_step_1[\"Failed_at\"].apply(failMarker)\n" + " failed_step_1[\"Failed_at\"] = failed_step_1[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" ] }, { @@ -308,7 +295,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a27b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f3f0>\n", " \n", " \n", " 1\n", @@ -316,7 +303,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f440>\n", " \n", " \n", " 2\n", @@ -324,7 +311,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f490>\n", " \n", " \n", " 3\n", @@ -332,7 +319,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f4e0>\n", " \n", " \n", " 4\n", @@ -340,7 +327,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f530>\n", " \n", " \n", " 5\n", @@ -348,7 +335,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f580>\n", " \n", " \n", " 6\n", @@ -356,7 +343,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a29e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f5d0>\n", " \n", " \n", " 7\n", @@ -364,7 +351,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f620>\n", " \n", " \n", " 8\n", @@ -372,7 +359,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2a80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f670>\n", " \n", " \n", " 9\n", @@ -380,7 +367,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f6c0>\n", " \n", " \n", " 10\n", @@ -388,7 +375,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f710>\n", " \n", " \n", " 11\n", @@ -396,7 +383,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f760>\n", " \n", " \n", " 12\n", @@ -404,7 +391,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f7b0>\n", " \n", " \n", " 13\n", @@ -412,7 +399,7 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2c10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f800>\n", " \n", " \n", " 15\n", @@ -420,7 +407,7 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2c60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f850>\n", " \n", " \n", " 16\n", @@ -428,7 +415,7 @@ " Acarbose\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f8a0>\n", " \n", " \n", "\n", @@ -472,39 +459,39 @@ "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "15 \n", + "16 " ] }, - "execution_count": 7, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum\n", - "taskNum = 1\n", + "# Setting up the task_number\n", + "task_number = 1\n", "\n", "# A column called mol is beeing added to the dataframe to store the mol-files\n", "dataset[\"mol\"] = dataset[\"SMILEs\"].apply(convert_format.convert_smiles_to_mol)\n", "\n", "# All entries which couldn't generate a mol will get filtered another dataframe\n", "failed_step_1 = dataset[(dataset[\"mol\"].isnull())]\n", - "failed_step_1[\"Failed_at\"] = failed_step_1[\"Failed_at\"].apply(failMarker)\n", + "failed_step_1[\"Failed_at\"] = failed_step_1[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", "failed_step_1 = failed_step_1[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\"]]\n", "\n", "# Update the dataset by removing all entries without a mol\n", @@ -514,7 +501,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -618,7 +605,7 @@ "182 1 " ] }, - "execution_count": 8, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -656,19 +643,19 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":11: SettingWithCopyWarning: \n", + ":11: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_2[\"Failed_at\"] = failed_step_2[\"Failed_at\"].apply(failMarker)\n" + " failed_step_2[\"Failed_at\"] = failed_step_2[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" ] }, { @@ -707,7 +694,7 @@ " Chlorpromazine\n", " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750d00>\n", " False\n", " \n", " \n", @@ -716,7 +703,7 @@ " Chlorpropamide\n", " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a81c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750d50>\n", " False\n", " \n", " \n", @@ -725,7 +712,7 @@ " Chlortetracycline\n", " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750da0>\n", " False\n", " \n", " \n", @@ -734,7 +721,7 @@ " Chlorzoxazone\n", " Oc1nc2cc(Cl)ccc2o1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750df0>\n", " False\n", " \n", " \n", @@ -743,7 +730,7 @@ " Cholestyramine\n", " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a82b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750e40>\n", " False\n", " \n", " \n", @@ -752,7 +739,7 @@ " Chondroitin sulfate\n", " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750e90>\n", " False\n", " \n", " \n", @@ -761,7 +748,7 @@ " Cidofovir\n", " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750ee0>\n", " False\n", " \n", " \n", @@ -770,7 +757,7 @@ " Cimetidine\n", " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a83a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750f30>\n", " False\n", " \n", " \n", @@ -779,7 +766,7 @@ " Cinchophen\n", " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a83f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750f80>\n", " False\n", " \n", " \n", @@ -788,7 +775,7 @@ " Cinoxacin\n", " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d030>\n", " False\n", " \n", " \n", @@ -797,7 +784,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d080>\n", " False\n", " \n", " \n", @@ -806,7 +793,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a84e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d0d0>\n", " False\n", " \n", " \n", @@ -815,7 +802,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d120>\n", " False\n", " \n", " \n", @@ -824,7 +811,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d170>\n", " False\n", " \n", " \n", @@ -833,7 +820,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>\n", " False\n", " \n", " \n", @@ -876,31 +863,31 @@ "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", "\n", " mol Inorganics \n", - "185 False \n", - "186 False \n", - "187 False \n", - "188 False \n", - "189 False \n", - "190 False \n", - "191 False \n", - "192 False \n", - "193 False \n", - "194 False \n", - "195 False \n", - "196 False \n", - "197 False \n", - "198 False \n", - "199 False " + "185 False \n", + "186 False \n", + "187 False \n", + "188 False \n", + "189 False \n", + "190 False \n", + "191 False \n", + "192 False \n", + "193 False \n", + "194 False \n", + "195 False \n", + "196 False \n", + "197 False \n", + "198 False \n", + "199 False " ] }, - "execution_count": 9, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum\n", - "taskNum = 2\n", + "# Setting up the task_number\n", + "task_number = 2\n", "# getting the valid entries from the step before\n", "dataset = result1\n", "\n", @@ -909,7 +896,7 @@ "\n", "# Filter the failed entries\n", "failed_step_2 = dataset[dataset[\"Inorganics\"] == True]\n", - "failed_step_2[\"Failed_at\"] = failed_step_2[\"Failed_at\"].apply(failMarker)\n", + "failed_step_2[\"Failed_at\"] = failed_step_2[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", "\n", "\n", "# Safe entries that passed\n", @@ -919,7 +906,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -958,7 +945,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a27b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f3f0>\n", " True\n", " \n", " \n", @@ -967,7 +954,7 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8abb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963752670>\n", " True\n", " \n", " \n", @@ -976,7 +963,7 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d210>\n", " True\n", " \n", " \n", @@ -985,7 +972,7 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d260>\n", " True\n", " \n", " \n", @@ -994,7 +981,7 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a86c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d2b0>\n", " True\n", " \n", " \n", @@ -1003,7 +990,7 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d300>\n", " True\n", " \n", " \n", @@ -1020,15 +1007,15 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol Inorganics \n", - "0 2 True \n", - "114 2 True \n", - "200 2 True \n", - "201 2 True \n", - "202 2 True \n", - "203 2 True " + "0 2 True \n", + "114 2 True \n", + "200 2 True \n", + "201 2 True \n", + "202 2 True \n", + "203 2 True " ] }, - "execution_count": 10, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -1047,159 +1034,159 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Removed fragment: 1,4-dioxane\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - ":7: SettingWithCopyWarning: \n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Removed fragment: 1,4-dioxane\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + ":7: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset[\"mol_after\"] = dataset[\"mol\"].apply(handle_fragments.remove_fragments)\n", - ":10: SettingWithCopyWarning: \n", + ":10: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", - ":13: SettingWithCopyWarning: \n", + ":13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset[\"Smiles 3\"] = dataset[\"mol_after\"].apply(convert_format.convert_mol_to_smiles)\n", - ":14: SettingWithCopyWarning: \n", + ":14: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " dataset[\"noChanges\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 3\"]\n", - ":19: SettingWithCopyWarning: \n", + ":19: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_3[\"Failed_at\"] = failed_step_3[\"Failed_at\"].apply(failMarker)\n" + " failed_step_3[\"Failed_at\"] = failed_step_3[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" ] }, { @@ -1237,7 +1224,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d080>\n", " \n", " \n", " 196\n", @@ -1245,7 +1232,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a84e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d0d0>\n", " \n", " \n", " 197\n", @@ -1253,7 +1240,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d120>\n", " \n", " \n", " 198\n", @@ -1261,7 +1248,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d170>\n", " \n", " \n", " 199\n", @@ -1269,7 +1256,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>\n", " \n", " \n", "\n", @@ -1284,21 +1271,21 @@ "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", "\n", " Failed_at mol \n", - "195 0 \n", - "196 0 \n", - "197 0 \n", - "198 0 \n", - "199 0 " + "195 0 \n", + "196 0 \n", + "197 0 \n", + "198 0 \n", + "199 0 " ] }, - "execution_count": 11, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum\n", - "taskNum = 3\n", + "# Setting up the task_number\n", + "task_number = 3\n", "# getting the valid entries from the step before\n", "dataset = result2\n", "\n", @@ -1315,7 +1302,7 @@ "\n", "# Filter the failed entries\n", "failed_step_3 = dataset[dataset[\"noChanges\"] == False]\n", - "failed_step_3[\"Failed_at\"] = failed_step_3[\"Failed_at\"].apply(failMarker)\n", + "failed_step_3[\"Failed_at\"] = failed_step_3[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", "\n", "# Safe entries that passed\n", "result3 = dataset[dataset[\"noChanges\"] == True]\n", @@ -1325,7 +1312,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -1368,9 +1355,9 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f580>\n", " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8bf300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636fa260>\n", " C1COCCO1.OCC1OC(O)CC(O)C1O\n", " OCC1OC(O)CC(O)C1O\n", " False\n", @@ -1384,16 +1371,16 @@ "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 3 \n", "\n", " mol Inorganics \\\n", - "5 False \n", + "5 False \n", "\n", " mol_after \\\n", - "5 \n", + "5 \n", "\n", " smiles_before Smiles 3 noChanges \n", "5 C1COCCO1.OCC1OC(O)CC(O)C1O OCC1OC(O)CC(O)C1O False " ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -1412,437 +1399,437 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:29] Running FragmentRemover\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n", - "RDKit INFO: [12:04:50] Initializing MetalDisconnector\n", - "RDKit INFO: [12:04:50] Running MetalDisconnector\n" + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Running FragmentRemover\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:58] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n", + "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", + "RDKit INFO: [12:24:59] Running MetalDisconnector\n" ] }, { @@ -1881,7 +1868,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d080>\n", " True\n", " \n", " \n", @@ -1890,7 +1877,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a84e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d0d0>\n", " True\n", " \n", " \n", @@ -1899,7 +1886,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d120>\n", " True\n", " \n", " \n", @@ -1908,7 +1895,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d170>\n", " True\n", " \n", " \n", @@ -1917,7 +1904,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>\n", " True\n", " \n", " \n", @@ -1933,21 +1920,21 @@ "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", "\n", " Failed_at mol noChanges \n", - "195 0 True \n", - "196 0 True \n", - "197 0 True \n", - "198 0 True \n", - "199 0 True " + "195 0 True \n", + "196 0 True \n", + "197 0 True \n", + "198 0 True \n", + "199 0 True " ] }, - "execution_count": 13, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum\n", - "taskNum = 4\n", + "# Setting up the task_number\n", + "task_number = 4\n", "# getting the valid entries from the step before\n", "# Load result1 subset to actually see this step perform\n", "dataset = result3[\n", @@ -1966,7 +1953,7 @@ "\n", "# Filter the failed entries\n", "failed_step_4 = dataset[dataset[\"noChanges\"] == False]\n", - "failed_step_4[\"Failed_at\"] = failed_step_4[\"Failed_at\"].apply(failMarker)\n", + "failed_step_4[\"Failed_at\"] = failed_step_4[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", "failed_step_4 = failed_step_4[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", "failed_step_4.tail()\n", "\n", @@ -1978,7 +1965,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -2020,7 +2007,7 @@ "Index: []" ] }, - "execution_count": 14, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -2040,7 +2027,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -2078,7 +2065,7 @@ " Chlorpromazine\n", " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750d00>\n", " \n", " \n", " 186\n", @@ -2086,7 +2073,7 @@ " Chlorpropamide\n", " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a81c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750d50>\n", " \n", " \n", " 187\n", @@ -2094,7 +2081,7 @@ " Chlortetracycline\n", " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750da0>\n", " \n", " \n", " 188\n", @@ -2102,7 +2089,7 @@ " Chlorzoxazone\n", " Oc1nc2cc(Cl)ccc2o1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750df0>\n", " \n", " \n", " 189\n", @@ -2110,7 +2097,7 @@ " Cholestyramine\n", " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a82b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750e40>\n", " \n", " \n", " 190\n", @@ -2118,7 +2105,7 @@ " Chondroitin sulfate\n", " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750e90>\n", " \n", " \n", " 191\n", @@ -2126,7 +2113,7 @@ " Cidofovir\n", " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750ee0>\n", " \n", " \n", " 192\n", @@ -2134,7 +2121,7 @@ " Cimetidine\n", " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a83a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750f30>\n", " \n", " \n", " 193\n", @@ -2142,7 +2129,7 @@ " Cinchophen\n", " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a83f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750f80>\n", " \n", " \n", " 194\n", @@ -2150,7 +2137,7 @@ " Cinoxacin\n", " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d030>\n", " \n", " \n", " 195\n", @@ -2158,7 +2145,7 @@ " Ciprofibrate\n", " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d080>\n", " \n", " \n", " 196\n", @@ -2166,7 +2153,7 @@ " Ciprofloxacin\n", " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a84e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d0d0>\n", " \n", " \n", " 197\n", @@ -2174,7 +2161,7 @@ " Cisapride\n", " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d120>\n", " \n", " \n", " 198\n", @@ -2182,7 +2169,7 @@ " Citalopram\n", " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d170>\n", " \n", " \n", " 199\n", @@ -2190,7 +2177,7 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>\n", " \n", " \n", "\n", @@ -2232,31 +2219,31 @@ "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", "\n", " mol \n", - "185 \n", - "186 \n", - "187 \n", - "188 \n", - "189 \n", - "190 \n", - "191 \n", - "192 \n", - "193 \n", - "194 \n", - "195 \n", - "196 \n", - "197 \n", - "198 \n", - "199 " + "185 \n", + "186 \n", + "187 \n", + "188 \n", + "189 \n", + "190 \n", + "191 \n", + "192 \n", + "193 \n", + "194 \n", + "195 \n", + "196 \n", + "197 \n", + "198 \n", + "199 " ] }, - "execution_count": 15, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum\n", - "taskNum = 5\n", + "# Setting up the task_number\n", + "task_number = 5\n", "# getting the valid entries from the step before\n", "dataset = result4\n", "\n", @@ -2265,7 +2252,7 @@ "\n", "# Filter the failed entries\n", "failed_step_5 = dataset[dataset[\"Inorganics2\"] == True]\n", - "failed_step_5[\"Failed_at\"] = failed_step_5[\"Failed_at\"].apply(failMarker)\n", + "failed_step_5[\"Failed_at\"] = failed_step_5[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", "failed_step_5 = failed_step_5[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", "\n", "# Safe entries that passed\n", @@ -2276,7 +2263,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -2318,7 +2305,7 @@ "Index: []" ] }, - "execution_count": 16, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -2347,7 +2334,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -2368,7 +2355,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -2385,12 +2372,12 @@ "name": "stderr", "output_type": "stream", "text": [ - ":18: SettingWithCopyWarning: \n", + ":18: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(failMarker)\n" + " changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" ] }, { @@ -2433,7 +2420,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c884120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b7580>\n", " True\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", @@ -2446,7 +2433,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f440>\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", @@ -2459,7 +2446,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f490>\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", @@ -2472,7 +2459,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f4e0>\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", " O=C(O)C(S)C(S)C(=O)O\n", @@ -2485,7 +2472,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f530>\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", @@ -2498,7 +2485,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f580>\n", " False\n", " C1COCCO1.OCC1OC(O)CC(O)C1O\n", " C1COCCO1.OCC1OC(O)CC(O)C1O\n", @@ -2511,7 +2498,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a29e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f5d0>\n", " False\n", " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", @@ -2524,7 +2511,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f620>\n", " False\n", " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", @@ -2537,7 +2524,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2a80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f670>\n", " False\n", " Nc1ccc(C(=O)O)cc1\n", " Nc1ccc(C(=O)O)cc1\n", @@ -2550,7 +2537,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f6c0>\n", " False\n", " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", @@ -2563,7 +2550,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f710>\n", " False\n", " O=c1[nH]cc(F)c(=O)[nH]1\n", " O=c1[nH]cc(F)c(=O)[nH]1\n", @@ -2576,7 +2563,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2b70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f760>\n", " False\n", " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", @@ -2589,7 +2576,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f7b0>\n", " False\n", " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", @@ -2602,7 +2589,7 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2c10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f800>\n", " False\n", " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", @@ -2615,7 +2602,7 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2c60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f850>\n", " False\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", @@ -2628,7 +2615,7 @@ " Acarbose\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2cb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f8a0>\n", " False\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", @@ -2641,7 +2628,7 @@ " Acebutolol\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2d00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f8f0>\n", " False\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1\n", " CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1\n", @@ -2654,7 +2641,7 @@ " Acenocoumarol\n", " CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f940>\n", " False\n", " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", @@ -2667,7 +2654,7 @@ " Acetamide\n", " CC(N)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f990>\n", " False\n", " CC(N)=O\n", " CC(N)=O\n", @@ -2680,7 +2667,7 @@ " Acetaminophen\n", " CC(=O)Nc1ccc(O)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2df0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f9e0>\n", " False\n", " CC(=O)Nc1ccc(O)cc1\n", " CC(=O)Nc1ccc(O)cc1\n", @@ -2737,26 +2724,26 @@ "20 CC(=O)Nc1ccc(O)cc1 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "5 False \n", - "6 False \n", - "7 False \n", - "8 False \n", - "9 False \n", - "10 False \n", - "11 False \n", - "12 False \n", - "13 False \n", - "15 False \n", - "16 False \n", - "17 False \n", - "18 False \n", - "19 False \n", - "20 False \n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "5 False \n", + "6 False \n", + "7 False \n", + "8 False \n", + "9 False \n", + "10 False \n", + "11 False \n", + "12 False \n", + "13 False \n", + "15 False \n", + "16 False \n", + "17 False \n", + "18 False \n", + "19 False \n", + "20 False \n", "\n", " smiles_before \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", @@ -2825,14 +2812,14 @@ "20 NaN " ] }, - "execution_count": 18, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Setting up the taskNum\n", - "taskNum = 6\n", + "# Setting up the task_number\n", + "task_number = 6\n", "# getting the valid entries from the step before\n", "dataset = result1 # Load results 1 here, to see the functionality, 'cause all entries containing salts, have already been filtered by prior steps.\n", "\n", @@ -2848,10 +2835,10 @@ "\n", "# Filter the changed entries\n", "changed_at_step_6 = dataset[dataset[\"no_removed_salt\"] == False]\n", - "changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(failMarker)\n", + "changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", "changed_at_step_6 = changed_at_step_6[[\"IDs\", \"Names\", \"SMILEs\", \"Changed_at\", \"mol\"]]\n", "\n", - "dataset[\"Changed_at\"] = dataset[dataset[\"no_removed_salt\"] == False][\"Failed_at\"].apply(failMarker)\n", + "dataset[\"Changed_at\"] = dataset[dataset[\"no_removed_salt\"] == False][\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", "dataset.head(20)\n", "\n", "# dataset['removed_salts'] = RemoveSaltsFromFrame(dataset,molCol='mol')\n", @@ -2860,7 +2847,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -2898,7 +2885,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c884120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b7580>\n", " \n", " \n", " 202\n", @@ -2906,7 +2893,7 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c87dad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b7170>\n", " \n", " \n", " 203\n", @@ -2914,7 +2901,7 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c83a580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b94e0>\n", " \n", " \n", "\n", @@ -2927,12 +2914,12 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Changed_at mol \n", - "0 6 \n", - "202 6 \n", - "203 6 " + "0 6 \n", + "202 6 \n", + "203 6 " ] }, - "execution_count": 19, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -2951,7 +2938,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -2995,13 +2982,13 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c884120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b7580>\n", " True\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963706490>\n", " \n", " \n", " 1\n", @@ -3009,13 +2996,13 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f440>\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9637063f0>\n", " \n", " \n", " 2\n", @@ -3023,13 +3010,13 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f490>\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86bbc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963714030>\n", " \n", " \n", " 3\n", @@ -3037,13 +3024,13 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f4e0>\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", " O=C(O)C(S)C(S)C(=O)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86bc60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963714530>\n", " \n", " \n", " 4\n", @@ -3051,13 +3038,13 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f530>\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963714580>\n", " \n", " \n", "\n", @@ -3079,11 +3066,11 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", "\n", " smiles_before \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", @@ -3100,14 +3087,14 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", "\n", " Changed_at normalized \n", - "0 6.0 \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN " + "0 6.0 \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN " ] }, - "execution_count": 20, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -3115,8 +3102,8 @@ "source": [ "# TODO: Finish all steps here\n", "\n", - "# Setting up the taskNum\n", - "taskNum = 7\n", + "# Setting up the task_number\n", + "task_number = 7\n", "# getting the valid entries from the step before\n", "dataset = result1\n", "# dataset.head(100)\n", @@ -3134,7 +3121,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -3152,7 +3139,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -3164,7 +3151,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -3183,7 +3170,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -3236,13 +3223,13 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c884120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b7580>\n", " True\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963706490>\n", " CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...\n", " \n", " \n", @@ -3251,13 +3238,13 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f440>\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9637063f0>\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " \n", " \n", @@ -3266,13 +3253,13 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f490>\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86bbc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963714030>\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " \n", " \n", @@ -3281,13 +3268,13 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a28f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f4e0>\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", " O=C(O)C(S)C(S)C(=O)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86bc60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963714530>\n", " O=C(O)C(S)C(S)C(=O)O\n", " \n", " \n", @@ -3296,13 +3283,13 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a2940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f530>\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c86b080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963714580>\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " \n", " \n", @@ -3325,11 +3312,11 @@ "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", "\n", " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", + "0 True \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", "\n", " smiles_before \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", @@ -3346,11 +3333,11 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", "\n", " Changed_at normalized \\\n", - "0 6.0 \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", + "0 6.0 \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", "\n", " canonicalized tautomer \n", "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... \n", @@ -3360,7 +3347,7 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] " ] }, - "execution_count": 24, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -3368,8 +3355,8 @@ "source": [ "# TODO: Finish all steps here\n", "\n", - "# Setting up the taskNum\n", - "taskNum = 9\n", + "# Setting up the task_number\n", + "task_number = 9\n", "\n", "dataset = result7\n", "\n", @@ -3380,7 +3367,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -3425,13 +3412,13 @@ " Citric acid\n", " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a85d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>\n", " False\n", " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c87b2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636e7990>\n", " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " \n", " \n", @@ -3440,13 +3427,13 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d210>\n", " True\n", " CCO[Zr](OCC)(OCC)OCC\n", " CCO[Zr](OCC)(OCC)OCC\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c87bcb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636e79e0>\n", " CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]\n", " \n", " \n", @@ -3455,13 +3442,13 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d260>\n", " True\n", " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c87bb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636e7a30>\n", " C=CC1=C(C)c2cc3[n-]c(cc4[nH]c(cc5nc(cc1n2)C(C)...\n", " \n", " \n", @@ -3470,13 +3457,13 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c87dad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b7170>\n", " True\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " [Zn]\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c87b760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636e7a80>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " \n", " \n", @@ -3485,13 +3472,13 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c83a580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b94e0>\n", " True\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " [Zn]\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c87ba30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636e7ad0>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " \n", " \n", @@ -3507,11 +3494,11 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol Inorganics \\\n", - "199 0 False \n", - "200 0 True \n", - "201 0 True \n", - "202 0 True \n", - "203 0 True \n", + "199 0 False \n", + "200 0 True \n", + "201 0 True \n", + "202 0 True \n", + "203 0 True \n", "\n", " smiles_before \\\n", "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", @@ -3528,11 +3515,11 @@ "203 [Zn] False \n", "\n", " Changed_at normalized \\\n", - "199 NaN \n", - "200 NaN \n", - "201 NaN \n", - "202 6.0 \n", - "203 6.0 \n", + "199 NaN \n", + "200 NaN \n", + "201 NaN \n", + "202 6.0 \n", + "203 6.0 \n", "\n", " canonicalized tautomer \n", "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", @@ -3542,7 +3529,7 @@ "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... " ] }, - "execution_count": 25, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -3560,19 +3547,19 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - ":15: SettingWithCopyWarning: \n", + ":15: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(failMarker)\n" + " failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" ] }, { @@ -3618,13 +3605,13 @@ " Cerivastatin sodium\n", " COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc...\n", " 10\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8aac10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963750800>\n", " False\n", " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", " True\n", " NaN\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c81d260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636e7080>\n", " COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...\n", " True\n", " \n", @@ -3634,13 +3621,13 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 10\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c83a580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636b94e0>\n", " True\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " [Zn]\n", " False\n", " 6.0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c87ba30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe9636e7ad0>\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...\n", " True\n", " \n", @@ -3658,8 +3645,8 @@ "203 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 10 \n", "\n", " mol Inorganics \\\n", - "168 False \n", - "203 True \n", + "168 False \n", + "203 True \n", "\n", " smiles_before \\\n", "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... \n", @@ -3670,15 +3657,15 @@ "203 [Zn] False \n", "\n", " Changed_at normalized \\\n", - "168 NaN \n", - "203 6.0 \n", + "168 NaN \n", + "203 6.0 \n", "\n", " canonicalized tautomer duplicate? \n", "168 COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(... True \n", "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... True " ] }, - "execution_count": 26, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -3688,8 +3675,8 @@ "\n", "# Analysis/removal of duplicates\n", "\n", - "# Setting up the taskNum\n", - "taskNum = 10\n", + "# Setting up the task_number\n", + "task_number = 10\n", "\n", "dataset = result7\n", "\n", @@ -3698,7 +3685,7 @@ "\n", "# Filter the duplicates out\n", "failed_step_10 = dataset[dataset[\"duplicate?\"] == True]\n", - "failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(failMarker)\n", + "failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", "\n", "dataset = dataset[dataset[\"duplicate?\"] == False]\n", "failed_step_10.tail()" @@ -3706,7 +3693,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -3717,7 +3704,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -3728,7 +3715,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -3767,7 +3754,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a27b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f3f0>\n", " True\n", " \n", " \n", @@ -3821,7 +3808,7 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8abb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe963752670>\n", " True\n", " \n", " \n", @@ -3848,7 +3835,7 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d210>\n", " True\n", " \n", " \n", @@ -3857,7 +3844,7 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d260>\n", " True\n", " \n", " \n", @@ -3866,7 +3853,7 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a86c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d2b0>\n", " True\n", " \n", " \n", @@ -3875,7 +3862,7 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f797c8a8710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d300>\n", " True\n", " \n", " \n", @@ -3899,22 +3886,22 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol Inorganics \n", - "0 2 True \n", + "0 2 True \n", "14 1 NaN NaN \n", "41 1 NaN NaN \n", "57 1 NaN NaN \n", "85 1 NaN NaN \n", "90 1 NaN NaN \n", - "114 2 True \n", + "114 2 True \n", "133 1 NaN NaN \n", "182 1 NaN NaN \n", - "200 2 True \n", - "201 2 True \n", - "202 2 True \n", - "203 2 True " + "200 2 True \n", + "201 2 True \n", + "202 2 True \n", + "203 2 True " ] }, - "execution_count": 29, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } From a4e31d6429a2be280aeef5dd5117195205e1e9d1 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 12:19:07 +0200 Subject: [PATCH 29/55] added a new function detect_carbon --- .../compounds/standardization/__init__.py | 2 +- .../standardization/detect_inorganic.py | 43 ------------ .../standardization/detect_inorganics.py | 67 +++++++++++++++++++ .../standardization/test_detect_inorganic.py | 4 +- 4 files changed, 70 insertions(+), 46 deletions(-) delete mode 100644 opencadd/compounds/standardization/detect_inorganic.py create mode 100644 opencadd/compounds/standardization/detect_inorganics.py diff --git a/opencadd/compounds/standardization/__init__.py b/opencadd/compounds/standardization/__init__.py index 292fd259..234c1d0b 100644 --- a/opencadd/compounds/standardization/__init__.py +++ b/opencadd/compounds/standardization/__init__.py @@ -6,7 +6,7 @@ # Add imports here from .assign_stereochemistry import * from .convert_format import * -from .detect_inorganic import * +from .detect_inorganics import * from .disconnect_metals import * from .handle_charges import * from .handle_fragments import * diff --git a/opencadd/compounds/standardization/detect_inorganic.py b/opencadd/compounds/standardization/detect_inorganic.py deleted file mode 100644 index 997a2e55..00000000 --- a/opencadd/compounds/standardization/detect_inorganic.py +++ /dev/null @@ -1,43 +0,0 @@ -""" -This module detects all inorganic substructures. -""" -import logging -from rdkit import Chem - -__all__ = ["detect_inorganic"] - -inorganic_elements = Chem.MolFromSmarts( - "[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#35&!#53]" -) - - -def detect_inorganic(mol, *args, **kwargs): - """Detects all inorganic substructures. - - Has a list of SMARTS which explicitly exludes all organic elemtents - and searches if there is a substructure match with an non-organic - element. - - Parameters - ---------- - mol: rdkit.Chem.Mol - The molecule which has to be searched for non-organic - substructures. - - Returns - ------- - boolean: bool - Returns if the stucture contains a non-organic element (True), - or not (False). - - Notes - ----- - To organic structures we count the following:Hydrogen, Carbon, - Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Bromine, - Iodine. - - """ - if mol.GetSubstructMatch(inorganic_elements, *args, **kwargs): - logging.debug("Structure contains a inorganic element") - return True - return False diff --git a/opencadd/compounds/standardization/detect_inorganics.py b/opencadd/compounds/standardization/detect_inorganics.py new file mode 100644 index 00000000..27937f0c --- /dev/null +++ b/opencadd/compounds/standardization/detect_inorganics.py @@ -0,0 +1,67 @@ +""" +This module detects all inorganic substructures. +""" +import logging +from rdkit import Chem + +__all__ = ["detect_inorganic", "detect_carbon"] + +inorganic_elements = Chem.MolFromSmarts( + "[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#35&!#53]" +) +carbon_smarts = Chem.MolFromSmarts("[C]") + + +def detect_inorganic(mol, *args, **kwargs): + """Detects all inorganic substructures. + + Has a list of SMARTS which explicitly exludes all elemtents that can occur + in an organic molecule and searches if there is a substructure match with + element not occuring in organic compounds. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule which has to be searched for non-organic + substructures. + + Returns + ------- + boolean: bool + Returns if the stucture contains a non-organic element (True), + or not (False). + + Notes + ----- + To organic structures we count the following: Hydrogen, Carbon, + Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Bromine, + Iodine. + + """ + if mol.GetSubstructMatch(inorganic_elements, *args, **kwargs): + logging.debug("Structure contains a inorganic element") + return True + return False + + +def detect_carbon(mol, *args, **kwargs): + """Detects all occurences of Carbon to determine if a compound is organic. + + Checks for the presence of Carbon in the molecule provided. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule which has to be searched for Carbon. + + Returns + ------- + boolean: bool + Returns if the stucture contains Carbon (True), + or not (False). + """ + if mol.GetSubstructMatch(carbon_smarts, *args, **kwargs): + logging.debug("Structure contain Carbon") + return True + logging.debug("Structure does not contain Carbon") + return False diff --git a/opencadd/tests/compounds/standardization/test_detect_inorganic.py b/opencadd/tests/compounds/standardization/test_detect_inorganic.py index 9abd25ab..8bbea11b 100644 --- a/opencadd/tests/compounds/standardization/test_detect_inorganic.py +++ b/opencadd/tests/compounds/standardization/test_detect_inorganic.py @@ -1,5 +1,5 @@ """ -test for the module `detect_inorganic` +test for the module `detect_inorganics` """ import pytest import sys @@ -7,7 +7,7 @@ from rdkit import Chem -from opencadd.compounds.standardization import detect_inorganic +from opencadd.compounds.standardization import detect_inorganics def _evaluation_mol_generator(test_smiles=None, test_inchi=None): From 8afe84cac4cc50da84b8e6d96ce620142f441c2d Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 12:39:19 +0200 Subject: [PATCH 30/55] search single Carbon atom, instead of substruct --- .../compounds/standardization/detect_inorganics.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/opencadd/compounds/standardization/detect_inorganics.py b/opencadd/compounds/standardization/detect_inorganics.py index 27937f0c..de9908d8 100644 --- a/opencadd/compounds/standardization/detect_inorganics.py +++ b/opencadd/compounds/standardization/detect_inorganics.py @@ -60,8 +60,12 @@ def detect_carbon(mol, *args, **kwargs): Returns if the stucture contains Carbon (True), or not (False). """ - if mol.GetSubstructMatch(carbon_smarts, *args, **kwargs): - logging.debug("Structure contain Carbon") - return True - logging.debug("Structure does not contain Carbon") + # if mol.GetSubstructMatch(carbon_smarts, *args, **kwargs): + # logging.debug("Structure contain Carbon") + # return True + # logging.debug("Structure does not contain Carbon") + # return False + for a in mol.GetAtoms(): + if a.GetAtomicNum() == 6: + return True return False From b9a81a55e9778ce976af9c7e1caa549527632dd4 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 16:52:19 +0200 Subject: [PATCH 31/55] modified the test datat for empty smiles cases --- docs/tutorials/data/standardization_test_data.csv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/tutorials/data/standardization_test_data.csv b/docs/tutorials/data/standardization_test_data.csv index 24065072..6d76d195 100644 --- a/docs/tutorials/data/standardization_test_data.csv +++ b/docs/tutorials/data/standardization_test_data.csv @@ -202,4 +202,5 @@ IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS 201,zirconium,CCO[Zr](OCC)(OCC)OCC,0,0,0 202,hemoglobin,CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=N5)C=C1N2)C=C)C)C)CCC(=O)[O-])C(=C3C)CCC(=O)O)C=C.[Fe+2],0,0,0 203,test_salt,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 -204,test_duplicate,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 \ No newline at end of file +204,test_duplicate,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 +205,no_smiles_test,,0,0,0 \ No newline at end of file From 5d98ec0da6442e15c6eefb1f5177d4da283f7e5b Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 19:46:14 +0200 Subject: [PATCH 32/55] added selenium --- opencadd/compounds/standardization/detect_inorganics.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opencadd/compounds/standardization/detect_inorganics.py b/opencadd/compounds/standardization/detect_inorganics.py index de9908d8..13a71e76 100644 --- a/opencadd/compounds/standardization/detect_inorganics.py +++ b/opencadd/compounds/standardization/detect_inorganics.py @@ -7,7 +7,7 @@ __all__ = ["detect_inorganic", "detect_carbon"] inorganic_elements = Chem.MolFromSmarts( - "[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#35&!#53]" + "[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#34&!#35&!#53]" ) carbon_smarts = Chem.MolFromSmarts("[C]") @@ -34,7 +34,7 @@ def detect_inorganic(mol, *args, **kwargs): Notes ----- To organic structures we count the following: Hydrogen, Carbon, - Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Bromine, + Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Selenium, Bromine, Iodine. """ From a26ec10f4b06b5c8a2183f877bca914ab8400e36 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 20:24:32 +0200 Subject: [PATCH 33/55] inorganic_elements array now can be customized --- opencadd/compounds/standardization/detect_inorganics.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/opencadd/compounds/standardization/detect_inorganics.py b/opencadd/compounds/standardization/detect_inorganics.py index 13a71e76..9cc8c5f9 100644 --- a/opencadd/compounds/standardization/detect_inorganics.py +++ b/opencadd/compounds/standardization/detect_inorganics.py @@ -9,10 +9,9 @@ inorganic_elements = Chem.MolFromSmarts( "[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#34&!#35&!#53]" ) -carbon_smarts = Chem.MolFromSmarts("[C]") -def detect_inorganic(mol, *args, **kwargs): +def detect_inorganic(mol, inorganic_elements=inorganic_elements, *args, **kwargs): """Detects all inorganic substructures. Has a list of SMARTS which explicitly exludes all elemtents that can occur From 23a6e9b147be851c20e6bbffd96d6fa00908b71d Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 22:13:31 +0200 Subject: [PATCH 34/55] deleted comment --- opencadd/compounds/standardization/detect_inorganics.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/opencadd/compounds/standardization/detect_inorganics.py b/opencadd/compounds/standardization/detect_inorganics.py index 9cc8c5f9..310b2a5b 100644 --- a/opencadd/compounds/standardization/detect_inorganics.py +++ b/opencadd/compounds/standardization/detect_inorganics.py @@ -59,11 +59,6 @@ def detect_carbon(mol, *args, **kwargs): Returns if the stucture contains Carbon (True), or not (False). """ - # if mol.GetSubstructMatch(carbon_smarts, *args, **kwargs): - # logging.debug("Structure contain Carbon") - # return True - # logging.debug("Structure does not contain Carbon") - # return False for a in mol.GetAtoms(): if a.GetAtomicNum() == 6: return True From a6addc1f3948190036c7e7efe45a7b09eabbcecd Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 22:13:52 +0200 Subject: [PATCH 35/55] new function created --- .../compounds/standardization/__init__.py | 1 + .../standardization/detect_mixtures.py | 47 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 opencadd/compounds/standardization/detect_mixtures.py diff --git a/opencadd/compounds/standardization/__init__.py b/opencadd/compounds/standardization/__init__.py index 234c1d0b..6c68a95d 100644 --- a/opencadd/compounds/standardization/__init__.py +++ b/opencadd/compounds/standardization/__init__.py @@ -15,3 +15,4 @@ from .remove_salts import * from .sanitize_molecules import * from .validate_molecules import * +from .detect_mixtures import * diff --git a/opencadd/compounds/standardization/detect_mixtures.py b/opencadd/compounds/standardization/detect_mixtures.py new file mode 100644 index 00000000..cf21a694 --- /dev/null +++ b/opencadd/compounds/standardization/detect_mixtures.py @@ -0,0 +1,47 @@ +""" +This module detects all mixtures. +""" +import logging +from rdkit import Chem +from rdkit.Chem.MolStandardize import rdMolStandardize +from rdkit import RDLogger + +RDLogger.DisableLog('rdApp.info') + +__all__ = ["detect_mixtures"] + + +def _validation_smiles(mol): + """Utility function that converts a mol to SMILES for later validation. + """ + validation_smiles = Chem.MolToSmiles(mol) + return validation_smiles + + +def detect_mixtures(mol, *args, **kwargs): + """Detects mixtures. + + Generates a SMILES out of the entered mol for validation, performs fragment + removal, turns the changed mol into another SMILES and validates it with the + first SMILES created. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule which has to be searched for non-organic + substructures. + + Returns + ------- + boolean: bool + Returns if the stucture contains a mixture (True), + or not (False). + """ + + smiles_before = _validation_smiles(mol) + mol_without_fragment = rdMolStandardize.FragmentRemover().remove(mol) + smiles_after = _validation_smiles(mol_without_fragment) + if smiles_before == smiles_after: + return False + else: + return True From 7711e0979e91ac3c218e6dd4b24d8720b3e53bec Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 22:14:36 +0200 Subject: [PATCH 36/55] Updated the notebook to Step 2 Task 4 --- docs/tutorials/standardization.ipynb | 3371 +++----------------------- 1 file changed, 389 insertions(+), 2982 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index e4b58949..e3f196e4 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -31,8 +31,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Tutorial location: /home/jaime/devel/py/volkamerlab/opencadd/docs/tutorials\n", - "Repo location: /home/jaime/devel/py/volkamerlab/opencadd\n" + "Tutorial location: /home/allen/dev/opencadd/docs/tutorials\n", + "Repo location: /home/allen/dev/opencadd\n" ] } ], @@ -64,10 +64,12 @@ " convert_format,\n", " handle_fragments,\n", " disconnect_metals,\n", - " detect_inorganic,\n", + " detect_inorganics,\n", " remove_salts,\n", " normalize,\n", " handle_tautomers,\n", + " validate_molecules,\n", + " detect_mixtures\n", ")" ] }, @@ -117,6 +119,41 @@ " \n", " \n", " \n", + " 194\n", + " 195\n", + " Cinoxacin\n", + " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", + " 0\n", + " \n", + " \n", + " 195\n", + " 196\n", + " Ciprofibrate\n", + " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", + " 0\n", + " \n", + " \n", + " 196\n", + " 197\n", + " Ciprofloxacin\n", + " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", + " 0\n", + " \n", + " \n", + " 197\n", + " 198\n", + " Cisapride\n", + " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", + " 0\n", + " \n", + " \n", + " 198\n", + " 199\n", + " Citalopram\n", + " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", + " 0\n", + " \n", + " \n", " 199\n", " 200\n", " Citric acid\n", @@ -157,6 +194,11 @@ ], "text/plain": [ " IDs Names SMILEs \\\n", + "194 195 Cinoxacin CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 \n", + "195 196 Ciprofibrate CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O \n", + "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", + "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", + "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", @@ -164,6 +206,11 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at \n", + "194 0 \n", + "195 0 \n", + "196 0 \n", + "197 0 \n", + "198 0 \n", "199 0 \n", "200 0 \n", "201 0 \n", @@ -187,14 +234,18 @@ "\n", "# Kick all empty entries\n", "empty_smiles = dataset[(dataset[\"SMILEs\"].isnull())]\n", + "\n", "# The empty_smiles dataframe could be used to check which entires are affected and review the dataset again.\n", "dataset = dataset[(dataset[\"SMILEs\"].notna())]\n", "\n", "# Setting a initial score of 0 for all entries in the 'Failed_at'-column\n", - "dataset[\"Failed_at\"] = dataset[\"SMILEs\"].apply(lambda x, task_number=task_number: task_number)\n", + "dataset[\"Failed_at\"] = dataset[\"SMILEs\"].apply(\n", + " lambda x, task_number=task_number: task_number\n", + ")\n", "\n", + "dataset = dataset.reset_index(drop=True)\n", "# Show the current form of the main-dataframe\n", - "dataset.tail()" + "dataset.tail(10)" ] }, { @@ -238,26 +289,20 @@ "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", - "RDKit ERROR: \n", - "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [12:24:58] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - ":9: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_1[\"Failed_at\"] = failed_step_1[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" + "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: \n" ] }, { @@ -295,7 +340,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f3f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060bfb760>\n", " \n", " \n", " 1\n", @@ -303,7 +348,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e120>\n", " \n", " \n", " 2\n", @@ -311,7 +356,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e080>\n", " \n", " \n", " 3\n", @@ -319,7 +364,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e440>\n", " \n", " \n", " 4\n", @@ -327,7 +372,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e530>\n", " \n", " \n", " 5\n", @@ -335,7 +380,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e580>\n", " \n", " \n", " 6\n", @@ -343,7 +388,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f5d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e4e0>\n", " \n", " \n", " 7\n", @@ -351,7 +396,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e490>\n", " \n", " \n", " 8\n", @@ -359,7 +404,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e3f0>\n", " \n", " \n", " 9\n", @@ -367,7 +412,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f6c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e670>\n", " \n", " \n", " 10\n", @@ -375,7 +420,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e6c0>\n", " \n", " \n", " 11\n", @@ -383,7 +428,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e620>\n", " \n", " \n", " 12\n", @@ -391,7 +436,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f7b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e5d0>\n", " \n", " \n", " 13\n", @@ -399,7 +444,15 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f800>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e7b0>\n", + " \n", + " \n", + " 14\n", + " 15\n", + " 6-Mercaptopurine\n", + " Sc1ncnc2[nH]c[nH]c12\n", + " 1\n", + " None\n", " \n", " \n", " 15\n", @@ -407,15 +460,7 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f850>\n", - " \n", - " \n", - " 16\n", - " 17\n", - " Acarbose\n", - " CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f8a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060b6f300>\n", " \n", " \n", "\n", @@ -437,44 +482,44 @@ "11 12 5-Azacitidine \n", "12 13 5-Bromouracil \n", "13 14 5-fluoro-2'-deoxyuridine \n", + "14 15 6-Mercaptopurine \n", "15 16 Acadesine \n", - "16 17 Acarbose \n", "\n", - " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", - "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", - "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", - "8 Nc1ccc(cc1)C(O)=O 0 \n", - "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", - "10 FC1=CNC(=O)NC1=O 0 \n", - "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", - "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", - "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", - "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", + " SMILEs Failed_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", + "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", + "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", + "8 Nc1ccc(cc1)C(O)=O 0 \n", + "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", + "10 FC1=CNC(=O)NC1=O 0 \n", + "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", + "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", + "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", + "14 Sc1ncnc2[nH]c[nH]c12 1 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "15 \n", - "16 " + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 None \n", + "15 " ] }, "execution_count": 4, @@ -487,22 +532,80 @@ "task_number = 1\n", "\n", "# A column called mol is beeing added to the dataframe to store the mol-files\n", - "dataset[\"mol\"] = dataset[\"SMILEs\"].apply(convert_format.convert_smiles_to_mol)\n", + "dataset[\"mol\"] = dataset.loc[:, (\"SMILEs\")].apply(convert_format.convert_smiles_to_mol)\n", + "\n", + "# Add task_number to failed entries\n", + "dataset.loc[dataset[\"mol\"].isnull(), [\"Failed_at\"]] = task_number\n", + "\n", + "dataset.head(16)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Removal of Inorganics and Mixtures\n", + "--------------------------------------------------\n", + "\n", + "Since most cheminformatical applications are not capable of processing inorganicstructures, there is the need for a removal of those entries, prior to any processing.\n", + "\n", + "\n", + "\n", + "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of **True** when it finds a element that can not be found in a organic molecule. The set of elements that are passing the check are: Hydrogen, Carbon, Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Bromine, Iodine. All molecules containing other elements will not pass this filtering step. \n", + "\n", + "\n", + "We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", + "\"Inorganic compounds are known to have biological effects, like for example toxic effects.\"(Chapter 2.1. Fourches 2010)(fix citation)\n", + " Due to their potential bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", + "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", + "\n", + "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself.\n", "\n", - "# All entries which couldn't generate a mol will get filtered another dataframe\n", - "failed_step_1 = dataset[(dataset[\"mol\"].isnull())]\n", - "failed_step_1[\"Failed_at\"] = failed_step_1[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", - "failed_step_1 = failed_step_1[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\"]]\n", + "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 2: Filter entries without Carbon\n", "\n", - "# Update the dataset by removing all entries without a mol\n", - "result1 = dataset[dataset[\"mol\"].notna()]\n", - "result1.head(16)" + "To determine if a entry is a organic molecule, it obivious first task is to check for the presence of carbon. Therefore the `detect_carbon` function can be used. It checks for the presence of carbon atoms. If the functions finds at least one Carbon atom, it returns a boolean value of **True**, if not a value of **False**. All entries that return **False** will get a the number of the current task (2) written into the *Failed_at* column.\n", + "All entries that already have failed in another step won't the considered in this step, since they are already disqualified for further analysis." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, + "outputs": [], + "source": [ + "# Setting up the task_number\n", + "task_number = 2\n", + "\n", + "# Check for Carbon\n", + "dataset[\"Carbon_present\"] = dataset.apply(\n", + " lambda row: detect_inorganics.detect_carbon(row.mol)\n", + " if row.Failed_at == 0\n", + " else None,\n", + " axis=1,\n", + ")\n", + "\n", + "# Add task_number to failed entries\n", + "dataset.loc[dataset[\"Carbon_present\"] == False, [\"Failed_at\"]] = task_number" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below you can see all entries, that don't contain any Carbon and thereby it can be assumed that they are inorganic molecules." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -529,135 +632,112 @@ " Names\n", " SMILEs\n", " Failed_at\n", + " mol\n", + " Carbon_present\n", " \n", " \n", " \n", " \n", - " 14\n", - " 15\n", - " 6-Mercaptopurine\n", - " Sc1ncnc2[nH]c[nH]c12\n", - " 1\n", - " \n", - " \n", - " 41\n", - " 42\n", - " Alfuzosin\n", - " COc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO1\n", - " 1\n", - " \n", - " \n", - " 57\n", - " 58\n", - " Aminophylline\n", - " CN1C(=O)N(C)c2[nH]c[nH]c2C1=O\n", - " 1\n", - " \n", - " \n", - " 85\n", - " 86\n", - " Azathioprine\n", - " Cn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O\n", - " 1\n", - " \n", - " \n", - " 90\n", - " 91\n", - " Bacitracin\n", - " CCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC...\n", - " 1\n", - " \n", - " \n", - " 133\n", - " 134\n", - " Camptothecin\n", - " CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O\n", - " 1\n", + " 202\n", + " 203\n", + " test_salt\n", + " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " 2\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7ad00>\n", + " False\n", " \n", " \n", - " 182\n", - " 183\n", - " Chloroquine\n", - " CCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc12\n", - " 1\n", + " 203\n", + " 204\n", + " test_duplicate\n", + " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " 2\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7ad50>\n", + " False\n", " \n", " \n", "\n", "" ], "text/plain": [ - " IDs Names SMILEs \\\n", - "14 15 6-Mercaptopurine Sc1ncnc2[nH]c[nH]c12 \n", - "41 42 Alfuzosin COc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO1 \n", - "57 58 Aminophylline CN1C(=O)N(C)c2[nH]c[nH]c2C1=O \n", - "85 86 Azathioprine Cn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O \n", - "90 91 Bacitracin CCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC... \n", - "133 134 Camptothecin CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O \n", - "182 183 Chloroquine CCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc12 \n", + " IDs Names SMILEs \\\n", + "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", - " Failed_at \n", - "14 1 \n", - "41 1 \n", - "57 1 \n", - "85 1 \n", - "90 1 \n", - "133 1 \n", - "182 1 " + " Failed_at mol \\\n", + "202 2 \n", + "203 2 \n", + "\n", + " Carbon_present \n", + "202 False \n", + "203 False " ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Show the subset of all failed entries\n", - "failed_step_1.head(16)" + "dataset[dataset[\"Failed_at\"]==2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2: Removal of Inorganics and Mixtures\n", - "--------------------------------------------------\n", + "#### Task 3: Filter entries with inorganic components\n", "\n", - "Since molecular descriptors can only be computed for organic compunds, all inorganic compunds must be removed before the descriptors are calculated. (Chapter 2.1. Fourches 2010)\n", + "While we filtered out all molecules not containing any Carbon, now we further inspect the entries for elements which can not or only rarely occur in organic molecules or are contained by them. This might vary a bit depending on the defenition and scope. For this we can use the `detect_inorganic` function.\n", + "It is recommended to check what can be handled by software for later use of the dataset. A customization of the allowed elements in `detect_inorganic` is possible, and can easily be provided by a set of SMARTS, as described shortly further below. \n", + "As the default set of accepted elements in a organic molecule Hydrogen, Carbon, Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Selenium, Bromine, Iodine (nonmetals and halogenes) were chosen.
\n", + "*While Astatine and Tennessine are also considered halogenes, they are not included due to their radioactivity and rarity.*\n", + "
\n", "\n", - "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of \"True\" when it finds a inorganic molecule. We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", - "\"Inorganic compounds are known to have biological effects, like for example toxic effects.\"(Chapter 2.1. Fourches 2010)(fix citation)\n", - " Due to their potential bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", - "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", "\n", - "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself.\n", + "###### An example on how a custom set can be setup and how it can be used \n", + "-----------------------------------------------------------------------------------------------------------\n", + "Defining a set:
\n", + "`elements = Chem.MolFromSmarts(\"[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#35&!#53]\")`\n", "\n", - "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." + "Pass the set as a parameter, where the `detect_inorganic` function is getting called:
\n", + "`lambda row: detect_inorganics.detect_inorganic(row.mol, elements)`" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Setting up the task_number\n", + "task_number = 3\n", + "\n", + "\n", + "# Check for inorganic structures\n", + "dataset[\"Inorganics\"] = dataset.apply(\n", + " lambda row: detect_inorganics.detect_inorganic(row.mol)\n", + " if row.Failed_at == 0\n", + " else None,\n", + " axis=1,\n", + ")\n", + "\n", + "# Add task_number to failed entries\n", + "dataset.loc[dataset[\"Inorganics\"] == True, [\"Failed_at\"]] = task_number\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 2: Filter entries with inorganic components" + "Below you can see all entries, that contain other than our allowed elements.(Hydrogen, Carbon, Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Selenium, Bromine, Iodine)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 12, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":11: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_2[\"Failed_at\"] = failed_step_2[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" - ] - }, { "data": { "text/html": [ @@ -684,314 +764,55 @@ " SMILEs\n", " Failed_at\n", " mol\n", + " Carbon_present\n", " Inorganics\n", + " mixture\n", " \n", " \n", " \n", " \n", - " 185\n", - " 186\n", - " Chlorpromazine\n", - " CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750d00>\n", - " False\n", - " \n", - " \n", - " 186\n", - " 187\n", - " Chlorpropamide\n", - " CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750d50>\n", - " False\n", - " \n", - " \n", - " 187\n", - " 188\n", - " Chlortetracycline\n", - " CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750da0>\n", - " False\n", - " \n", - " \n", - " 188\n", - " 189\n", - " Chlorzoxazone\n", - " Oc1nc2cc(Cl)ccc2o1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750df0>\n", - " False\n", - " \n", - " \n", - " 189\n", - " 190\n", - " Cholestyramine\n", - " CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750e40>\n", - " False\n", - " \n", - " \n", - " 190\n", - " 191\n", - " Chondroitin sulfate\n", - " CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750e90>\n", - " False\n", - " \n", - " \n", - " 191\n", - " 192\n", - " Cidofovir\n", - " NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750ee0>\n", - " False\n", - " \n", - " \n", - " 192\n", - " 193\n", - " Cimetidine\n", - " CN=C(NCCSCc1nc[nH]c1C)NC#N\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750f30>\n", - " False\n", - " \n", - " \n", - " 193\n", - " 194\n", - " Cinchophen\n", - " OC(=O)c1cc(nc2ccccc12)-c1ccccc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe963750f80>\n", - " False\n", - " \n", - " \n", - " 194\n", - " 195\n", - " Cinoxacin\n", - " CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d030>\n", - " False\n", + " 0\n", + " 1\n", + " (R)-Roscovitine\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " 3\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060bfb760>\n", + " True\n", + " True\n", + " None\n", " \n", " \n", - " 195\n", - " 196\n", - " Ciprofibrate\n", - " CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d080>\n", - " False\n", + " 114\n", + " 115\n", + " Bortezomib\n", + " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", + " 3\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7d1c0>\n", + " True\n", + " True\n", + " None\n", " \n", " \n", - " 196\n", - " 197\n", - " Ciprofloxacin\n", - " OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d0d0>\n", - " False\n", + " 200\n", + " 201\n", + " zirconium\n", + " CCO[Zr](OCC)(OCC)OCC\n", + " 3\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7ac60>\n", + " True\n", + " True\n", + " None\n", " \n", " \n", - " 197\n", - " 198\n", - " Cisapride\n", - " COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d120>\n", - " False\n", - " \n", - " \n", - " 198\n", - " 199\n", - " Citalopram\n", - " CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d170>\n", - " False\n", - " \n", - " \n", - " 199\n", - " 200\n", - " Citric acid\n", - " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>\n", - " False\n", - " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " IDs Names \\\n", - "185 186 Chlorpromazine \n", - "186 187 Chlorpropamide \n", - "187 188 Chlortetracycline \n", - "188 189 Chlorzoxazone \n", - "189 190 Cholestyramine \n", - "190 191 Chondroitin sulfate \n", - "191 192 Cidofovir \n", - "192 193 Cimetidine \n", - "193 194 Cinchophen \n", - "194 195 Cinoxacin \n", - "195 196 Ciprofibrate \n", - "196 197 Ciprofloxacin \n", - "197 198 Cisapride \n", - "198 199 Citalopram \n", - "199 200 Citric acid \n", - "\n", - " SMILEs Failed_at \\\n", - "185 CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12 0 \n", - "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", - "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", - "188 Oc1nc2cc(Cl)ccc2o1 0 \n", - "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", - "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", - "191 NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1 0 \n", - "192 CN=C(NCCSCc1nc[nH]c1C)NC#N 0 \n", - "193 OC(=O)c1cc(nc2ccccc12)-c1ccccc1 0 \n", - "194 CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 0 \n", - "195 CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O 0 \n", - "196 OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O 0 \n", - "197 COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... 0 \n", - "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", - "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", - "\n", - " mol Inorganics \n", - "185 False \n", - "186 False \n", - "187 False \n", - "188 False \n", - "189 False \n", - "190 False \n", - "191 False \n", - "192 False \n", - "193 False \n", - "194 False \n", - "195 False \n", - "196 False \n", - "197 False \n", - "198 False \n", - "199 False " - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Setting up the task_number\n", - "task_number = 2\n", - "# getting the valid entries from the step before\n", - "dataset = result1\n", - "\n", - "# Check for inorganic structures in the entries\n", - "dataset[\"Inorganics\"] = dataset[\"mol\"].apply(detect_inorganic)\n", - "\n", - "# Filter the failed entries\n", - "failed_step_2 = dataset[dataset[\"Inorganics\"] == True]\n", - "failed_step_2[\"Failed_at\"] = failed_step_2[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", - "\n", - "\n", - "# Safe entries that passed\n", - "result2 = dataset[dataset[\"Inorganics\"] == False]\n", - "result2.tail(15)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
IDsNamesSMILEsFailed_atmolInorganics
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]2<rdkit.Chem.rdchem.Mol object at 0x7fe96374f3f0>True
114115BortezomibCC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O2<rdkit.Chem.rdchem.Mol object at 0x7fe963752670>True
200201zirconiumCCO[Zr](OCC)(OCC)OCC2<rdkit.Chem.rdchem.Mol object at 0x7fe96374d210>True
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...2<rdkit.Chem.rdchem.Mol object at 0x7fe96374d260>True
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....2<rdkit.Chem.rdchem.Mol object at 0x7fe96374d2b0>True
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....2<rdkit.Chem.rdchem.Mol object at 0x7fe96374d300>True201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...3<rdkit.Chem.rdchem.Mol object at 0x7fc060b7acb0>TrueTrueNone
\n", @@ -1003,316 +824,71 @@ "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", - "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", - " Failed_at mol Inorganics \n", - "0 2 True \n", - "114 2 True \n", - "200 2 True \n", - "201 2 True \n", - "202 2 True \n", - "203 2 True " + " Failed_at mol \\\n", + "0 3 \n", + "114 3 \n", + "200 3 \n", + "201 3 \n", + "\n", + " Carbon_present Inorganics mixture \n", + "0 True True None \n", + "114 True True None \n", + "200 True True None \n", + "201 True True None " ] }, - "execution_count": 7, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Show the subset of all failed entries\n", - "failed_step_2.head(16)" + "dataset[dataset[\"Failed_at\"]==3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 3: Filter entries containing fragments" + "#### Task 4: Filter entries containing mixtures\n", + "\n", + "Since mixtures appear in encoding formats, like SMILES strings, where various molecules can be stored in one entry, but many applications can not handle mixtures as descriptors, they also need to be filtered out.\n", + "Some mixtures can be used, when it can be clearly identified, that the recored activity originates from them and common fragments, without bioactivity are known, but prior to any action on the entries with mixtures, those have to be identified.\n", + "This will be archived with the function `detect_mixtures` as shown below." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Removed fragment: 1,4-dioxane\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - ":7: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset[\"mol_after\"] = dataset[\"mol\"].apply(handle_fragments.remove_fragments)\n", - ":10: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", - ":13: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset[\"Smiles 3\"] = dataset[\"mol_after\"].apply(convert_format.convert_mol_to_smiles)\n", - ":14: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " dataset[\"noChanges\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 3\"]\n", - ":19: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_3[\"Failed_at\"] = failed_step_3[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmol
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d080>
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d0d0>
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d120>
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10<rdkit.Chem.rdchem.Mol object at 0x7fe96374d170>
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs \\\n", - "195 196 Ciprofibrate CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O \n", - "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", - "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", - "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", - "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", - "\n", - " Failed_at mol \n", - "195 0 \n", - "196 0 \n", - "197 0 \n", - "198 0 \n", - "199 0 " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Setting up the task_number\n", - "task_number = 3\n", - "# getting the valid entries from the step before\n", - "dataset = result2\n", - "\n", - "# Perform remove_fragments on entries\n", - "dataset[\"mol_after\"] = dataset[\"mol\"].apply(handle_fragments.remove_fragments)\n", - "\n", - "# Create Smiles for evaluation\n", - "dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", - "\n", - "# Create new SMILEs from the current state for evaluation of performed changes\n", - "dataset[\"Smiles 3\"] = dataset[\"mol_after\"].apply(convert_format.convert_mol_to_smiles)\n", - "dataset[\"noChanges\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 3\"]\n", - "\n", + "task_number = 4\n", "\n", - "# Filter the failed entries\n", - "failed_step_3 = dataset[dataset[\"noChanges\"] == False]\n", - "failed_step_3[\"Failed_at\"] = failed_step_3[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", + "# Check for inorganic structures\n", + "dataset[\"mixture\"] = dataset.apply(\n", + " lambda row: detect_mixtures(row.mol)\n", + " if row.Failed_at == 0\n", + " else None,\n", + " axis=1,\n", + ")\n", "\n", - "# Safe entries that passed\n", - "result3 = dataset[dataset[\"noChanges\"] == True]\n", - "result3 = result3[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", - "result3.tail()" + "# Add task_number to failed entries\n", + "dataset.loc[dataset[\"mixture\"] == True, [\"Failed_at\"]] = task_number\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below you can see all entries, that are mixtures." ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -1341,11 +917,9 @@ " SMILEs\n", " Failed_at\n", " mol\n", + " Carbon_present\n", " Inorganics\n", - " mol_after\n", - " smiles_before\n", - " Smiles 3\n", - " noChanges\n", + " mixture\n", " \n", " \n", " \n", @@ -1354,13 +928,11 @@ " 6\n", " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", - " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe96374f580>\n", - " False\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fe9636fa260>\n", - " C1COCCO1.OCC1OC(O)CC(O)C1O\n", - " OCC1OC(O)CC(O)C1O\n", + " 4\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e580>\n", + " True\n", " False\n", + " True\n", " \n", " \n", "\n", @@ -1368,578 +940,42 @@ ], "text/plain": [ " IDs Names SMILEs Failed_at \\\n", - "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 3 \n", + "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 4 \n", "\n", - " mol Inorganics \\\n", - "5 False \n", + " mol Carbon_present Inorganics \\\n", + "5 True False \n", "\n", - " mol_after \\\n", - "5 \n", - "\n", - " smiles_before Smiles 3 noChanges \n", - "5 C1COCCO1.OCC1OC(O)CC(O)C1O OCC1OC(O)CC(O)C1O False " + " mixture \n", + "5 True " ] }, - "execution_count": 9, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Show the subset of all failed entries\n", - "failed_step_3.head(16)" + "dataset[dataset[\"Failed_at\"]==4]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 4: Filter entires containing metals" + "#### Task 5: Filter entries containing metals" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Running FragmentRemover\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:58] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:58] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n", - "RDKit INFO: [12:24:59] Initializing MetalDisconnector\n", - "RDKit INFO: [12:24:59] Running MetalDisconnector\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolnoChanges
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d080>True
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d0d0>True
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d120>True
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10<rdkit.Chem.rdchem.Mol object at 0x7fe96374d170>True
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>True
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs \\\n", - "195 196 Ciprofibrate CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O \n", - "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", - "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", - "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", - "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", - "\n", - " Failed_at mol noChanges \n", - "195 0 True \n", - "196 0 True \n", - "197 0 True \n", - "198 0 True \n", - "199 0 True " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Setting up the task_number\n", "task_number = 4\n", "# getting the valid entries from the step before\n", "# Load result1 subset to actually see this step perform\n", - "dataset = result3[\n", - " [\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]\n", - "] \n", + "dataset = result3[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", "\n", "# Create Smiles for evaluation\n", "dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", @@ -1953,7 +989,9 @@ "\n", "# Filter the failed entries\n", "failed_step_4 = dataset[dataset[\"noChanges\"] == False]\n", - "failed_step_4[\"Failed_at\"] = failed_step_4[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", + "failed_step_4[\"Failed_at\"] = failed_step_4[\"Failed_at\"].apply(\n", + " lambda x, task_number=task_number: task_number\n", + ")\n", "failed_step_4 = failed_step_4[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", "failed_step_4.tail()\n", "\n", @@ -1965,53 +1003,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmol
\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: [IDs, Names, SMILEs, Failed_at, mol]\n", - "Index: []" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Show the subset of all failed entries\n", "failed_step_4.head(16)" @@ -2027,220 +1021,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmol
185186ChlorpromazineCN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc120<rdkit.Chem.rdchem.Mol object at 0x7fe963750d00>
186187ChlorpropamideCCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc10<rdkit.Chem.rdchem.Mol object at 0x7fe963750d50>
187188ChlortetracyclineCN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)...0<rdkit.Chem.rdchem.Mol object at 0x7fe963750da0>
188189ChlorzoxazoneOc1nc2cc(Cl)ccc2o10<rdkit.Chem.rdchem.Mol object at 0x7fe963750df0>
189190CholestyramineCC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O...0<rdkit.Chem.rdchem.Mol object at 0x7fe963750e40>
190191Chondroitin sulfateCC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(...0<rdkit.Chem.rdchem.Mol object at 0x7fe963750e90>
191192CidofovirNC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C10<rdkit.Chem.rdchem.Mol object at 0x7fe963750ee0>
192193CimetidineCN=C(NCCSCc1nc[nH]c1C)NC#N0<rdkit.Chem.rdchem.Mol object at 0x7fe963750f30>
193194CinchophenOC(=O)c1cc(nc2ccccc12)-c1ccccc10<rdkit.Chem.rdchem.Mol object at 0x7fe963750f80>
194195CinoxacinCCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc120<rdkit.Chem.rdchem.Mol object at 0x7fe96374d030>
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d080>
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d0d0>
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d120>
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10<rdkit.Chem.rdchem.Mol object at 0x7fe96374d170>
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>
\n", - "
" - ], - "text/plain": [ - " IDs Names \\\n", - "185 186 Chlorpromazine \n", - "186 187 Chlorpropamide \n", - "187 188 Chlortetracycline \n", - "188 189 Chlorzoxazone \n", - "189 190 Cholestyramine \n", - "190 191 Chondroitin sulfate \n", - "191 192 Cidofovir \n", - "192 193 Cimetidine \n", - "193 194 Cinchophen \n", - "194 195 Cinoxacin \n", - "195 196 Ciprofibrate \n", - "196 197 Ciprofloxacin \n", - "197 198 Cisapride \n", - "198 199 Citalopram \n", - "199 200 Citric acid \n", - "\n", - " SMILEs Failed_at \\\n", - "185 CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12 0 \n", - "186 CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1 0 \n", - "187 CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)... 0 \n", - "188 Oc1nc2cc(Cl)ccc2o1 0 \n", - "189 CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O... 0 \n", - "190 CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(... 0 \n", - "191 NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1 0 \n", - "192 CN=C(NCCSCc1nc[nH]c1C)NC#N 0 \n", - "193 OC(=O)c1cc(nc2ccccc12)-c1ccccc1 0 \n", - "194 CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 0 \n", - "195 CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O 0 \n", - "196 OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O 0 \n", - "197 COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... 0 \n", - "198 CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 0 \n", - "199 OC(=O)CC(O)(CC(O)=O)C(O)=O 0 \n", - "\n", - " mol \n", - "185 \n", - "186 \n", - "187 \n", - "188 \n", - "189 \n", - "190 \n", - "191 \n", - "192 \n", - "193 \n", - "194 \n", - "195 \n", - "196 \n", - "197 \n", - "198 \n", - "199 " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Setting up the task_number\n", "task_number = 5\n", @@ -2252,7 +1035,9 @@ "\n", "# Filter the failed entries\n", "failed_step_5 = dataset[dataset[\"Inorganics2\"] == True]\n", - "failed_step_5[\"Failed_at\"] = failed_step_5[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", + "failed_step_5[\"Failed_at\"] = failed_step_5[\"Failed_at\"].apply(\n", + " lambda x, task_number=task_number: task_number\n", + ")\n", "failed_step_5 = failed_step_5[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", "\n", "# Safe entries that passed\n", @@ -2263,53 +1048,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmol
\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: [IDs, Names, SMILEs, Failed_at, mol]\n", - "Index: []" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Show the subset of all failed entries\n", "failed_step_5.head()" @@ -2334,7 +1075,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2355,468 +1096,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CC(=O)O\n", - "O=C(O)CC(O)(CC(=O)O)C(=O)O\n", - "[Zn]\n", - "[Zn]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":18: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolInorganicssmiles_beforeSmiles 5no_removed_saltChanged_at
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]0<rdkit.Chem.rdchem.Mol object at 0x7fe9636b7580>TrueCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1False6.0
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f440>FalseCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OTrueNaN
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f490>FalseC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OTrueNaN
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f4e0>FalseO=C(O)C(S)C(S)C(=O)OO=C(O)C(S)C(S)C(=O)OTrueNaN
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f530>FalseCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]TrueNaN
562-Deoxy-D-glucoseOCC1OC(O)CC(O)C1O.O1CCOCC10<rdkit.Chem.rdchem.Mol object at 0x7fe96374f580>FalseC1COCCO1.OCC1OC(O)CC(O)C1OC1COCCO1.OCC1OC(O)CC(O)C1OTrueNaN
672'-fluoro-5-methylarabinosyluracilCC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f5d0>FalseCc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=OCc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=OTrueNaN
782-MethoxyestradiolCOc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f620>FalseCOc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12TrueNaN
894-aminobenzoic acidNc1ccc(cc1)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f670>FalseNc1ccc(C(=O)O)cc1Nc1ccc(C(=O)O)cc1TrueNaN
9104-HydroxytamoxifenCCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc10<rdkit.Chem.rdchem.Mol object at 0x7fe96374f6c0>FalseCCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1TrueNaN
10115 fluorouracilFC1=CNC(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f710>FalseO=c1[nH]cc(F)c(=O)[nH]1O=c1[nH]cc(F)c(=O)[nH]1TrueNaN
11125-AzacitidineNC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f760>FalseNc1ncn(C2OC(CO)C(O)C2O)c(=O)n1Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1TrueNaN
12135-BromouracilOCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f7b0>FalseO=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1BrO=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1BrTrueNaN
13145-fluoro-2'-deoxyuridineOCC1OC(CC1O)N1C=C(F)C(=O)NC1=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f800>FalseO=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1FO=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1FTrueNaN
1516AcadesineNC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f850>FalseNC(=O)c1ncn(C2OC(CO)C(O)C2O)c1NNC(=O)c1ncn(C2OC(CO)C(O)C2O)c1NTrueNaN
1617AcarboseCC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f8a0>FalseCC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)...TrueNaN
1718AcebutololCCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f8f0>FalseCCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1TrueNaN
1819AcenocoumarolCC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f940>FalseCC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...TrueNaN
1920AcetamideCC(N)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f990>FalseCC(N)=OCC(N)=OTrueNaN
2021AcetaminophenCC(=O)Nc1ccc(O)cc10<rdkit.Chem.rdchem.Mol object at 0x7fe96374f9e0>FalseCC(=O)Nc1ccc(O)cc1CC(=O)Nc1ccc(O)cc1TrueNaN
\n", - "
" - ], - "text/plain": [ - " IDs Names \\\n", - "0 1 (R)-Roscovitine \n", - "1 2 17-Methyltestosterone \n", - "2 3 1-alpha-Hydroxycholecalciferol \n", - "3 4 2,3-Dimercaptosuccinic acid \n", - "4 5 2,4,6-Trinitrotoluene \n", - "5 6 2-Deoxy-D-glucose \n", - "6 7 2'-fluoro-5-methylarabinosyluracil \n", - "7 8 2-Methoxyestradiol \n", - "8 9 4-aminobenzoic acid \n", - "9 10 4-Hydroxytamoxifen \n", - "10 11 5 fluorouracil \n", - "11 12 5-Azacitidine \n", - "12 13 5-Bromouracil \n", - "13 14 5-fluoro-2'-deoxyuridine \n", - "15 16 Acadesine \n", - "16 17 Acarbose \n", - "17 18 Acebutolol \n", - "18 19 Acenocoumarol \n", - "19 20 Acetamide \n", - "20 21 Acetaminophen \n", - "\n", - " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", - "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", - "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", - "8 Nc1ccc(cc1)C(O)=O 0 \n", - "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", - "10 FC1=CNC(=O)NC1=O 0 \n", - "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", - "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", - "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", - "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... 0 \n", - "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O 0 \n", - "18 CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O 0 \n", - "19 CC(N)=O 0 \n", - "20 CC(=O)Nc1ccc(O)cc1 0 \n", - "\n", - " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "5 False \n", - "6 False \n", - "7 False \n", - "8 False \n", - "9 False \n", - "10 False \n", - "11 False \n", - "12 False \n", - "13 False \n", - "15 False \n", - "16 False \n", - "17 False \n", - "18 False \n", - "19 False \n", - "20 False \n", - "\n", - " smiles_before \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", - "3 O=C(O)C(S)C(S)C(=O)O \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] \n", - "5 C1COCCO1.OCC1OC(O)CC(O)C1O \n", - "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O \n", - "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 \n", - "8 Nc1ccc(C(=O)O)cc1 \n", - "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 \n", - "10 O=c1[nH]cc(F)c(=O)[nH]1 \n", - "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 \n", - "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br \n", - "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N \n", - "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... \n", - "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1 \n", - "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... \n", - "19 CC(N)=O \n", - "20 CC(=O)Nc1ccc(O)cc1 \n", - "\n", - " Smiles 5 no_removed_salt \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 False \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O True \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O True \n", - "3 O=C(O)C(S)C(S)C(=O)O True \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", - "5 C1COCCO1.OCC1OC(O)CC(O)C1O True \n", - "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O True \n", - "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 True \n", - "8 Nc1ccc(C(=O)O)cc1 True \n", - "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 True \n", - "10 O=c1[nH]cc(F)c(=O)[nH]1 True \n", - "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 True \n", - "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br True \n", - "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F True \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N True \n", - "16 CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)... True \n", - "17 CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1 True \n", - "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... True \n", - "19 CC(N)=O True \n", - "20 CC(=O)Nc1ccc(O)cc1 True \n", - "\n", - " Changed_at \n", - "0 6.0 \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Setting up the task_number\n", "task_number = 6\n", @@ -2835,10 +1117,14 @@ "\n", "# Filter the changed entries\n", "changed_at_step_6 = dataset[dataset[\"no_removed_salt\"] == False]\n", - "changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", + "changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(\n", + " lambda x, task_number=task_number: task_number\n", + ")\n", "changed_at_step_6 = changed_at_step_6[[\"IDs\", \"Names\", \"SMILEs\", \"Changed_at\", \"mol\"]]\n", "\n", - "dataset[\"Changed_at\"] = dataset[dataset[\"no_removed_salt\"] == False][\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", + "dataset[\"Changed_at\"] = dataset[dataset[\"no_removed_salt\"] == False][\"Failed_at\"].apply(\n", + " lambda x, task_number=task_number: task_number\n", + ")\n", "dataset.head(20)\n", "\n", "# dataset['removed_salts'] = RemoveSaltsFromFrame(dataset,molCol='mol')\n", @@ -2847,83 +1133,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsChanged_atmol
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]6<rdkit.Chem.rdchem.Mol object at 0x7fe9636b7580>
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....6<rdkit.Chem.rdchem.Mol object at 0x7fe9636b7170>
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....6<rdkit.Chem.rdchem.Mol object at 0x7fe9636b94e0>
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs \\\n", - "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", - "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "\n", - " Changed_at mol \n", - "0 6 \n", - "202 6 \n", - "203 6 " - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Show the subset of all changed entries (salts were removed)\n", "changed_at_step_6.head()" @@ -2938,167 +1150,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolInorganicssmiles_beforeSmiles 5no_removed_saltChanged_atnormalized
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]0<rdkit.Chem.rdchem.Mol object at 0x7fe9636b7580>TrueCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1False6.0<rdkit.Chem.rdchem.Mol object at 0x7fe963706490>
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f440>FalseCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OTrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe9637063f0>
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f490>FalseC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OTrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe963714030>
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f4e0>FalseO=C(O)C(S)C(S)C(=O)OO=C(O)C(S)C(S)C(=O)OTrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe963714530>
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f530>FalseCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]TrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe963714580>
\n", - "
" - ], - "text/plain": [ - " IDs Names \\\n", - "0 1 (R)-Roscovitine \n", - "1 2 17-Methyltestosterone \n", - "2 3 1-alpha-Hydroxycholecalciferol \n", - "3 4 2,3-Dimercaptosuccinic acid \n", - "4 5 2,4,6-Trinitrotoluene \n", - "\n", - " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "\n", - " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "\n", - " smiles_before \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", - "3 O=C(O)C(S)C(S)C(=O)O \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] \n", - "\n", - " Smiles 5 no_removed_salt \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 False \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O True \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O True \n", - "3 O=C(O)C(S)C(S)C(=O)O True \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", - "\n", - " Changed_at normalized \n", - "0 6.0 \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN " - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# TODO: Finish all steps here\n", "\n", @@ -3121,7 +1175,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -3139,7 +1193,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -3151,7 +1205,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -3170,188 +1224,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n", - "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolInorganicssmiles_beforeSmiles 5no_removed_saltChanged_atnormalizedcanonicalized tautomer
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]0<rdkit.Chem.rdchem.Mol object at 0x7fe9636b7580>TrueCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1False6.0<rdkit.Chem.rdchem.Mol object at 0x7fe963706490>CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f440>FalseCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OTrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe9637063f0>CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f490>FalseC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OTrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe963714030>C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f4e0>FalseO=C(O)C(S)C(S)C(=O)OO=C(O)C(S)C(S)C(=O)OTrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe963714530>O=C(O)C(S)C(S)C(=O)O
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374f530>FalseCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]TrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe963714580>Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]
\n", - "
" - ], - "text/plain": [ - " IDs Names \\\n", - "0 1 (R)-Roscovitine \n", - "1 2 17-Methyltestosterone \n", - "2 3 1-alpha-Hydroxycholecalciferol \n", - "3 4 2,3-Dimercaptosuccinic acid \n", - "4 5 2,4,6-Trinitrotoluene \n", - "\n", - " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "\n", - " mol Inorganics \\\n", - "0 True \n", - "1 False \n", - "2 False \n", - "3 False \n", - "4 False \n", - "\n", - " smiles_before \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", - "3 O=C(O)C(S)C(S)C(=O)O \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] \n", - "\n", - " Smiles 5 no_removed_salt \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 False \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O True \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O True \n", - "3 O=C(O)C(S)C(S)C(=O)O True \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] True \n", - "\n", - " Changed_at normalized \\\n", - "0 6.0 \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "\n", - " canonicalized tautomer \n", - "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O \n", - "3 O=C(O)C(S)C(S)C(=O)O \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] " - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# TODO: Finish all steps here\n", "\n", @@ -3361,179 +1236,17 @@ "dataset = result7\n", "\n", "# Find all duplicate occurences in SMILEs\n", - "dataset[\"canonicalized tautomer\"] = dataset[\"SMILEs\"].apply(handle_tautomers.canonicalize_tautomer)\n", + "dataset[\"canonicalized tautomer\"] = dataset[\"SMILEs\"].apply(\n", + " handle_tautomers.canonicalize_tautomer\n", + ")\n", "dataset.head()" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolInorganicssmiles_beforeSmiles 5no_removed_saltChanged_atnormalizedcanonicalized tautomer
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d1c0>FalseO=C(O)CC(O)(CC(=O)O)C(=O)OO=C(O)CC(O)(CC(=O)O)C(=O)OTrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe9636e7990>O=C(O)CC(O)(CC(=O)O)C(=O)O
200201zirconiumCCO[Zr](OCC)(OCC)OCC0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d210>TrueCCO[Zr](OCC)(OCC)OCCCCO[Zr](OCC)(OCC)OCCTrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe9636e79e0>CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4]
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...0<rdkit.Chem.rdchem.Mol object at 0x7fe96374d260>TrueC=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...TrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe9636e7a30>C=CC1=C(C)c2cc3[n-]c(cc4[nH]c(cc5nc(cc1n2)C(C)...
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....0<rdkit.Chem.rdchem.Mol object at 0x7fe9636b7170>TrueBr.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...[Zn]False6.0<rdkit.Chem.rdchem.Mol object at 0x7fe9636e7a80>Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....0<rdkit.Chem.rdchem.Mol object at 0x7fe9636b94e0>TrueBr.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...[Zn]False6.0<rdkit.Chem.rdchem.Mol object at 0x7fe9636e7ad0>Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs \\\n", - "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", - "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", - "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "\n", - " Failed_at mol Inorganics \\\n", - "199 0 False \n", - "200 0 True \n", - "201 0 True \n", - "202 0 True \n", - "203 0 True \n", - "\n", - " smiles_before \\\n", - "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", - "200 CCO[Zr](OCC)(OCC)OCC \n", - "201 C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... \n", - "202 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", - "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", - "\n", - " Smiles 5 no_removed_salt \\\n", - "199 O=C(O)CC(O)(CC(=O)O)C(=O)O True \n", - "200 CCO[Zr](OCC)(OCC)OCC True \n", - "201 C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... True \n", - "202 [Zn] False \n", - "203 [Zn] False \n", - "\n", - " Changed_at normalized \\\n", - "199 NaN \n", - "200 NaN \n", - "201 NaN \n", - "202 6.0 \n", - "203 6.0 \n", - "\n", - " canonicalized tautomer \n", - "199 O=C(O)CC(O)(CC(=O)O)C(=O)O \n", - "200 CC[O-].CC[O-].CC[O-].CC[O-].[Zr+4] \n", - "201 C=CC1=C(C)c2cc3[n-]c(cc4[nH]c(cc5nc(cc1n2)C(C)... \n", - "202 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... \n", - "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... " - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "dataset.tail()" ] @@ -3547,129 +1260,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":15: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolInorganicssmiles_beforeSmiles 5no_removed_saltChanged_atnormalizedcanonicalized tautomerduplicate?
168169Cerivastatin sodiumCOCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc...10<rdkit.Chem.rdchem.Mol object at 0x7fe963750800>FalseCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...TrueNaN<rdkit.Chem.rdchem.Mol object at 0x7fe9636e7080>COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...True
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....10<rdkit.Chem.rdchem.Mol object at 0x7fe9636b94e0>TrueBr.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...[Zn]False6.0<rdkit.Chem.rdchem.Mol object at 0x7fe9636e7ad0>Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+...True
\n", - "
" - ], - "text/plain": [ - " IDs Names \\\n", - "168 169 Cerivastatin sodium \n", - "203 204 test_duplicate \n", - "\n", - " SMILEs Failed_at \\\n", - "168 COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc... 10 \n", - "203 [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... 10 \n", - "\n", - " mol Inorganics \\\n", - "168 False \n", - "203 True \n", - "\n", - " smiles_before \\\n", - "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... \n", - "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", - "\n", - " Smiles 5 no_removed_salt \\\n", - "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... True \n", - "203 [Zn] False \n", - "\n", - " Changed_at normalized \\\n", - "168 NaN \n", - "203 6.0 \n", - "\n", - " canonicalized tautomer duplicate? \n", - "168 COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(... True \n", - "203 Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca+2].[K+... True " - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# TODO: Fine tune the output\n", "\n", @@ -3685,7 +1278,9 @@ "\n", "# Filter the duplicates out\n", "failed_step_10 = dataset[dataset[\"duplicate?\"] == True]\n", - "failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(lambda x, task_number=task_number: task_number)\n", + "failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(\n", + " lambda x, task_number=task_number: task_number\n", + ")\n", "\n", "dataset = dataset[dataset[\"duplicate?\"] == False]\n", "failed_step_10.tail()" @@ -3693,7 +1288,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -3704,7 +1299,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -3715,197 +1310,9 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_atmolInorganics
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]2<rdkit.Chem.rdchem.Mol object at 0x7fe96374f3f0>True
14156-MercaptopurineSc1ncnc2[nH]c[nH]c121NaNNaN
4142AlfuzosinCOc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO11NaNNaN
5758AminophyllineCN1C(=O)N(C)c2[nH]c[nH]c2C1=O1NaNNaN
8586AzathioprineCn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O1NaNNaN
9091BacitracinCCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC...1NaNNaN
114115BortezomibCC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O2<rdkit.Chem.rdchem.Mol object at 0x7fe963752670>True
133134CamptothecinCCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O1NaNNaN
182183ChloroquineCCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc121NaNNaN
200201zirconiumCCO[Zr](OCC)(OCC)OCC2<rdkit.Chem.rdchem.Mol object at 0x7fe96374d210>True
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...2<rdkit.Chem.rdchem.Mol object at 0x7fe96374d260>True
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....2<rdkit.Chem.rdchem.Mol object at 0x7fe96374d2b0>True
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....2<rdkit.Chem.rdchem.Mol object at 0x7fe96374d300>True
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs \\\n", - "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", - "14 15 6-Mercaptopurine Sc1ncnc2[nH]c[nH]c12 \n", - "41 42 Alfuzosin COc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO1 \n", - "57 58 Aminophylline CN1C(=O)N(C)c2[nH]c[nH]c2C1=O \n", - "85 86 Azathioprine Cn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O \n", - "90 91 Bacitracin CCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC... \n", - "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", - "133 134 Camptothecin CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O \n", - "182 183 Chloroquine CCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc12 \n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", - "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", - "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "\n", - " Failed_at mol Inorganics \n", - "0 2 True \n", - "14 1 NaN NaN \n", - "41 1 NaN NaN \n", - "57 1 NaN NaN \n", - "85 1 NaN NaN \n", - "90 1 NaN NaN \n", - "114 2 True \n", - "133 1 NaN NaN \n", - "182 1 NaN NaN \n", - "200 2 True \n", - "201 2 True \n", - "202 2 True \n", - "203 2 True " - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "test" ] @@ -3927,7 +1334,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3" + "version": "3.8.6" } }, "nbformat": 4, From d8434d7d8aa4de69dcd33072eeac53cad2a1afc3 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 5 May 2021 22:23:51 +0200 Subject: [PATCH 37/55] runned black-nb --- docs/tutorials/standardization.ipynb | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index e3f196e4..d503dd3e 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -69,7 +69,7 @@ " normalize,\n", " handle_tautomers,\n", " validate_molecules,\n", - " detect_mixtures\n", + " detect_mixtures,\n", ")" ] }, @@ -679,7 +679,7 @@ } ], "source": [ - "dataset[dataset[\"Failed_at\"]==2]" + "dataset[dataset[\"Failed_at\"] == 2]" ] }, { @@ -723,7 +723,7 @@ ")\n", "\n", "# Add task_number to failed entries\n", - "dataset.loc[dataset[\"Inorganics\"] == True, [\"Failed_at\"]] = task_number\n" + "dataset.loc[dataset[\"Inorganics\"] == True, [\"Failed_at\"]] = task_number" ] }, { @@ -844,7 +844,7 @@ } ], "source": [ - "dataset[dataset[\"Failed_at\"]==3]" + "dataset[dataset[\"Failed_at\"] == 3]" ] }, { @@ -869,14 +869,12 @@ "\n", "# Check for inorganic structures\n", "dataset[\"mixture\"] = dataset.apply(\n", - " lambda row: detect_mixtures(row.mol)\n", - " if row.Failed_at == 0\n", - " else None,\n", + " lambda row: detect_mixtures(row.mol) if row.Failed_at == 0 else None,\n", " axis=1,\n", ")\n", "\n", "# Add task_number to failed entries\n", - "dataset.loc[dataset[\"mixture\"] == True, [\"Failed_at\"]] = task_number\n" + "dataset.loc[dataset[\"mixture\"] == True, [\"Failed_at\"]] = task_number" ] }, { @@ -955,7 +953,7 @@ } ], "source": [ - "dataset[dataset[\"Failed_at\"]==4]" + "dataset[dataset[\"Failed_at\"] == 4]" ] }, { From 512203ff048bb3f2a02a1cc765415a24eda5cab6 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Thu, 6 May 2021 18:47:40 +0200 Subject: [PATCH 38/55] new function detect_metals --- .../compounds/standardization/__init__.py | 1 + .../standardization/detect_metals.py | 47 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 opencadd/compounds/standardization/detect_metals.py diff --git a/opencadd/compounds/standardization/__init__.py b/opencadd/compounds/standardization/__init__.py index 6c68a95d..bd00fa63 100644 --- a/opencadd/compounds/standardization/__init__.py +++ b/opencadd/compounds/standardization/__init__.py @@ -16,3 +16,4 @@ from .sanitize_molecules import * from .validate_molecules import * from .detect_mixtures import * +from .detect_metals import * diff --git a/opencadd/compounds/standardization/detect_metals.py b/opencadd/compounds/standardization/detect_metals.py new file mode 100644 index 00000000..5626d6de --- /dev/null +++ b/opencadd/compounds/standardization/detect_metals.py @@ -0,0 +1,47 @@ +""" +This module detects all metals. +""" +import logging +from rdkit import Chem +from rdkit.Chem.MolStandardize import rdMolStandardize +from rdkit import RDLogger + +RDLogger.DisableLog('rdApp.info') + +__all__ = ["detect_metals"] + + +def _validation_smiles(mol): + """Utility function that converts a mol to SMILES for later validation. + """ + validation_smiles = Chem.MolToSmiles(mol) + return validation_smiles + + +def detect_metals(mol, *args, **kwargs): + """Detects metals. + + Generates a SMILES out of the entered mol for validation, performs metal + disconnection, turns the changed mol into another SMILES + and validates it with the first SMILES created. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule which has to be searched for non-organic + substructures. + + Returns + ------- + boolean: bool + Returns if the stucture contains a metal (True), + or not (False). + """ + + smiles_before = _validation_smiles(mol) + mol_without_metal = rdMolStandardize.MetalDisconnector().Disconnect(mol) + smiles_after = _validation_smiles(mol_without_metal) + if smiles_before == smiles_after: + return False + else: + return True From 246e17ad55386eafb52b69bdffed6a95b24b29ba Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Thu, 6 May 2021 19:18:09 +0200 Subject: [PATCH 39/55] corrected notes in docstring --- opencadd/compounds/standardization/remove_salts.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opencadd/compounds/standardization/remove_salts.py b/opencadd/compounds/standardization/remove_salts.py index b10175f6..f39288a8 100644 --- a/opencadd/compounds/standardization/remove_salts.py +++ b/opencadd/compounds/standardization/remove_salts.py @@ -50,8 +50,8 @@ def remove_salts(mol, dictionary=True, *args, **kwargs): ----- The Salts Dictionary The dictionary used is a derived version from the ChEMBL salt - dictionary, created for the flatkinson standardiser. The salts - are stored as list of (neutral) SMILES. + dictionary, created for the standardiser application by Francis + Atkinson. The salts are stored as list of (neutral) SMILES. """ lg = RDLogger.logger() lg.setLevel(RDLogger.ERROR) From bd1c756645fe02165c8b9a4f16eaec6c564634cc Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Thu, 6 May 2021 21:07:31 +0200 Subject: [PATCH 40/55] adjusted task 5 (metal detection) --- docs/tutorials/standardization.ipynb | 298 +++++++++++++-------------- 1 file changed, 141 insertions(+), 157 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index d503dd3e..b46a662e 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -70,6 +70,7 @@ " handle_tautomers,\n", " validate_molecules,\n", " detect_mixtures,\n", + " detect_metals,\n", ")" ] }, @@ -87,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -218,7 +219,7 @@ "203 0 " ] }, - "execution_count": 3, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -282,26 +283,26 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [22:04:00] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n" ] }, @@ -340,7 +341,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060bfb760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b40fe8a0>\n", " \n", " \n", " 1\n", @@ -348,7 +349,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e210>\n", " \n", " \n", " 2\n", @@ -356,7 +357,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e1c0>\n", " \n", " \n", " 3\n", @@ -364,7 +365,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e120>\n", " \n", " \n", " 4\n", @@ -372,7 +373,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e170>\n", " \n", " \n", " 5\n", @@ -380,7 +381,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e080>\n", " \n", " \n", " 6\n", @@ -388,7 +389,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e0d0>\n", " \n", " \n", " 7\n", @@ -396,7 +397,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e2b0>\n", " \n", " \n", " 8\n", @@ -404,7 +405,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e3f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e3a0>\n", " \n", " \n", " 9\n", @@ -412,7 +413,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e3f0>\n", " \n", " \n", " 10\n", @@ -420,7 +421,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e6c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e350>\n", " \n", " \n", " 11\n", @@ -428,7 +429,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e300>\n", " \n", " \n", " 12\n", @@ -436,7 +437,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e5d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e260>\n", " \n", " \n", " 13\n", @@ -444,7 +445,7 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e7b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e4e0>\n", " \n", " \n", " 14\n", @@ -460,7 +461,7 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060b6f300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e530>\n", " \n", " \n", "\n", @@ -504,25 +505,25 @@ "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", "14 None \n", - "15 " + "15 " ] }, - "execution_count": 4, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -547,21 +548,17 @@ "### Step 2: Removal of Inorganics and Mixtures\n", "--------------------------------------------------\n", "\n", - "Since most cheminformatical applications are not capable of processing inorganicstructures, there is the need for a removal of those entries, prior to any processing.\n", - "\n", + "Since most cheminformatical applications are not capable of processing inorganic structures, there is the need for a removal of those entries, prior to any processing.
\n", + "This is divided into two steps:
\n", + "First removing all entries not containing any Carbon at all, which are therefore not organic.
\n", + "Secondly filtering out all compounds with inorganic substructures.
\n", "\n", + "Similar problems occur for mixtures. Since most applications can not calculate descriptors for mixtures, a filtering has to happen prior to any processing.
\n", + "Additionally, since \"*inorganic compounds are known to have biological effects, like for example toxic effects*\" (Fourches 2010), we can often not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. \n", "\n", - "For the flagging and following removal of compounds containing inorganic molecules, we can use the function `detect_inorganic`. This function returns a boolean value of **True** when it finds a element that can not be found in a organic molecule. The set of elements that are passing the check are: Hydrogen, Carbon, Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Bromine, Iodine. All molecules containing other elements will not pass this filtering step. \n", "\n", - "\n", - "We can run this flagging in a pre-processing step of the data, and discard those compounds. \n", - "\"Inorganic compounds are known to have biological effects, like for example toxic effects.\"(Chapter 2.1. Fourches 2010)(fix citation)\n", - " Due to their potential bioactivity we can not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. ! THIS SHOULD BE LOGGED AND MANUAL CURATION SHOULD BE ENABLED !\n", - "An alternate and easy way would be that every SMILES is undertaken a substring search, where a match of a inorganic compound pattern (search pattern set should be defined) would be flagged.\n", - "\n", - "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures. ! THIS AGAIN CAN BE LOGGED AND MANUAL CURATION CAN BE DONE WITH THIS SET ! The ease up the curation various filtering functions can be implemented to help decide which to keep and which to discard. Three types of mixtures are described. ! CHECK IF IMPLEMENTATION WOULD BE POSSIBLE EASY AND FAST ! Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself.\n", - "\n", - "Those actions might be performed, before the entered SMILES are beeing converted into mol-files. Some described steps are related to string pattern searches." + "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures.\n", + "Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself." ] }, { @@ -576,7 +573,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -604,7 +601,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -643,7 +640,7 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7ad00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407f760>\n", " False\n", " \n", " \n", @@ -652,7 +649,7 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7ad50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407f7b0>\n", " False\n", " \n", " \n", @@ -665,15 +662,15 @@ "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", " Failed_at mol \\\n", - "202 2 \n", - "203 2 \n", + "202 2 \n", + "203 2 \n", "\n", " Carbon_present \n", "202 False \n", "203 False " ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -706,7 +703,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -735,7 +732,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -766,7 +763,6 @@ " mol\n", " Carbon_present\n", " Inorganics\n", - " mixture\n", " \n", " \n", " \n", @@ -776,10 +772,9 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060bfb760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b40fe8a0>\n", " True\n", " True\n", - " None\n", " \n", " \n", " 114\n", @@ -787,10 +782,9 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7d1c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407ac10>\n", " True\n", " True\n", - " None\n", " \n", " \n", " 200\n", @@ -798,10 +792,9 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7ac60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407f6c0>\n", " True\n", " True\n", - " None\n", " \n", " \n", " 201\n", @@ -809,10 +802,9 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060b7acb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407f710>\n", " True\n", " True\n", - " None\n", " \n", " \n", "\n", @@ -826,19 +818,19 @@ "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", "\n", " Failed_at mol \\\n", - "0 3 \n", - "114 3 \n", - "200 3 \n", - "201 3 \n", + "0 3 \n", + "114 3 \n", + "200 3 \n", + "201 3 \n", "\n", - " Carbon_present Inorganics mixture \n", - "0 True True None \n", - "114 True True None \n", - "200 True True None \n", - "201 True True None " + " Carbon_present Inorganics \n", + "0 True True \n", + "114 True True \n", + "200 True True \n", + "201 True True " ] }, - "execution_count": 12, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -860,7 +852,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -886,7 +878,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -927,7 +919,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fc060c0e580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e080>\n", " True\n", " False\n", " True\n", @@ -941,13 +933,13 @@ "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 4 \n", "\n", " mol Carbon_present Inorganics \\\n", - "5 True False \n", + "5 True False \n", "\n", " mixture \n", "5 True " ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -965,93 +957,85 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# Setting up the task_number\n", - "task_number = 4\n", - "# getting the valid entries from the step before\n", - "# Load result1 subset to actually see this step perform\n", - "dataset = result3[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", - "\n", - "# Create Smiles for evaluation\n", - "dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", - "\n", - "# Perform disconnect_metals on entries\n", - "dataset[\"mol_after\"] = dataset[\"mol\"].apply(disconnect_metals)\n", - "\n", - "# Create new SMILEs from the current state for evaluation of performed changes\n", - "dataset[\"Smiles 4\"] = dataset[\"mol_after\"].apply(convert_format.convert_mol_to_smiles)\n", - "dataset[\"noChanges\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 4\"]\n", + "task_number = 5\n", "\n", - "# Filter the failed entries\n", - "failed_step_4 = dataset[dataset[\"noChanges\"] == False]\n", - "failed_step_4[\"Failed_at\"] = failed_step_4[\"Failed_at\"].apply(\n", - " lambda x, task_number=task_number: task_number\n", + "# Check for metals\n", + "dataset[\"metals\"] = dataset.apply(\n", + " lambda row: detect_metals(row.mol) if row.Failed_at == 0 else None,\n", + " axis=1,\n", ")\n", - "failed_step_4 = failed_step_4[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", - "failed_step_4.tail()\n", "\n", - "# Safe entries that passed\n", - "result4 = dataset[dataset[\"noChanges\"] == True]\n", - "result4 = result4[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\", \"noChanges\"]]\n", - "result4.tail()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Show the subset of all failed entries\n", - "failed_step_4.head(16)" + "# Add task_number to failed entries\n", + "dataset.loc[dataset[\"mixture\"] == True, [\"Failed_at\"]] = task_number" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 5: Filter inorganics again \n", - "This step actually doesn't make much sense here, since no actual changes happend to the entries in this first step, but the paper states that we do that. Maybe if we wish to keep the failed subsets and actually perform the modifications they need?\n" + "Below you can see all entries, containing metals" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, - "outputs": [], - "source": [ - "# Setting up the task_number\n", - "task_number = 5\n", - "# getting the valid entries from the step before\n", - "dataset = result4\n", - "\n", - "# Check for inorganic structures in the entries\n", - "dataset[\"Inorganics2\"] = dataset[\"mol\"].apply(detect_inorganic)\n", - "\n", - "# Filter the failed entries\n", - "failed_step_5 = dataset[dataset[\"Inorganics2\"] == True]\n", - "failed_step_5[\"Failed_at\"] = failed_step_5[\"Failed_at\"].apply(\n", - " lambda x, task_number=task_number: task_number\n", - ")\n", - "failed_step_5 = failed_step_5[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", - "\n", - "# Safe entries that passed\n", - "result5 = dataset[dataset[\"Inorganics2\"] == False]\n", - "result5 = result5[[\"IDs\", \"Names\", \"SMILEs\", \"Failed_at\", \"mol\"]]\n", - "result5.tail(15)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFailed_atmolCarbon_presentInorganicsmixturemetals
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [IDs, Names, SMILEs, Failed_at, mol, Carbon_present, Inorganics, mixture, metals]\n", + "Index: []" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Show the subset of all failed entries\n", - "failed_step_5.head()" + "dataset[dataset[\"Failed_at\"] == 4]" ] }, { @@ -1061,7 +1045,7 @@ "### Step 3: Structural Conversion and Cleaning\n", "--------------------------------------------------\n", "\n", - "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not beeing desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", + "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not being desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", "In case that we want to continue working on the converted records, we should perform the following steps:\n", "- check if records contain compounds with presence of metals --> difficult case, filter out (already done this - one step ahead)\n", "- removing the salts from the record\n", From a6ee7d3c11a6e72a33327e7385e70ac9f1eb98df Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 9 May 2021 11:32:41 +0200 Subject: [PATCH 41/55] checked docstring --- opencadd/compounds/standardization/detect_inorganics.py | 2 +- opencadd/compounds/standardization/detect_metals.py | 2 +- opencadd/compounds/standardization/detect_mixtures.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opencadd/compounds/standardization/detect_inorganics.py b/opencadd/compounds/standardization/detect_inorganics.py index 310b2a5b..5c31734a 100644 --- a/opencadd/compounds/standardization/detect_inorganics.py +++ b/opencadd/compounds/standardization/detect_inorganics.py @@ -1,5 +1,5 @@ """ -This module detects all inorganic substructures. +This module detects inorganic substructures. """ import logging from rdkit import Chem diff --git a/opencadd/compounds/standardization/detect_metals.py b/opencadd/compounds/standardization/detect_metals.py index 5626d6de..f1c414c9 100644 --- a/opencadd/compounds/standardization/detect_metals.py +++ b/opencadd/compounds/standardization/detect_metals.py @@ -1,5 +1,5 @@ """ -This module detects all metals. +This module detects metals. """ import logging from rdkit import Chem diff --git a/opencadd/compounds/standardization/detect_mixtures.py b/opencadd/compounds/standardization/detect_mixtures.py index cf21a694..fa712324 100644 --- a/opencadd/compounds/standardization/detect_mixtures.py +++ b/opencadd/compounds/standardization/detect_mixtures.py @@ -1,5 +1,5 @@ """ -This module detects all mixtures. +This module detects mixtures. """ import logging from rdkit import Chem From aa9385e2532f39b0c9930b5479464a9e49914f92 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 9 May 2021 11:33:13 +0200 Subject: [PATCH 42/55] new function detect salts --- .../compounds/standardization/__init__.py | 1 + .../compounds/standardization/detect_salts.py | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 opencadd/compounds/standardization/detect_salts.py diff --git a/opencadd/compounds/standardization/__init__.py b/opencadd/compounds/standardization/__init__.py index bd00fa63..34ec337d 100644 --- a/opencadd/compounds/standardization/__init__.py +++ b/opencadd/compounds/standardization/__init__.py @@ -17,3 +17,4 @@ from .validate_molecules import * from .detect_mixtures import * from .detect_metals import * +from .detect_salts import * diff --git a/opencadd/compounds/standardization/detect_salts.py b/opencadd/compounds/standardization/detect_salts.py new file mode 100644 index 00000000..8a277568 --- /dev/null +++ b/opencadd/compounds/standardization/detect_salts.py @@ -0,0 +1,49 @@ +""" +This module detects salts. +""" +import logging +from rdkit import Chem +from rdkit.Chem.MolStandardize import rdMolStandardize +from rdkit import RDLogger + +from .remove_salts import remove_salts + +RDLogger.DisableLog('rdApp.info') + +__all__ = ["detect_salts"] + + +def _validation_smiles(mol): + """Utility function that converts a mol to SMILES for later validation. + """ + validation_smiles = Chem.MolToSmiles(mol) + return validation_smiles + + +def detect_salts(mol, *args, **kwargs): + """Detects salts. + + Generates a SMILES out of the entered mol for validation, performs fragment + removal, turns the changed mol into another SMILES and validates it with the + first SMILES created. + + Parameters + ---------- + mol: rdkit.Chem.Mol + The molecule which has to be searched for non-organic + substructures. + + Returns + ------- + boolean: bool + Returns if the stucture contains a salt (True), + or not (False). + """ + + smiles_before = _validation_smiles(mol) + mol_without_fragment = remove_salts(mol) + smiles_after = _validation_smiles(mol_without_fragment) + if smiles_before == smiles_after: + return False + else: + return True From 34803e114f13ef4b0c4348b8d1cfc094022d4d2e Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 9 May 2021 11:34:01 +0200 Subject: [PATCH 43/55] prior changes broke the function, fixed now --- opencadd/compounds/standardization/remove_salts.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/opencadd/compounds/standardization/remove_salts.py b/opencadd/compounds/standardization/remove_salts.py index f39288a8..a70ace3d 100644 --- a/opencadd/compounds/standardization/remove_salts.py +++ b/opencadd/compounds/standardization/remove_salts.py @@ -69,13 +69,11 @@ def remove_salts(mol, dictionary=True, *args, **kwargs): i += 1 remover = SaltRemover(defnData=salt) stripped_mol = remover.StripMol(mol) - if stripped_mol.GetNumAtoms() == 0: - print(test) - break test_smiles = Chem.MolToSmiles(stripped_mol) if test_smiles != test: logging.debug("Following salt was stripped: %s", salt_name) mol = stripped_mol + continue else: mol = SaltRemover(*args, **kwargs).StripMol(mol) From 7cce5aec71dbb5d59e56e219a0cf6f1d127134f6 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Mon, 10 May 2021 01:14:49 +0200 Subject: [PATCH 44/55] more test entries added --- docs/tutorials/data/standardization_test_data.csv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/tutorials/data/standardization_test_data.csv b/docs/tutorials/data/standardization_test_data.csv index 6d76d195..fee19e99 100644 --- a/docs/tutorials/data/standardization_test_data.csv +++ b/docs/tutorials/data/standardization_test_data.csv @@ -203,4 +203,5 @@ IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS 202,hemoglobin,CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=N5)C=C1N2)C=C)C)C)CCC(=O)[O-])C(=C3C)CCC(=O)O)C=C.[Fe+2],0,0,0 203,test_salt,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 204,test_duplicate,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 -205,no_smiles_test,,0,0,0 \ No newline at end of file +205,no_smiles_test,,0,0,0 +206,covalent_metal,CCC(=O)O[Na],0,0,0 \ No newline at end of file From 42eae99602ec4c8ac4a3e2e90309f86250d48752 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Mon, 10 May 2021 01:16:15 +0200 Subject: [PATCH 45/55] reviewed to task 7...not finished --- docs/tutorials/standardization.ipynb | 1578 +++++++++++++++++++------- 1 file changed, 1177 insertions(+), 401 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index b46a662e..d9c7460c 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -5,6 +5,7 @@ "metadata": {}, "source": [ "# Implementation and evaluation of a computational standardization pipeline for chemical compounds\n", + "--------------------------------------------------------------\n", "\n", "> Based on [\"Trust, But Verify: On the Importance of Chemical Structure Curation in Cheminformatics and QSAR Modeling Research\" from 2010 (D. Fourches, ...)\"](https://pubmed.ncbi.nlm.nih.gov/20572635/)\n", "\n", @@ -17,14 +18,45 @@ "source": [ "### Introduction \n", "\n", - "This notebook serves to showcase the functionality of the `opencadd.compounds.standardization` subpackage. \n", + "This notebook serves to display the functionality of the `opencadd.compounds.standardization` subpackage. \n", "\n", - "We are following the recommended standardization steps of \"Trust, But Verify\"(Fourches et al., 2010), and using the dataset of the following paper: [Cheminformatics Analysis of Assertions Mined from Literature That Describe Drug-Induced Liver Injury in Different Species](https://pubs.acs.org/doi/10.1021/tx900326k)." + "We are following the recommended standardization steps of [\"Trust, But Verify\" (Fourches et al., 2010)](https://pubmed.ncbi.nlm.nih.gov/20572635/), and using a modified¹ version of the dataset from the following paper: [Cheminformatics Analysis of Assertions Mined from Literature That Describe Drug-Induced Liver Injury in Different Species](https://pubs.acs.org/doi/10.1021/tx900326k).\n", + "\n", + "¹ We added some entries to trigger curation steps not covered by the original data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Overview over the pipeline\n", + "------------------------------------------\n", + "\n", + "This pipeline has **five** main steps:\n", + "1. Structural Conversion\n", + "2. Filtering of Inorganics and Mixtures\n", + "3. Structural Cleaning \n", + "4. Normalization of Specific Chemotypes\n", + "5. Removal of Duplicates\n", + "\n", + "Each step consists of action performing tasks on the dataset.
\n", + "Actions are:\n", + "- filtering\n", + "- cleaning\n", + "- normalizing\n", + "\n", + "**Filtering** actions will result in a score applied to the entries. The score is the number of the filtering task. You can use it to select subsets of the dataset sorting by the column **Filtered_at**.\n", + "\n", + "**Cleaning** actions will result in a modification of the mol-representation of the entry, overwriting with the recent version calculated in the task. You can use it to select subsets of the dataset sorting by the column **Cleaned_at**.\n", + "\n", + "**Normalizing** actions also will result in a modification of the mol-representation of the entry.You can use it to select subsets of the dataset sorting by the column **Normalized_at**.\n", + "\n", + "At the end of the script, there is the possibility to export subsets of the dataset as a CSV. " ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -48,7 +80,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -56,10 +88,7 @@ "import pandas as pd\n", "import numpy as np\n", "\n", - "# import modules and Standardization API functions needed\n", - "from rdkit import Chem\n", - "\n", - "# from rdkit.Chem.PandasTools import RemoveSaltsFromFrame\n", + "# Importing functions from the standardization API\n", "from opencadd.compounds.standardization import (\n", " convert_format,\n", " handle_fragments,\n", @@ -71,6 +100,8 @@ " validate_molecules,\n", " detect_mixtures,\n", " detect_metals,\n", + " detect_salts,\n", + " handle_charges,\n", ")" ] }, @@ -80,198 +111,75 @@ "source": [ "### Initial dataset import and cleaning of empty entries\n", "------------------------------------------------\n", - "The first step before the standardization steps are started is a import of the dataset as an Pandas Dataframe, only including the columns necessary. In this case we use the IDs, Names and SMILEs column.
\n", - "Then we search for all entries which actually don't have any strings saved under SMILEs and kick them from the dataset, since they are not holding any information.
\n", - "After the import we add a Failed_at column to track in which standardization step the entry failed. \n", - "The intial `task_number` will be 0, which leads to an default Failed_at-value of 0 for all entries, where null stands for not failed . " + "Before any curation steps are can be applied, we need to import the dataset as a Pandas Dataframe.
\n", + "At this point you have the possibility to select the columns you need for the curation process. For our example dataset we will use columns IDs, Names and SMILEs.
\n", + "After that, we search for all entries which have empty strings saved under SMILEs and remove them from the dataset.
\n", + "After the import, we add a Filtered_at column to track which standardization step filtered the entry. \n", + "The initial `task_number` will be 0, which leads to a default Filtered_at-value of 0 for all entries, where null stands for all the entries that passed without any filtering. " ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFailed_at
194195CinoxacinCCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc120
195196CiprofibrateCC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O0
196197CiprofloxacinOC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O0
197198CisaprideCOC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c...0
198199CitalopramCN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc10
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O0
200201zirconiumCCO[Zr](OCC)(OCC)OCC0
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...0
202203test_salt[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....0
203204test_duplicate[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....0
\n", - "
" - ], - "text/plain": [ - " IDs Names SMILEs \\\n", - "194 195 Cinoxacin CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12 \n", - "195 196 Ciprofibrate CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O \n", - "196 197 Ciprofloxacin OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O \n", - "197 198 Cisapride COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)c... \n", - "198 199 Citalopram CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1 \n", - "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O \n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", - "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", - "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "\n", - " Failed_at \n", - "194 0 \n", - "195 0 \n", - "196 0 \n", - "197 0 \n", - "198 0 \n", - "199 0 \n", - "200 0 \n", - "201 0 \n", - "202 0 \n", - "203 0 " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "task_number = 0\n", "\n", - "# Importing the test-dataset\n", + "# Import test-dataset\n", "dataset = pd.read_csv(HERE / \"data\" / \"standardization_test_data.csv\")\n", "\n", - "# Filter for needed columns\n", + "# Filter columns\n", "dataset = dataset[[\"IDs\", \"Names\", \"SMILEs\"]]\n", "\n", - "# Kick all empty entries\n", - "empty_smiles = dataset[(dataset[\"SMILEs\"].isnull())]\n", - "\n", - "# The empty_smiles dataframe could be used to check which entires are affected and review the dataset again.\n", + "# Delete empty entries from the main set.\n", "dataset = dataset[(dataset[\"SMILEs\"].notna())]\n", "\n", - "# Setting a initial score of 0 for all entries in the 'Failed_at'-column\n", - "dataset[\"Failed_at\"] = dataset[\"SMILEs\"].apply(\n", + "# Initializing the score to null at the 'Filtered_at'-column\n", + "dataset[\"Filtered_at\"] = dataset[\"SMILEs\"].apply(\n", " lambda x, task_number=task_number: task_number\n", ")\n", "\n", + "# Reset the index to correct the deletion of the empty entries\n", "dataset = dataset.reset_index(drop=True)\n", - "# Show the current form of the main-dataframe\n", - "dataset.tail(10)" + "\n", + "# [Optional] Display empty entries for manual inspection.\n", + "# dataset[(dataset[\"SMILEs\"].isnull())]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 1: Conversion of SMILEs to mol\n", + "### Step 1: Structural Converison\n", "------------------------------------------\n", "\n", "__Convert the SMILES representation format of the compounds into Mol-files__\n", "\n", - "RDKit performs a sanitization of the molecule by default. In this sanitization step RDKit tries to kekulize the mols (generates alternate Lewis structures). This step might fail, when the structure is aromatic, but no Hydrogen position is provided. \n", + "RDKit performs a sanitization of molecules converted to mol by default.
\n", + "In addition to some Nitro and Perchlorate transformations the following steps are taken²:\n", + "\n", "\n", - "> TODO: !(This explanation might be a bit short and not fully correct, check this later again)!\n", + "- Calculate explicit and implicit valence of all atoms. Fails when atoms have illegal valence.\n", + "- Calculate symmetrized SSSR. The slowest step fails in rare cases.\n", + "- Kekulize. Fails if a Kekule form cannot be found or non-ring bonds are marked as aromatic.\n", + "- Assign radicals if hydrogens set and bonds+hydrogens+charge < valence.\n", + "- Set aromaticity, if none set in input. Go round rings, Huckel rule to set atoms+bonds as aromatic.\n", + "- Set a conjugated property on bonds where applicable.\n", + "- Set hybridization property on atoms.\n", + "- Remove chirality markers from sp and sp2 hybridized centers.\n", "\n", - "If the conversion from SMILE to mol fails, then those SMILEs will get a **Failed_at** marker added. \n", + "If the conversion from SMILE to mol fails, then those SMILEs will get a **Filtered_at** marker added. \n", "\n", - "To avoid the sanitization of the molecule `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find different representation formats of the same molecule. \n", + "To avoid molecule sanitization `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find alternative representation formats of the same molecule. \n", "\n", "References:\n", "\n", + "² https://molvs.readthedocs.io/en/latest/guide/standardize.html?highlight=sanitize#rdkit-sanitize\n", "* https://chemistry.stackexchange.com/questions/116498/what-is-kekulization-in-rdkit\n", "* https://rdkit-discuss.narkive.com/QwnqcKcM/another-can-t-kekulize-mol-observation\n", "* https://www.rdkit.org/docs/Cookbook.html\n", - "* https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html\n" + "* https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html" ] }, { @@ -283,26 +191,26 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [18:52:44] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n" ] }, @@ -330,7 +238,7 @@ " IDs\n", " Names\n", " SMILEs\n", - " Failed_at\n", + " Filtered_at\n", " mol\n", " \n", " \n", @@ -341,7 +249,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b40fe8a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df7280490>\n", " \n", " \n", " 1\n", @@ -349,7 +257,7 @@ " 17-Methyltestosterone\n", " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bf80>\n", " \n", " \n", " 2\n", @@ -357,7 +265,7 @@ " 1-alpha-Hydroxycholecalciferol\n", " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e1c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df727ba80>\n", " \n", " \n", " 3\n", @@ -365,7 +273,7 @@ " 2,3-Dimercaptosuccinic acid\n", " OC(=O)C(S)C(S)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bee0>\n", " \n", " \n", " 4\n", @@ -373,7 +281,7 @@ " 2,4,6-Trinitrotoluene\n", " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bb70>\n", " \n", " \n", " 5\n", @@ -381,7 +289,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bda0>\n", " \n", " \n", " 6\n", @@ -389,7 +297,7 @@ " 2'-fluoro-5-methylarabinosyluracil\n", " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e0d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bc60>\n", " \n", " \n", " 7\n", @@ -397,7 +305,7 @@ " 2-Methoxyestradiol\n", " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bcb0>\n", " \n", " \n", " 8\n", @@ -405,7 +313,7 @@ " 4-aminobenzoic acid\n", " Nc1ccc(cc1)C(O)=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e3a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bd50>\n", " \n", " \n", " 9\n", @@ -413,7 +321,7 @@ " 4-Hydroxytamoxifen\n", " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e3f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bd00>\n", " \n", " \n", " 10\n", @@ -421,7 +329,7 @@ " 5 fluorouracil\n", " FC1=CNC(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b990>\n", " \n", " \n", " 11\n", @@ -429,7 +337,7 @@ " 5-Azacitidine\n", " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b940>\n", " \n", " \n", " 12\n", @@ -437,7 +345,7 @@ " 5-Bromouracil\n", " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b440>\n", " \n", " \n", " 13\n", @@ -445,7 +353,7 @@ " 5-fluoro-2'-deoxyuridine\n", " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b580>\n", " \n", " \n", " 14\n", @@ -461,7 +369,7 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b8f0>\n", " \n", " \n", "\n", @@ -486,44 +394,44 @@ "14 15 6-Mercaptopurine \n", "15 16 Acadesine \n", "\n", - " SMILEs Failed_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", - "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", - "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", - "8 Nc1ccc(cc1)C(O)=O 0 \n", - "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", - "10 FC1=CNC(=O)NC1=O 0 \n", - "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", - "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", - "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", - "14 Sc1ncnc2[nH]c[nH]c12 1 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + " SMILEs Filtered_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", + "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", + "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", + "8 Nc1ccc(cc1)C(O)=O 0 \n", + "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", + "10 FC1=CNC(=O)NC1=O 0 \n", + "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", + "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", + "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", + "14 Sc1ncnc2[nH]c[nH]c12 1 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", "14 None \n", - "15 " + "15 " ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -536,7 +444,7 @@ "dataset[\"mol\"] = dataset.loc[:, (\"SMILEs\")].apply(convert_format.convert_smiles_to_mol)\n", "\n", "# Add task_number to failed entries\n", - "dataset.loc[dataset[\"mol\"].isnull(), [\"Failed_at\"]] = task_number\n", + "dataset.loc[dataset[\"mol\"].isnull(), [\"Filtered_at\"]] = task_number\n", "\n", "dataset.head(16)" ] @@ -545,20 +453,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2: Removal of Inorganics and Mixtures\n", + "### Step 2: Filtering of Inorganics and Mixtures\n", "--------------------------------------------------\n", "\n", - "Since most cheminformatical applications are not capable of processing inorganic structures, there is the need for a removal of those entries, prior to any processing.
\n", - "This is divided into two steps:
\n", + "Since most cheminformatics applications are not capable of processing inorganic structures, there is a need to remove those entries before any processing.
\n", + "Detecting inorganic structures is divided into two steps:
\n", "First removing all entries not containing any Carbon at all, which are therefore not organic.
\n", - "Secondly filtering out all compounds with inorganic substructures.
\n", + "Secondly, filtering out all compounds with inorganic substructures.
\n", "\n", - "Similar problems occur for mixtures. Since most applications can not calculate descriptors for mixtures, a filtering has to happen prior to any processing.
\n", - "Additionally, since \"*inorganic compounds are known to have biological effects, like for example toxic effects*\" (Fourches 2010), we can often not distinguish if the recored activity of a mixed compound is caused by it's organic or inorganic part. Therefore the entry is useless and can be discarded. \n", + "Similar problems occur for mixtures. Since most applications can not calculate descriptors for mixtures, filtering has to happen before processing.
\n", + "Additionally, since \"*inorganic compounds are known to have biological effects, like toxic effects*\" (Fourches 2010), we can often not distinguish if its organic or inorganic part causes the recorded activity of a mixed compound. Therefore the entry is useless and can be discarded. \n", "\n", "\n", - "Due to the fact, that the treatment is not as simple as it apprears the paper (Fourches, 2010) recommends to delete records containing mixtures.\n", - "Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms(Chapter 2.1. Fourches 2010), but the paper (Fourches, 2010) states this might not be the best solution, and further investigation in mixtures should only be done if there is a reason to belive that the biological activity is really caused by the largest molecule and not the mixture itself." + "Since the treatment is not as simple as it appears, the paper recommends deleting records containing mixtures.\n", + "Common and widely used practice is to retain molecules with the highest molecular weight or the largest number of atoms. Still, the paper states this might not be the best solution, and investigation in mixtures should only happen if there is a reason to believe the largest molecule and not the mixture itself is causing the biological activity." ] }, { @@ -567,13 +475,12 @@ "source": [ "#### Task 2: Filter entries without Carbon\n", "\n", - "To determine if a entry is a organic molecule, it obivious first task is to check for the presence of carbon. Therefore the `detect_carbon` function can be used. It checks for the presence of carbon atoms. If the functions finds at least one Carbon atom, it returns a boolean value of **True**, if not a value of **False**. All entries that return **False** will get a the number of the current task (2) written into the *Failed_at* column.\n", - "All entries that already have failed in another step won't the considered in this step, since they are already disqualified for further analysis." + "The first task to determine if an entry is an organic molecule is to check for the presence of Carbon. `detect_carbon` is a function able to do this. It searches for the existence of carbon atoms. If the function finds at least one Carbon atom, it returns a boolean value of **True**, if not **False**. All entries that return **False** will get the current task number (2) assigned into the *Filtered_at* column.\n" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -583,25 +490,25 @@ "# Check for Carbon\n", "dataset[\"Carbon_present\"] = dataset.apply(\n", " lambda row: detect_inorganics.detect_carbon(row.mol)\n", - " if row.Failed_at == 0\n", + " if row.Filtered_at == 0\n", " else None,\n", " axis=1,\n", ")\n", "\n", "# Add task_number to failed entries\n", - "dataset.loc[dataset[\"Carbon_present\"] == False, [\"Failed_at\"]] = task_number" + "dataset.loc[dataset[\"Carbon_present\"] == False, [\"Filtered_at\"]] = task_number" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Below you can see all entries, that don't contain any Carbon and thereby it can be assumed that they are inorganic molecules." + "Below you can see all entries that do not contain any Carbon and thereby are inorganic molecules." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -628,7 +535,7 @@ " IDs\n", " Names\n", " SMILEs\n", - " Failed_at\n", + " Filtered_at\n", " mol\n", " Carbon_present\n", " \n", @@ -640,7 +547,7 @@ " test_salt\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407f760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df7248850>\n", " False\n", " \n", " \n", @@ -649,7 +556,7 @@ " test_duplicate\n", " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407f7b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df72488a0>\n", " False\n", " \n", " \n", @@ -661,22 +568,22 @@ "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", "\n", - " Failed_at mol \\\n", - "202 2 \n", - "203 2 \n", + " Filtered_at mol \\\n", + "202 2 \n", + "203 2 \n", "\n", " Carbon_present \n", "202 False \n", "203 False " ] }, - "execution_count": 8, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dataset[dataset[\"Failed_at\"] == 2]" + "dataset[dataset[\"Filtered_at\"] == 2]" ] }, { @@ -685,17 +592,18 @@ "source": [ "#### Task 3: Filter entries with inorganic components\n", "\n", - "While we filtered out all molecules not containing any Carbon, now we further inspect the entries for elements which can not or only rarely occur in organic molecules or are contained by them. This might vary a bit depending on the defenition and scope. For this we can use the `detect_inorganic` function.\n", - "It is recommended to check what can be handled by software for later use of the dataset. A customization of the allowed elements in `detect_inorganic` is possible, and can easily be provided by a set of SMARTS, as described shortly further below. \n", - "As the default set of accepted elements in a organic molecule Hydrogen, Carbon, Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Selenium, Bromine, Iodine (nonmetals and halogenes) were chosen.
\n", - "*While Astatine and Tennessine are also considered halogenes, they are not included due to their radioactivity and rarity.*\n", + "While we filtered out all molecules not containing any Carbon, now we further inspect the entries for elements that do not occur in organic molecules. The elements that might fall into here might vary slightly depending on the definition and scope. `detect_inorganic` is a suitable function for this task.\n", + "A recommendation is to check which elements can be managed by the software later used. Customization of the allowed elements in `detect_inorganic` can easily be provided by a set of SMARTS, as described shortly below. \n", + "The default set of accepted elements in an organic molecule are Hydrogen, Carbon, Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Selenium, Bromine, Iodine (nonmetals and halogens).
\n", + "*While Astatine and Tennessine are also considered halogens, they are not included due to their radioactivity and rarity.*\n", "
\n", "\n", "\n", - "###### An example on how a custom set can be setup and how it can be used \n", + "###### An example of how to set up a custom set of elements and implement them in `detect_inorganic` \n", "-----------------------------------------------------------------------------------------------------------\n", "Defining a set:
\n", - "`elements = Chem.MolFromSmarts(\"[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#35&!#53]\")`\n", + "`elements = Chem.MolFromSmarts(\"[!#1&!#6&!#7&!#8&!#9&!#15&!#16&!#17&!#35&!#53]\")`
\n", + "(If you want to run this, import the following before: from rdkit import Chem)\n", "\n", "Pass the set as a parameter, where the `detect_inorganic` function is getting called:
\n", "`lambda row: detect_inorganics.detect_inorganic(row.mol, elements)`" @@ -703,7 +611,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -714,25 +622,25 @@ "# Check for inorganic structures\n", "dataset[\"Inorganics\"] = dataset.apply(\n", " lambda row: detect_inorganics.detect_inorganic(row.mol)\n", - " if row.Failed_at == 0\n", + " if row.Filtered_at == 0\n", " else None,\n", " axis=1,\n", ")\n", "\n", "# Add task_number to failed entries\n", - "dataset.loc[dataset[\"Inorganics\"] == True, [\"Failed_at\"]] = task_number" + "dataset.loc[dataset[\"Inorganics\"] == True, [\"Filtered_at\"]] = task_number" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Below you can see all entries, that contain other than our allowed elements.(Hydrogen, Carbon, Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Selenium, Bromine, Iodine)" + "Below you can see all entries that contain other than our allowed elements. (Hydrogen, Carbon, Nitrogen, Oxygen, Fluorine, Phosphorus, Sulfur, Chlorine, Selenium, Bromine, Iodine)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -759,7 +667,7 @@ " IDs\n", " Names\n", " SMILEs\n", - " Failed_at\n", + " Filtered_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", @@ -772,7 +680,7 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b40fe8a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df7280490>\n", " True\n", " True\n", " \n", @@ -782,7 +690,7 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407ac10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df7245d00>\n", " True\n", " True\n", " \n", @@ -792,7 +700,7 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407f6c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df72487b0>\n", " True\n", " True\n", " \n", @@ -802,7 +710,17 @@ " hemoglobin\n", " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b407f710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df7248800>\n", + " True\n", + " True\n", + " \n", + " \n", + " 204\n", + " 206\n", + " covalent_metal\n", + " CCC(=O)O[Na]\n", + " 3\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df72488f0>\n", " True\n", " True\n", " \n", @@ -816,27 +734,30 @@ "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", + "204 206 covalent_metal CCC(=O)O[Na] \n", "\n", - " Failed_at mol \\\n", - "0 3 \n", - "114 3 \n", - "200 3 \n", - "201 3 \n", + " Filtered_at mol \\\n", + "0 3 \n", + "114 3 \n", + "200 3 \n", + "201 3 \n", + "204 3 \n", "\n", " Carbon_present Inorganics \n", "0 True True \n", "114 True True \n", "200 True True \n", - "201 True True " + "201 True True \n", + "204 True True " ] }, - "execution_count": 10, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dataset[dataset[\"Failed_at\"] == 3]" + "dataset[dataset[\"Filtered_at\"] == 3]" ] }, { @@ -845,14 +766,12 @@ "source": [ "#### Task 4: Filter entries containing mixtures\n", "\n", - "Since mixtures appear in encoding formats, like SMILES strings, where various molecules can be stored in one entry, but many applications can not handle mixtures as descriptors, they also need to be filtered out.\n", - "Some mixtures can be used, when it can be clearly identified, that the recored activity originates from them and common fragments, without bioactivity are known, but prior to any action on the entries with mixtures, those have to be identified.\n", - "This will be archived with the function `detect_mixtures` as shown below." + "We will use the function `detect_mixtures` as shown below for the filtering of mixtures." ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -861,24 +780,24 @@ "\n", "# Check for inorganic structures\n", "dataset[\"mixture\"] = dataset.apply(\n", - " lambda row: detect_mixtures(row.mol) if row.Failed_at == 0 else None,\n", + " lambda row: detect_mixtures(row.mol) if row.Filtered_at == 0 else None,\n", " axis=1,\n", ")\n", "\n", "# Add task_number to failed entries\n", - "dataset.loc[dataset[\"mixture\"] == True, [\"Failed_at\"]] = task_number" + "dataset.loc[dataset[\"mixture\"] == True, [\"Filtered_at\"]] = task_number" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Below you can see all entries, that are mixtures." + "Below you can see all entries that are mixtures." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -905,7 +824,7 @@ " IDs\n", " Names\n", " SMILEs\n", - " Failed_at\n", + " Filtered_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", @@ -919,7 +838,7 @@ " 2-Deoxy-D-glucose\n", " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7fb0b410e080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bda0>\n", " True\n", " False\n", " True\n", @@ -929,35 +848,70 @@ "
" ], "text/plain": [ - " IDs Names SMILEs Failed_at \\\n", - "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 4 \n", + " IDs Names SMILEs Filtered_at \\\n", + "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 4 \n", "\n", " mol Carbon_present Inorganics \\\n", - "5 True False \n", + "5 True False \n", "\n", " mixture \n", "5 True " ] }, - "execution_count": 12, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dataset[dataset[\"Failed_at\"] == 4]" + "dataset[dataset[\"Filtered_at\"] == 4]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 5: Filter entries containing metals" + "### Step 3: Structural Cleaning \n", + "--------------------------------------------------\n", + "\n", + "\"Some drugs need to be transformed \"into their salt form to enhance how the drug dissolves (...) and (to) increase its effectiveness.\"³ Therefore it is common for chemical compound databases to contain records of salts. If possible, a suggestion is to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010). While not desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered, and afterward manually curated or compared to the concrete neutral form of that compound. \n", + "In case that we want to continue working on the converted records, we should perform the following steps:\n", + "- check if records contain compounds with the presence of metals\n", + "- removing the salts from the record\n", + "- neutralize the record (normalization or essential standardization)\n", + "- neutralize the charges\n", + "\n", + "\n", + "³ (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21))" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Structural coversion\n", + "# Cleaning/removal of salts\n", + "# Functions remove_salts\n", + "# normalize_molecules\n", + "# handle_charges\n", + "# handle_hydrogens" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 5: Filter entries containing metals\n", + "\n", + "Entries can contain metals in different forms. Either as a regular compound in a mixture or as a counterion.
In the following steps, we search for those metals. When they are a counterion, we disconnect them from the non-metals they are bonding. \n", + "We might not find any metals due to previous filtering steps detecting mixtures and inorganics. Therefore we could search in the flagged entries and clean those entries later on. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -966,24 +920,24 @@ "\n", "# Check for metals\n", "dataset[\"metals\"] = dataset.apply(\n", - " lambda row: detect_metals(row.mol) if row.Failed_at == 0 else None,\n", + " lambda row: detect_metals(row.mol) if row.Filtered_at == 0 else None,\n", " axis=1,\n", ")\n", "\n", "# Add task_number to failed entries\n", - "dataset.loc[dataset[\"mixture\"] == True, [\"Failed_at\"]] = task_number" + "dataset.loc[dataset[\"metals\"] == True, [\"Filtered_at\"]] = task_number" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Below you can see all entries, containing metals" + "Below you can see all entries containing metals. We didn't find any entries in our filtered set, as already assumed." ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -1010,7 +964,7 @@ " IDs\n", " Names\n", " SMILEs\n", - " Failed_at\n", + " Filtered_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", @@ -1025,155 +979,956 @@ ], "text/plain": [ "Empty DataFrame\n", - "Columns: [IDs, Names, SMILEs, Failed_at, mol, Carbon_present, Inorganics, mixture, metals]\n", + "Columns: [IDs, Names, SMILEs, Filtered_at, mol, Carbon_present, Inorganics, mixture, metals]\n", "Index: []" ] }, - "execution_count": 20, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dataset[dataset[\"Failed_at\"] == 4]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 3: Structural Conversion and Cleaning\n", - "--------------------------------------------------\n", - "\n", - "Some drugs need to be transformed \"into their salt form to enhance how the drug disscolves (...) and (to) increase it's effectiveness. (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21)) Therefore it is common for chemical compound databases to contain records of salts. If possible it is recommended to delete the records containing salts completely, since, similar to in-organic compounds, \"most descriptor-generating software (can not process salts)\" (Fourches 2010 Chapter 2.2 ).While not being desirable, it is still an acceptable procedure to convert compounds into their neutral forms. But cases like this should be tagged, filtered and afterwards manually curated or compared to the actual neutral form of that compound. \n", - "In case that we want to continue working on the converted records, we should perform the following steps:\n", - "- check if records contain compounds with presence of metals --> difficult case, filter out (already done this - one step ahead)\n", - "- removing the salts from the record\n", - "- neutralize the record (normalization or basic standardization)\n", - "- neutralize the charges\n", - "- to be discussed: the adding/removing of hydrogens, both got pros and cons (pro addingH --> higher prediction performances / con addingH --> may introduce noise --> less reliable models)(removingH might introduce erros in calculating descriptors, due to it might not handle certain cases well)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Structural coversion\n", - "# Cleaning/removal of salts\n", - "# Functions remove_salts\n", - "# normalize_molecules\n", - "# handle_charges\n", - "# handle_hydrogens" + "dataset[dataset[\"Filtered_at\"] == 5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 6: Removing salts " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Setting up the task_number\n", - "task_number = 6\n", - "# getting the valid entries from the step before\n", - "dataset = result1 # Load results 1 here, to see the functionality, 'cause all entries containing salts, have already been filtered by prior steps.\n", - "\n", - "# Create Smiles for evaluation\n", - "dataset[\"smiles_before\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", - "\n", - "# Perform disconnect_metals on entries\n", - "dataset[\"mol\"] = dataset[\"mol\"].map(remove_salts)\n", - "\n", - "# Create new SMILEs from the current state for evaluation of performed changes\n", - "dataset[\"Smiles 5\"] = dataset[\"mol\"].apply(convert_format.convert_mol_to_smiles)\n", - "dataset[\"no_removed_salt\"] = dataset[\"smiles_before\"] == dataset[\"Smiles 5\"]\n", - "\n", - "# Filter the changed entries\n", - "changed_at_step_6 = dataset[dataset[\"no_removed_salt\"] == False]\n", - "changed_at_step_6[\"Changed_at\"] = changed_at_step_6[\"Failed_at\"].apply(\n", - " lambda x, task_number=task_number: task_number\n", - ")\n", - "changed_at_step_6 = changed_at_step_6[[\"IDs\", \"Names\", \"SMILEs\", \"Changed_at\", \"mol\"]]\n", - "\n", - "dataset[\"Changed_at\"] = dataset[dataset[\"no_removed_salt\"] == False][\"Failed_at\"].apply(\n", - " lambda x, task_number=task_number: task_number\n", - ")\n", - "dataset.head(20)\n", - "\n", - "# dataset['removed_salts'] = RemoveSaltsFromFrame(dataset,molCol='mol')\n", - "# where_salt = dataset[dataset['removed_salts'].notna()]" + "So the next step would be to examine our \"failed\" entries.
\n", + "For that, we make a copy of our current status of the dataset." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ - "# Show the subset of all changed entries (salts were removed)\n", - "changed_at_step_6.head()" + "score = [3, 4]\n", + "failed_entries_copy = dataset[dataset[\"Filtered_at\"].isin(score)].copy()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 7: Normalize molecules" + "And we check for the presence of metals here" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ - "# TODO: Finish all steps here\n", - "\n", - "# Setting up the task_number\n", - "task_number = 7\n", - "# getting the valid entries from the step before\n", - "dataset = result1\n", - "# dataset.head(100)\n", - "dataset[\"normalized\"] = dataset[\"mol\"].apply(normalize)\n", - "result7 = dataset\n", - "result7.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Task 8: Charges and Hydrogens TODO" + "# Check for metals\n", + "failed_entries_copy[\"metals\"] = failed_entries_copy.apply(\n", + " lambda row: detect_metals(row.mol) if row.Filtered_at != 0 else None,\n", + " axis=1,\n", + ")" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# TODO: Add the functionlaity here" - ] - }, - { - "cell_type": "markdown", + "execution_count": 16, "metadata": {}, - "source": [ - "### Normalization of Specific Chemotypes\n", - "\n", - "More complex than just Normalization." - ] - }, - { + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atmolCarbon_presentInorganicsmixturemetals
200201zirconiumCCO[Zr](OCC)(OCC)OCC3<rdkit.Chem.rdchem.Mol object at 0x7f8df72487b0>TrueTrueNoneTrue
204206covalent_metalCCC(=O)O[Na]3<rdkit.Chem.rdchem.Mol object at 0x7f8df72488f0>TrueTrueNoneTrue
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs Filtered_at \\\n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC 3 \n", + "204 206 covalent_metal CCC(=O)O[Na] 3 \n", + "\n", + " mol Carbon_present \\\n", + "200 True \n", + "204 True \n", + "\n", + " Inorganics mixture metals \n", + "200 True None True \n", + "204 True None True " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "failed_entries_copy[failed_entries_copy[\"metals\"] == True]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One entry has a counterion that can be disconnected. We might consider removing the metals in those mixture and re-run this standardization script with the cleaned entry.
But for this case, this does not make much sense, since the resulting molecules after removing Zirconium would be not functional and the covalent metal would just \n", + "\n", + "But what we could have done, if it made sense:\n", + "1. disconnect_metals\n", + "2. handle_charges.uncharge\n", + "3. remove_salts\n", + "4. handle_fragments.choose_largest_fragment" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 5.5: Reintegrate entry after metal disconnection" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "task_number = 5.5\n", + "\n", + "# Disconnect metals\n", + "dataset[\"mol\"] = dataset.apply(\n", + " lambda row: disconnect_metals(row.mol) if row.metals == True else row.mol,\n", + " axis=1,\n", + ")\n", + "\n", + "# Normalize entry\n", + "dataset[\"mol\"] = dataset.apply(\n", + " lambda row: handle_charges.uncharge(row.mol) if row.metals == True else row.mol,\n", + " axis=1,\n", + ")\n", + "\n", + "\n", + "# Add task_number to failed entries\n", + "dataset.loc[dataset[\"metals\"] == True, [\"Cleaned_at\"]] = task_number" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atmolCarbon_presentInorganicsmixturemetalsCleaned_at
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [IDs, Names, SMILEs, Filtered_at, mol, Carbon_present, Inorganics, mixture, metals, Cleaned_at]\n", + "Index: []" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[dataset[\"Cleaned_at\"] == 5.5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 6: Removing salts \n", + "\n", + "This curation step can be applied to different subsets of the dataset.
\n", + "First, we will apply this to our entries that passed all steps before. \n", + "Since we filtered all mixtures out in previous steps, all salts found in this step are the only compound in the entry. Therefore they need to be deleted (filtered).\n", + "\n", + "More interesting might be the inspection of the *inorganics* **(Task 3)** or *mixtures* **(Task 4)**. We could check if any of those mixtures contain salts known in our dictionary. If so, we can delete those salts and reuse the entries if they are free of mixtures." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we will search for salts in our dataset. " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Setting up the task_number\n", + "task_number = 6\n", + "\n", + "# Check for salts\n", + "dataset[\"salts\"] = dataset.apply(\n", + " lambda row: detect_salts(row.mol) if row.Filtered_at == 0 else None,\n", + " axis=1,\n", + ")\n", + "\n", + "# Add task_number to failed entries\n", + "dataset.loc[dataset[\"salts\"] == True, [\"Filtered_at\"]] = task_number" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below you can see all entries containing salts." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atmolCarbon_presentInorganicsmixturemetalsCleaned_atsalts
2223Acetic acidCC(O)=O6<rdkit.Chem.rdchem.Mol object at 0x7f8df722bf80>TrueFalseFalseFalseNaNTrue
199200Citric acidOC(=O)CC(O)(CC(O)=O)C(O)=O6<rdkit.Chem.rdchem.Mol object at 0x7f8df7248760>TrueFalseFalseFalseNaNTrue
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs Filtered_at \\\n", + "22 23 Acetic acid CC(O)=O 6 \n", + "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O 6 \n", + "\n", + " mol Carbon_present \\\n", + "22 True \n", + "199 True \n", + "\n", + " Inorganics mixture metals Cleaned_at salts \n", + "22 False False False NaN True \n", + "199 False False False NaN True " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[dataset[\"Filtered_at\"] == 6]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To demonstrate the removal of salts, we can generate SMILES out of the mol after the deletion of the salts.\n", + "We will observe the generation of an empty SMILES string." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atmolCarbon_presentInorganicsmixturemetalsCleaned_atsalts
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]3<rdkit.Chem.rdchem.Mol object at 0x7f8df7280490>TrueTrueNoneNoneNaNNone
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C0<rdkit.Chem.rdchem.Mol object at 0x7f8df727bf80>TrueFalseFalseFalseNaNFalse
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C0<rdkit.Chem.rdchem.Mol object at 0x7f8df727ba80>TrueFalseFalseFalseNaNFalse
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f8df727bee0>TrueFalseFalseFalseNaNFalse
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O0<rdkit.Chem.rdchem.Mol object at 0x7f8df727bb70>TrueFalseFalseFalseNaNFalse
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", + "\n", + " SMILEs Filtered_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + "\n", + " mol Carbon_present Inorganics \\\n", + "0 True True \n", + "1 True False \n", + "2 True False \n", + "3 True False \n", + "4 True False \n", + "\n", + " mixture metals Cleaned_at salts \n", + "0 None None NaN None \n", + "1 False False NaN False \n", + "2 False False NaN False \n", + "3 False False NaN False \n", + "4 False False NaN False " + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# First we make a deep copy of the original dataframe\n", + "demo_df = dataset.copy()\n", + "demo_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We then apply our changes to the copy to look at the SMILES generated after removal." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# Applying the remove_salts function on the molecules detected as salts in Tasks 6.\n", + "demo_df[\"mol\"] = demo_df.apply(\n", + " lambda row: remove_salts(row.mol) if row.Filtered_at == 6 else row.mol,\n", + " axis=1,\n", + ")\n", + "\n", + "# Generate a SMILES of the entires. (Only for demonstration purposes)\n", + "demo_df[\"SMILEs\"] = demo_df.apply(\n", + " lambda row: convert_format.convert_mol_to_smiles(row.mol)\n", + " if row.Filtered_at == 6\n", + " else None,\n", + " axis=1,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we can look at our entries containing salts" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atmolCarbon_presentInorganicsmixturemetalsCleaned_atsalts
2223Acetic acid6<rdkit.Chem.rdchem.Mol object at 0x7f8df71d4030>TrueFalseFalseFalseNaNTrue
199200Citric acid6<rdkit.Chem.rdchem.Mol object at 0x7f8df718b8f0>TrueFalseFalseFalseNaNTrue
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs Filtered_at \\\n", + "22 23 Acetic acid 6 \n", + "199 200 Citric acid 6 \n", + "\n", + " mol Carbon_present \\\n", + "22 True \n", + "199 True \n", + "\n", + " Inorganics mixture metals Cleaned_at salts \n", + "22 False False False NaN True \n", + "199 False False False NaN True " + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "demo_df[demo_df[\"Filtered_at\"] == 6]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we can filter for salts in the entries screened for inorganics and mixtures (as we did for the metals) to see if any inorganics or mixtures might have been salts." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "score = [3, 4]\n", + "failed_entries_copy = dataset[dataset[\"Filtered_at\"].isin(score)].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "# Check for salts\n", + "failed_entries_copy[\"salts\"] = failed_entries_copy.apply(\n", + " lambda row: detect_salts(row.mol) if row.Filtered_at != 0 else None,\n", + " axis=1,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atmolCarbon_presentInorganicsmixturemetalsCleaned_atsalts
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]3<rdkit.Chem.rdchem.Mol object at 0x7f8df7280490>TrueTrueNoneNoneNaNTrue
562-Deoxy-D-glucoseOCC1OC(O)CC(O)C1O.O1CCOCC14<rdkit.Chem.rdchem.Mol object at 0x7f8df722bda0>TrueFalseTrueNoneNaNFalse
114115BortezomibCC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O3<rdkit.Chem.rdchem.Mol object at 0x7f8df7245d00>TrueTrueNoneNoneNaNFalse
200201zirconiumCCO[Zr](OCC)(OCC)OCC3<rdkit.Chem.rdchem.Mol object at 0x7f8df72487b0>TrueTrueNoneNoneNaNFalse
201202hemoglobinCC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...3<rdkit.Chem.rdchem.Mol object at 0x7f8df7248800>TrueTrueNoneNoneNaNFalse
204206covalent_metalCCC(=O)O[Na]3<rdkit.Chem.rdchem.Mol object at 0x7f8df72488f0>TrueTrueNoneNoneNaNFalse
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "5 6 2-Deoxy-D-glucose \n", + "114 115 Bortezomib \n", + "200 201 zirconium \n", + "201 202 hemoglobin \n", + "204 206 covalent_metal \n", + "\n", + " SMILEs Filtered_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 \n", + "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 4 \n", + "114 CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O 3 \n", + "200 CCO[Zr](OCC)(OCC)OCC 3 \n", + "201 CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... 3 \n", + "204 CCC(=O)O[Na] 3 \n", + "\n", + " mol Carbon_present \\\n", + "0 True \n", + "5 True \n", + "114 True \n", + "200 True \n", + "201 True \n", + "204 True \n", + "\n", + " Inorganics mixture metals Cleaned_at salts \n", + "0 True None None NaN True \n", + "5 False True None NaN False \n", + "114 True None None NaN False \n", + "200 True None None NaN False \n", + "201 True None None NaN False \n", + "204 True None None NaN False " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "failed_entries_copy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the filtered entries in this example contained a salt. We might consider removing the salt in this mixture and re-run this standardization script with the cleaned entry. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 7: Normalize molecules\n", + "\n", + "handle_charges.uncharge (Attempts to neutralize charges by adding and/or removing hydrogens where possible.)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'result1' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mtask_number\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m7\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m# getting the valid entries from the step before\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mdataset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;31m# dataset.head(100)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"normalized\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"mol\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnormalize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'result1' is not defined" + ] + } + ], + "source": [ + "# TODO: Finish all steps here\n", + "\n", + "# Setting up the task_number\n", + "task_number = 7\n", + "# getting the valid entries from the step before\n", + "dataset = result1\n", + "# dataset.head(100)\n", + "dataset[\"normalized\"] = dataset[\"mol\"].apply(normalize)\n", + "result7 = dataset\n", + "result7.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Task 8: Charges and Hydrogens TODO" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Add the functionlaity here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4: Normalization of Specific Chemotypes\n", + "\n", + "More complex than just Normalization." + ] + }, + { "cell_type": "code", "execution_count": null, "metadata": {}, @@ -1260,7 +2015,7 @@ "\n", "# Filter the duplicates out\n", "failed_step_10 = dataset[dataset[\"duplicate?\"] == True]\n", - "failed_step_10[\"Failed_at\"] = failed_step_10[\"Failed_at\"].apply(\n", + "failed_step_10[\"Filtered_at\"] = failed_step_10[\"Filtered_at\"].apply(\n", " lambda x, task_number=task_number: task_number\n", ")\n", "\n", @@ -1298,6 +2053,27 @@ "source": [ "test" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "test = convert_format.convert_smiles_to_mol(\"CCO[Zr](OCC)(OCC)OCC\")\n", + "test = disconnect_metals(test)\n", + "test = handle_charges.uncharge(test)\n", + "test = remove_salts(test)\n", + "# test = handle_fragments.choose_largest_fragment(test)\n", + "test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 4cdfcfddda703f8c72a2f4cd2f81512761a41371 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Tue, 11 May 2021 17:57:40 +0200 Subject: [PATCH 46/55] added info to notes --- opencadd/compounds/standardization/normalize_molecules.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/opencadd/compounds/standardization/normalize_molecules.py b/opencadd/compounds/standardization/normalize_molecules.py index 10d325d7..9b0ad2a1 100644 --- a/opencadd/compounds/standardization/normalize_molecules.py +++ b/opencadd/compounds/standardization/normalize_molecules.py @@ -26,6 +26,7 @@ def normalize(mol): Notes ----- The Normalization transformations are saved in the list - NORMALIZATIONS contained in rdkit/Chem/MolStandardize/normalize.py + NORMALIZATIONS contained in rdkit/Chem/MolStandardize/normalize.py. They are + derived from the InChI technical manual. """ return rdMolStandardize.Normalizer().normalize(mol) From 9599f5cdf88b7dbb4070e64de98a7dabdd494b62 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Tue, 11 May 2021 21:44:39 +0200 Subject: [PATCH 47/55] added test structure --- docs/tutorials/data/standardization_test_data.csv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/tutorials/data/standardization_test_data.csv b/docs/tutorials/data/standardization_test_data.csv index fee19e99..17f4a2db 100644 --- a/docs/tutorials/data/standardization_test_data.csv +++ b/docs/tutorials/data/standardization_test_data.csv @@ -204,4 +204,5 @@ IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS 203,test_salt,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 204,test_duplicate,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 205,no_smiles_test,,0,0,0 -206,covalent_metal,CCC(=O)O[Na],0,0,0 \ No newline at end of file +206,covalent_metal,CCC(=O)O[Na],0,0,0 +207,test_charge_recombination, CC([O-])=[N+](C)C, 0,0,0 \ No newline at end of file From 20c405c2fa4830460ff277b20708b142e1b80944 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Tue, 11 May 2021 21:44:55 +0200 Subject: [PATCH 48/55] finished notebook --- docs/tutorials/standardization.ipynb | 2633 +++++++++++++++++++++----- 1 file changed, 2143 insertions(+), 490 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index d9c7460c..a5172558 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -91,20 +91,48 @@ "# Importing functions from the standardization API\n", "from opencadd.compounds.standardization import (\n", " convert_format,\n", - " handle_fragments,\n", - " disconnect_metals,\n", - " detect_inorganics,\n", - " remove_salts,\n", - " normalize,\n", - " handle_tautomers,\n", - " validate_molecules,\n", " detect_mixtures,\n", " detect_metals,\n", " detect_salts,\n", + " detect_inorganics,\n", + " handle_fragments,\n", + " handle_tautomers,\n", " handle_charges,\n", + " handle_tautomers,\n", + " disconnect_metals,\n", + " remove_salts,\n", + " normalize_molecules,\n", + " validate_molecules,\n", ")" ] }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Utility function to compare Smiles\n", + "def smiles_string_changed(smiles_old, smiles_new):\n", + " \"\"\"Compares SMILES strings. If they are identical, the value returned is False,\n", + " if they differ the value returned is True.\n", + "\n", + " Parameters:\n", + " smiles_old: SMILES string\n", + " smiles_new: SMILES string\n", + "\n", + " Returns:\n", + " Boolean:\n", + " Changes = True\n", + " No Changes = False\n", + "\n", + " \"\"\"\n", + " if smiles_old == smiles_new:\n", + " return False\n", + " else:\n", + " return True" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -120,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -140,6 +168,17 @@ " lambda x, task_number=task_number: task_number\n", ")\n", "\n", + "# Initializing the score to null at the 'Cleaned_at'-column\n", + "dataset[\"Cleaned_at\"] = dataset[\"SMILEs\"].apply(\n", + " lambda x, task_number=task_number: task_number\n", + ")\n", + "\n", + "# Initializing the score to null at the 'Normalized_at'-column\n", + "dataset[\"Normalized_at\"] = dataset[\"SMILEs\"].apply(\n", + " lambda x, task_number=task_number: task_number\n", + ")\n", + "\n", + "\n", "# Reset the index to correct the deletion of the empty entries\n", "dataset = dataset.reset_index(drop=True)\n", "\n", @@ -173,6 +212,9 @@ "\n", "To avoid molecule sanitization `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find alternative representation formats of the same molecule. \n", "\n", + "__Overwrite the SMILES representation with ones compiled from our generated Mol-files__\n", + "In order to register the changes we make to the entries, we have to recompile the SMILES encoding with our converting functions. The conversion back to SMILES has to happen since SMILES encodings vary depending on the algorithm used to calculate them. The newly calculated SMILES will be used as a validation parameter to determine any changes made to our entries further down the curation pipeline. \n", + "\n", "References:\n", "\n", "² https://molvs.readthedocs.io/en/latest/guide/standardize.html?highlight=sanitize#rdkit-sanitize\n", @@ -191,26 +233,26 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [01:10:41] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n" ] }, @@ -239,6 +281,8 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " \n", " \n", @@ -249,111 +293,139 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7280490>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", " \n", " \n", " 1\n", " 2\n", " 17-Methyltestosterone\n", - " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bf80>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e68210>\n", " \n", " \n", " 2\n", " 3\n", " 1-alpha-Hydroxycholecalciferol\n", - " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df727ba80>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e64b20>\n", " \n", " \n", " 3\n", " 4\n", " 2,3-Dimercaptosuccinic acid\n", - " OC(=O)C(S)C(S)C(O)=O\n", + " O=C(O)C(S)C(S)C(=O)O\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bee0>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e64350>\n", " \n", " \n", " 4\n", " 5\n", " 2,4,6-Trinitrotoluene\n", - " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bb70>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d710>\n", " \n", " \n", " 5\n", " 6\n", " 2-Deoxy-D-glucose\n", - " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", + " C1COCCO1.OCC1OC(O)CC(O)C1O\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bda0>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d990>\n", " \n", " \n", " 6\n", " 7\n", " 2'-fluoro-5-methylarabinosyluracil\n", - " CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O\n", + " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bc60>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d9e0>\n", " \n", " \n", " 7\n", " 8\n", " 2-Methoxyestradiol\n", - " COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O\n", + " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bcb0>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2da30>\n", " \n", " \n", " 8\n", " 9\n", " 4-aminobenzoic acid\n", - " Nc1ccc(cc1)C(O)=O\n", + " Nc1ccc(C(=O)O)cc1\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bd50>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2da80>\n", " \n", " \n", " 9\n", " 10\n", " 4-Hydroxytamoxifen\n", - " CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1\n", + " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bd00>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2dad0>\n", " \n", " \n", " 10\n", " 11\n", " 5 fluorouracil\n", - " FC1=CNC(=O)NC1=O\n", + " O=c1[nH]cc(F)c(=O)[nH]1\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b990>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2db20>\n", " \n", " \n", " 11\n", " 12\n", " 5-Azacitidine\n", - " NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O\n", + " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b940>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2db70>\n", " \n", " \n", " 12\n", " 13\n", " 5-Bromouracil\n", - " OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O\n", + " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b440>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2dbc0>\n", " \n", " \n", " 13\n", " 14\n", " 5-fluoro-2'-deoxyuridine\n", - " OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O\n", + " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b580>\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2dc10>\n", " \n", " \n", " 14\n", @@ -361,6 +433,8 @@ " 6-Mercaptopurine\n", " Sc1ncnc2[nH]c[nH]c12\n", " 1\n", + " 0\n", + " 0\n", " None\n", " \n", " \n", @@ -369,7 +443,9 @@ " Acadesine\n", " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722b8f0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2dc60>\n", " \n", " \n", "\n", @@ -394,44 +470,62 @@ "14 15 6-Mercaptopurine \n", "15 16 Acadesine \n", "\n", - " SMILEs Filtered_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", - "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 0 \n", - "6 CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O 0 \n", - "7 COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O 0 \n", - "8 Nc1ccc(cc1)C(O)=O 0 \n", - "9 CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1 0 \n", - "10 FC1=CNC(=O)NC1=O 0 \n", - "11 NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O 0 \n", - "12 OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O 0 \n", - "13 OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O 0 \n", - "14 Sc1ncnc2[nH]c[nH]c12 1 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + " SMILEs Filtered_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 \n", + "3 O=C(O)C(S)C(S)C(=O)O 0 \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 \n", + "5 C1COCCO1.OCC1OC(O)CC(O)C1O 0 \n", + "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O 0 \n", + "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 0 \n", + "8 Nc1ccc(C(=O)O)cc1 0 \n", + "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 0 \n", + "10 O=c1[nH]cc(F)c(=O)[nH]1 0 \n", + "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 0 \n", + "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br 0 \n", + "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F 0 \n", + "14 Sc1ncnc2[nH]c[nH]c12 1 \n", + "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", + "\n", + " Cleaned_at Normalized_at \\\n", + "0 0 0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + "5 0 0 \n", + "6 0 0 \n", + "7 0 0 \n", + "8 0 0 \n", + "9 0 0 \n", + "10 0 0 \n", + "11 0 0 \n", + "12 0 0 \n", + "13 0 0 \n", + "14 0 0 \n", + "15 0 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", "14 None \n", - "15 " + "15 " ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -446,6 +540,16 @@ "# Add task_number to failed entries\n", "dataset.loc[dataset[\"mol\"].isnull(), [\"Filtered_at\"]] = task_number\n", "\n", + "# Overwrite SMILES saved in the row \"SMILEs\" with encodings generated by\n", + "# the conversion algorithm used from convert_format\n", + "\n", + "dataset[\"SMILEs\"] = dataset.apply(\n", + " lambda row: convert_format.convert_mol_to_smiles(row.mol)\n", + " if row.Filtered_at == 0\n", + " else row.SMILEs,\n", + " axis=1,\n", + ")\n", + "\n", "dataset.head(16)" ] }, @@ -480,7 +584,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -508,7 +612,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -536,6 +640,8 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " \n", @@ -545,18 +651,22 @@ " 202\n", " 203\n", " test_salt\n", - " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7248850>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e337b0>\n", " False\n", " \n", " \n", " 203\n", " 204\n", " test_duplicate\n", - " [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg]....\n", + " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " 2\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df72488a0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33800>\n", " False\n", " \n", " \n", @@ -565,19 +675,19 @@ ], "text/plain": [ " IDs Names SMILEs \\\n", - "202 203 test_salt [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", - "203 204 test_duplicate [Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].... \n", + "202 203 test_salt Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", + "203 204 test_duplicate Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", "\n", - " Filtered_at mol \\\n", - "202 2 \n", - "203 2 \n", + " Filtered_at Cleaned_at Normalized_at \\\n", + "202 2 0 0 \n", + "203 2 0 0 \n", "\n", - " Carbon_present \n", - "202 False \n", - "203 False " + " mol Carbon_present \n", + "202 False \n", + "203 False " ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -611,7 +721,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -640,7 +750,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -668,6 +778,8 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", @@ -680,7 +792,9 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7280490>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", " True\n", " True\n", " \n", @@ -690,7 +804,9 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7245d00>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e31bc0>\n", " True\n", " True\n", " \n", @@ -700,7 +816,9 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df72487b0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33710>\n", " True\n", " True\n", " \n", @@ -708,9 +826,11 @@ " 201\n", " 202\n", " hemoglobin\n", - " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", + " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7248800>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33760>\n", " True\n", " True\n", " \n", @@ -720,7 +840,9 @@ " covalent_metal\n", " CCC(=O)O[Na]\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df72488f0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33850>\n", " True\n", " True\n", " \n", @@ -733,25 +855,32 @@ "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", - "201 202 hemoglobin CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... \n", + "201 202 hemoglobin C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... \n", "204 206 covalent_metal CCC(=O)O[Na] \n", "\n", - " Filtered_at mol \\\n", - "0 3 \n", - "114 3 \n", - "200 3 \n", - "201 3 \n", - "204 3 \n", - "\n", - " Carbon_present Inorganics \n", - "0 True True \n", - "114 True True \n", - "200 True True \n", - "201 True True \n", - "204 True True " + " Filtered_at Cleaned_at Normalized_at \\\n", + "0 3 0 0 \n", + "114 3 0 0 \n", + "200 3 0 0 \n", + "201 3 0 0 \n", + "204 3 0 0 \n", + "\n", + " mol Carbon_present \\\n", + "0 True \n", + "114 True \n", + "200 True \n", + "201 True \n", + "204 True \n", + "\n", + " Inorganics \n", + "0 True \n", + "114 True \n", + "200 True \n", + "201 True \n", + "204 True " ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -771,7 +900,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -797,7 +926,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -825,6 +954,8 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", @@ -836,9 +967,11 @@ " 5\n", " 6\n", " 2-Deoxy-D-glucose\n", - " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", + " C1COCCO1.OCC1OC(O)CC(O)C1O\n", " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bda0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d990>\n", " True\n", " False\n", " True\n", @@ -849,16 +982,19 @@ ], "text/plain": [ " IDs Names SMILEs Filtered_at \\\n", - "5 6 2-Deoxy-D-glucose OCC1OC(O)CC(O)C1O.O1CCOCC1 4 \n", + "5 6 2-Deoxy-D-glucose C1COCCO1.OCC1OC(O)CC(O)C1O 4 \n", + "\n", + " Cleaned_at Normalized_at \\\n", + "5 0 0 \n", "\n", " mol Carbon_present Inorganics \\\n", - "5 True False \n", + "5 True False \n", "\n", " mixture \n", "5 True " ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -881,24 +1017,12 @@ "- neutralize the record (normalization or essential standardization)\n", "- neutralize the charges\n", "\n", + "__Note:__\n", + "While it is possible to clean and reuse entries containing metals or salts, those entries will not be curated here since it does not fit the scope of this tutorial. Nevertheless, we hint at the steps to do and which functions of the standardization API to use. \n", "\n", "³ (https://www.drugs.com/article/pharmaceutical-salts.html (03/12/21))" ] }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "# Structural coversion\n", - "# Cleaning/removal of salts\n", - "# Functions remove_salts\n", - "# normalize_molecules\n", - "# handle_charges\n", - "# handle_hydrogens" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -965,6 +1089,8 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", @@ -979,7 +1105,7 @@ ], "text/plain": [ "Empty DataFrame\n", - "Columns: [IDs, Names, SMILEs, Filtered_at, mol, Carbon_present, Inorganics, mixture, metals]\n", + "Columns: [IDs, Names, SMILEs, Filtered_at, Cleaned_at, Normalized_at, mol, Carbon_present, Inorganics, mixture, metals]\n", "Index: []" ] }, @@ -996,7 +1122,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "So the next step would be to examine our \"failed\" entries.
\n", + "So the next step would be to examine our filtered entries.
\n", "For that, we make a copy of our current status of the dataset." ] }, @@ -1060,6 +1186,8 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", @@ -1074,7 +1202,9 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df72487b0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33710>\n", " True\n", " True\n", " None\n", @@ -1086,7 +1216,9 @@ " covalent_metal\n", " CCC(=O)O[Na]\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df72488f0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33850>\n", " True\n", " True\n", " None\n", @@ -1097,17 +1229,17 @@ "" ], "text/plain": [ - " IDs Names SMILEs Filtered_at \\\n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC 3 \n", - "204 206 covalent_metal CCC(=O)O[Na] 3 \n", + " IDs Names SMILEs Filtered_at Cleaned_at \\\n", + "200 201 zirconium CCO[Zr](OCC)(OCC)OCC 3 0 \n", + "204 206 covalent_metal CCC(=O)O[Na] 3 0 \n", "\n", - " mol Carbon_present \\\n", - "200 True \n", - "204 True \n", + " Normalized_at mol \\\n", + "200 0 \n", + "204 0 \n", "\n", - " Inorganics mixture metals \n", - "200 True None True \n", - "204 True None True " + " Carbon_present Inorganics mixture metals \n", + "200 True True None True \n", + "204 True True None True " ] }, "execution_count": 16, @@ -1123,103 +1255,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "One entry has a counterion that can be disconnected. We might consider removing the metals in those mixture and re-run this standardization script with the cleaned entry.
But for this case, this does not make much sense, since the resulting molecules after removing Zirconium would be not functional and the covalent metal would just \n", + "One entry has a counterion that can be disconnected. We might consider removing the metals in those mixtures and re-run this standardization script with the cleaned entry.
But for this case, this does not make much sense since the resulting molecules after removing Zirconium would be not functional, and the covalent metal would be deleted entirely since all of its substructures are salts.\n", "\n", - "But what we could have done, if it made sense:\n", + "However, what we could have done if it made sense:\n", "1. disconnect_metals\n", "2. handle_charges.uncharge\n", - "3. remove_salts\n", - "4. handle_fragments.choose_largest_fragment" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Task 5.5: Reintegrate entry after metal disconnection" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "task_number = 5.5\n", - "\n", - "# Disconnect metals\n", - "dataset[\"mol\"] = dataset.apply(\n", - " lambda row: disconnect_metals(row.mol) if row.metals == True else row.mol,\n", - " axis=1,\n", - ")\n", - "\n", - "# Normalize entry\n", - "dataset[\"mol\"] = dataset.apply(\n", - " lambda row: handle_charges.uncharge(row.mol) if row.metals == True else row.mol,\n", - " axis=1,\n", - ")\n", - "\n", - "\n", - "# Add task_number to failed entries\n", - "dataset.loc[dataset[\"metals\"] == True, [\"Cleaned_at\"]] = task_number" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDsNamesSMILEsFiltered_atmolCarbon_presentInorganicsmixturemetalsCleaned_at
\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: [IDs, Names, SMILEs, Filtered_at, mol, Carbon_present, Inorganics, mixture, metals, Cleaned_at]\n", - "Index: []" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataset[dataset[\"Cleaned_at\"] == 5.5]" + "3. normalize_molecule.normalize\n", + "4. remove_salts\n", + "5. handle_charges.uncharge\n", + "6. normalize_molecule.normalize\n", + "7. handle_fragments.choose_largest_fragment" ] }, { @@ -1244,7 +1289,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -1270,7 +1315,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -1298,12 +1343,13 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", " mixture\n", " metals\n", - " Cleaned_at\n", " salts\n", " \n", " \n", @@ -1312,28 +1358,30 @@ " 22\n", " 23\n", " Acetic acid\n", - " CC(O)=O\n", + " CC(=O)O\n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bf80>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2de90>\n", " True\n", " False\n", " False\n", " False\n", - " NaN\n", " True\n", " \n", " \n", " 199\n", " 200\n", " Citric acid\n", - " OC(=O)CC(O)(CC(O)=O)C(O)=O\n", + " O=C(O)CC(O)(CC(=O)O)C(=O)O\n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7248760>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e336c0>\n", " True\n", " False\n", " False\n", " False\n", - " NaN\n", " True\n", " \n", " \n", @@ -1341,20 +1389,20 @@ "" ], "text/plain": [ - " IDs Names SMILEs Filtered_at \\\n", - "22 23 Acetic acid CC(O)=O 6 \n", - "199 200 Citric acid OC(=O)CC(O)(CC(O)=O)C(O)=O 6 \n", + " IDs Names SMILEs Filtered_at Cleaned_at \\\n", + "22 23 Acetic acid CC(=O)O 6 0 \n", + "199 200 Citric acid O=C(O)CC(O)(CC(=O)O)C(=O)O 6 0 \n", "\n", - " mol Carbon_present \\\n", - "22 True \n", - "199 True \n", + " Normalized_at mol \\\n", + "22 0 \n", + "199 0 \n", "\n", - " Inorganics mixture metals Cleaned_at salts \n", - "22 False False False NaN True \n", - "199 False False False NaN True " + " Carbon_present Inorganics mixture metals salts \n", + "22 True False False False True \n", + "199 True False False False True " ] }, - "execution_count": 20, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1373,7 +1421,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -1401,12 +1449,13 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", " mixture\n", " metals\n", - " Cleaned_at\n", " salts\n", " \n", " \n", @@ -1417,68 +1466,73 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7280490>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", " True\n", " True\n", " None\n", " None\n", - " NaN\n", " None\n", " \n", " \n", " 1\n", " 2\n", " 17-Methyltestosterone\n", - " CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " 0\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bf80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e68210>\n", " True\n", " False\n", " False\n", " False\n", - " NaN\n", " False\n", " \n", " \n", " 2\n", " 3\n", " 1-alpha-Hydroxycholecalciferol\n", - " CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df727ba80>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e64b20>\n", " True\n", " False\n", " False\n", " False\n", - " NaN\n", " False\n", " \n", " \n", " 3\n", " 4\n", " 2,3-Dimercaptosuccinic acid\n", - " OC(=O)C(S)C(S)C(O)=O\n", + " O=C(O)C(S)C(S)C(=O)O\n", + " 0\n", + " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e64350>\n", " True\n", " False\n", " False\n", " False\n", - " NaN\n", " False\n", " \n", " \n", " 4\n", " 5\n", " 2,4,6-Trinitrotoluene\n", - " Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df727bb70>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d710>\n", " True\n", " False\n", " False\n", " False\n", - " NaN\n", " False\n", " \n", " \n", @@ -1493,29 +1547,29 @@ "3 4 2,3-Dimercaptosuccinic acid \n", "4 5 2,4,6-Trinitrotoluene \n", "\n", - " SMILEs Filtered_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 \n", - "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 \n", - "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 \n", - "3 OC(=O)C(S)C(S)C(O)=O 0 \n", - "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 \n", + " SMILEs Filtered_at Cleaned_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 0 \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 0 \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 0 \n", + "3 O=C(O)C(S)C(S)C(=O)O 0 0 \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 0 \n", "\n", - " mol Carbon_present Inorganics \\\n", - "0 True True \n", - "1 True False \n", - "2 True False \n", - "3 True False \n", - "4 True False \n", - "\n", - " mixture metals Cleaned_at salts \n", - "0 None None NaN None \n", - "1 False False NaN False \n", - "2 False False NaN False \n", - "3 False False NaN False \n", - "4 False False NaN False " + " Normalized_at mol \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "\n", + " Carbon_present Inorganics mixture metals salts \n", + "0 True True None None None \n", + "1 True False False False False \n", + "2 True False False False False \n", + "3 True False False False False \n", + "4 True False False False False " ] }, - "execution_count": 21, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -1535,7 +1589,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -1563,7 +1617,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -1591,12 +1645,13 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", " mixture\n", " metals\n", - " Cleaned_at\n", " salts\n", " \n", " \n", @@ -1607,12 +1662,13 @@ " Acetic acid\n", " \n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df71d4030>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6daf3a0>\n", " True\n", " False\n", " False\n", " False\n", - " NaN\n", " True\n", " \n", " \n", @@ -1621,12 +1677,13 @@ " Citric acid\n", " \n", " 6\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df718b8f0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dc6080>\n", " True\n", " False\n", " False\n", " False\n", - " NaN\n", " True\n", " \n", " \n", @@ -1634,20 +1691,20 @@ "" ], "text/plain": [ - " IDs Names SMILEs Filtered_at \\\n", - "22 23 Acetic acid 6 \n", - "199 200 Citric acid 6 \n", + " IDs Names SMILEs Filtered_at Cleaned_at Normalized_at \\\n", + "22 23 Acetic acid 6 0 0 \n", + "199 200 Citric acid 6 0 0 \n", "\n", " mol Carbon_present \\\n", - "22 True \n", - "199 True \n", + "22 True \n", + "199 True \n", "\n", - " Inorganics mixture metals Cleaned_at salts \n", - "22 False False False NaN True \n", - "199 False False False NaN True " + " Inorganics mixture metals salts \n", + "22 False False False True \n", + "199 False False False True " ] }, - "execution_count": 23, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -1665,7 +1722,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -1675,7 +1732,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -1688,7 +1745,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -1716,12 +1773,13 @@ " Names\n", " SMILEs\n", " Filtered_at\n", + " Cleaned_at\n", + " Normalized_at\n", " mol\n", " Carbon_present\n", " Inorganics\n", " mixture\n", " metals\n", - " Cleaned_at\n", " salts\n", " \n", " \n", @@ -1732,26 +1790,28 @@ " (R)-Roscovitine\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7280490>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", " True\n", " True\n", " None\n", " None\n", - " NaN\n", " True\n", " \n", " \n", " 5\n", " 6\n", " 2-Deoxy-D-glucose\n", - " OCC1OC(O)CC(O)C1O.O1CCOCC1\n", + " C1COCCO1.OCC1OC(O)CC(O)C1O\n", " 4\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df722bda0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d990>\n", " True\n", " False\n", " True\n", " None\n", - " NaN\n", " False\n", " \n", " \n", @@ -1760,12 +1820,13 @@ " Bortezomib\n", " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7245d00>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e31bc0>\n", " True\n", " True\n", " None\n", " None\n", - " NaN\n", " False\n", " \n", " \n", @@ -1774,26 +1835,28 @@ " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df72487b0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33710>\n", " True\n", " True\n", " None\n", " None\n", - " NaN\n", " False\n", " \n", " \n", " 201\n", " 202\n", " hemoglobin\n", - " CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=...\n", + " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df7248800>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33760>\n", " True\n", " True\n", " None\n", " None\n", - " NaN\n", " False\n", " \n", " \n", @@ -1802,12 +1865,13 @@ " covalent_metal\n", " CCC(=O)O[Na]\n", " 3\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8df72488f0>\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33850>\n", " True\n", " True\n", " None\n", " None\n", - " NaN\n", " False\n", " \n", " \n", @@ -1825,30 +1889,38 @@ "\n", " SMILEs Filtered_at \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 \n", - "5 OCC1OC(O)CC(O)C1O.O1CCOCC1 4 \n", + "5 C1COCCO1.OCC1OC(O)CC(O)C1O 4 \n", "114 CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O 3 \n", "200 CCO[Zr](OCC)(OCC)OCC 3 \n", - "201 CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=... 3 \n", + "201 C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... 3 \n", "204 CCC(=O)O[Na] 3 \n", "\n", + " Cleaned_at Normalized_at \\\n", + "0 0 0 \n", + "5 0 0 \n", + "114 0 0 \n", + "200 0 0 \n", + "201 0 0 \n", + "204 0 0 \n", + "\n", " mol Carbon_present \\\n", - "0 True \n", - "5 True \n", - "114 True \n", - "200 True \n", - "201 True \n", - "204 True \n", - "\n", - " Inorganics mixture metals Cleaned_at salts \n", - "0 True None None NaN True \n", - "5 False True None NaN False \n", - "114 True None None NaN False \n", - "200 True None None NaN False \n", - "201 True None None NaN False \n", - "204 True None None NaN False " + "0 True \n", + "5 True \n", + "114 True \n", + "200 True \n", + "201 True \n", + "204 True \n", + "\n", + " Inorganics mixture metals salts \n", + "0 True None None True \n", + "5 False True None False \n", + "114 True None None False \n", + "200 True None None False \n", + "201 True None None False \n", + "204 True None None False " ] }, - "execution_count": 26, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1861,62 +1933,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "One of the filtered entries in this example contained a salt. We might consider removing the salt in this mixture and re-run this standardization script with the cleaned entry. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Task 7: Normalize molecules\n", + "One of the filtered entries in this example contained a salt. We might consider removing the salt in this mixture and do some normalization actions on it, similar to those in the previous step covering the disconnection of metals.
\n", "\n", - "handle_charges.uncharge (Attempts to neutralize charges by adding and/or removing hydrogens where possible.)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'result1' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mtask_number\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m7\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m# getting the valid entries from the step before\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mdataset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;31m# dataset.head(100)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"normalized\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"mol\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnormalize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'result1' is not defined" - ] - } - ], - "source": [ - "# TODO: Finish all steps here\n", + "The steps would be:\n", "\n", - "# Setting up the task_number\n", - "task_number = 7\n", - "# getting the valid entries from the step before\n", - "dataset = result1\n", - "# dataset.head(100)\n", - "dataset[\"normalized\"] = dataset[\"mol\"].apply(normalize)\n", - "result7 = dataset\n", - "result7.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Task 8: Charges and Hydrogens TODO" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# TODO: Add the functionlaity here" + "1. remove_salts\n", + "2. handle_charges.uncharge\n", + "3. normalize_molecule.normalize\n", + "4. handle_fragments.choose_largest_fragment" ] }, { @@ -1925,155 +1949,1784 @@ "source": [ "### Step 4: Normalization of Specific Chemotypes\n", "\n", - "More complex than just Normalization." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# TODO: Finish all steps here\n", - "\n", - "# Normalization of specific chemotypes\n", - "# normalize_molecules" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# TODO: Finish all steps here\n", + "After we filtered all problematic entries in the previous steps and created subsets to curate entries containing metals and salts, the next task is to apply normalization transformations to the remaining entries to correct functional groups and recombine charges.
\n", + "The standardization API utilizes the Normalization transformations embedded in the rdMolStandardize-Package, which derives the rules described in the InChI technical manual.
\n", "\n", - "# Treatment of tautomeric forms\n", - "# handle_tautomers" + "*If available, custom conversions rules can be used and implemented but require modifying the `normalize_molecules.normalize` function to use them. (This might be covered in further development of this API.* " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 9: Generate a canonicalized tautomer on SMILEs entries" + "#### Task 7: Normalization" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ - "# TODO: Finish all steps here\n", - "\n", "# Setting up the task_number\n", - "task_number = 9\n", + "task_number = 7\n", "\n", - "dataset = result7\n", + "# Normalize the entries, overwrite the previous mol\n", + "dataset[\"mol\"] = dataset.apply(\n", + " lambda row: normalize_molecules.normalize(row.mol)\n", + " if row.Filtered_at == 0\n", + " else row.mol,\n", + " axis=1,\n", + ")\n", "\n", - "# Find all duplicate occurences in SMILEs\n", - "dataset[\"canonicalized tautomer\"] = dataset[\"SMILEs\"].apply(\n", - " handle_tautomers.canonicalize_tautomer\n", + "# Calculate new SMILES for the entries to determine which entries needed to be normalized\n", + "dataset[\"SMILEs_after_normalization\"] = dataset.apply(\n", + " lambda row: convert_format.convert_mol_to_smiles(row.mol)\n", + " if row.Filtered_at == 0\n", + " else row.SMILEs,\n", + " axis=1,\n", ")\n", - "dataset.head()" + "\n", + "\n", + "# Compare the SMILES for changes after the normalization --> save as Boolean Value\n", + "dataset[\"normalized\"] = dataset.apply(\n", + " lambda row: smiles_string_changed(row.SMILEs, row.SMILEs_after_normalization)\n", + " if row.Filtered_at == 0\n", + " else None,\n", + " axis=1,\n", + ")\n", + "\n", + "\n", + "# Add task_number to normalized entries\n", + "dataset.loc[dataset[\"normalized\"] == True, [\"Normalized_at\"]] = task_number" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "dataset.tail()" + "Below you can see all entries where normalization steps took place." ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 26, "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atCleaned_atNormalized_atmolCarbon_presentInorganicsmixturemetalssaltsSMILEs_after_normalizationnormalized
205207test_charge_recombinationCC([O-])=[N+](C)C007<rdkit.Chem.rdchem.Mol object at 0x7f46d6d83260>TrueFalseFalseFalseFalseCC(=O)N(C)CTrue
\n", + "
" + ], + "text/plain": [ + " IDs Names SMILEs Filtered_at \\\n", + "205 207 test_charge_recombination CC([O-])=[N+](C)C 0 \n", + "\n", + " Cleaned_at Normalized_at \\\n", + "205 0 7 \n", + "\n", + " mol Carbon_present \\\n", + "205 True \n", + "\n", + " Inorganics mixture metals salts SMILEs_after_normalization normalized \n", + "205 False False False False CC(=O)N(C)C True " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "### Removal of duplicates" + "dataset[dataset[\"Normalized_at\"] == 7]" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# TODO: Fine tune the output\n", - "\n", - "# Analysis/removal of duplicates\n", - "\n", - "# Setting up the task_number\n", - "task_number = 10\n", - "\n", - "dataset = result7\n", + "### FInal Conversion back to SMILES\n", "\n", - "# Find all duplicate occurences in SMILEs\n", - "dataset[\"duplicate?\"] = dataset.duplicated(subset=[\"SMILEs\"])\n", - "\n", - "# Filter the duplicates out\n", - "failed_step_10 = dataset[dataset[\"duplicate?\"] == True]\n", - "failed_step_10[\"Filtered_at\"] = failed_step_10[\"Filtered_at\"].apply(\n", - " lambda x, task_number=task_number: task_number\n", - ")\n", - "\n", - "dataset = dataset[dataset[\"duplicate?\"] == False]\n", - "failed_step_10.tail()" + "Since we have finished all our actions taken on the mol-files, we can render new SMILES strings generated by our final mol-files" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ - "# Manual inspection\n", - "\n", - "# TODO: Create csv-exports for better readability of the subsets or jupyter notebook searchable tables" + "dataset[\"SMILEs\"] = dataset.apply(\n", + " lambda row: convert_format.convert_mol_to_smiles(row.mol)\n", + " if row.Filtered_at == 0\n", + " else row.SMILEs,\n", + " axis=1,\n", + ")" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# Contatination of results for the end\n", - "test = pd.concat([failed_step_1, failed_step_2])\n", - "test = test.sort_values(by=[\"IDs\"])" + "#### (Task 8): Tautomers\n", + "\n", + "Considering compounds can exist in various tautomeric forms, it can be advantageous to calculate those forms. Due to tautomerism being a broad and specific field, this notebook will not allow a deeper focus on interpreting the problems related to tautomers. We will only provide the tools to generate a canonicalized tautomer and enumerate all possible tautomers of the final SMILES. " ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n", + "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n" + ] + } + ], "source": [ - "test" + "# Generate a canonicalized tautomer\n", + "dataset[\"canonicalized_tautomer_smiles\"] = dataset.apply(\n", + " lambda row: handle_tautomers.canonicalize_tautomer(row.SMILEs)\n", + " if row.Filtered_at != 1\n", + " else None,\n", + " axis=1,\n", + ")\n", + "\n", + "# Compare the SMILES for changes after the generation of a canonicalized SMILES --> save as Boolean Value\n", + "dataset[\"new_canonical_tautomer\"] = dataset.apply(\n", + " lambda row: smiles_string_changed(row.SMILEs, row.canonicalized_tautomer_smiles)\n", + " if row.Filtered_at == 0\n", + " else None,\n", + " axis=1,\n", + ")" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "test = convert_format.convert_smiles_to_mol(\"CCO[Zr](OCC)(OCC)OCC\")\n", - "test = disconnect_metals(test)\n", - "test = handle_charges.uncharge(test)\n", - "test = remove_salts(test)\n", - "# test = handle_fragments.choose_largest_fragment(test)\n", - "test" + "Below you can see all entries where the canonicalized tautomer differs to the SMILEs, that resulted from the curation process." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atCleaned_atNormalized_atmolCarbon_presentInorganicsmixturemetalssaltsSMILEs_after_normalizationnormalizedcanonicalized_tautomer_smilesnew_canonical_tautomer
11125-AzacitidineNc1ncn(C2OC(CO)C(O)C2O)c(=O)n1000<rdkit.Chem.rdchem.Mol object at 0x7f46d6daf9e0>TrueFalseFalseFalseFalseNc1ncn(C2OC(CO)C(O)C2O)c(=O)n1FalseN=c1ncn(C2OC(CO)C(O)C2O)c(=O)[nH]1True
1819AcenocoumarolCC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dafa30>TrueFalseFalseFalseFalseCC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...FalseCC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)c2ccccc2...True
2122AcetazolamideCC(=O)Nc1nnc(S(N)(=O)=O)s1000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dafd00>TrueFalseFalseFalseFalseCC(=O)Nc1nnc(S(N)(=O)=O)s1FalseCC(=O)N=c1[nH]nc(S(N)(=O)=O)s1True
2425Acetohydroxamic acidCC(=O)NO000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9fbc0>TrueFalseFalseFalseFalseCC(=O)NOFalseCC(O)=NOTrue
3132AcyclovirNc1nc(=O)c2ncn(COCCO)c2[nH]1000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f620>TrueFalseFalseFalseFalseNc1nc(=O)c2ncn(COCCO)c2[nH]1FalseN=c1[nH]c(=O)c2ncn(COCCO)c2[nH]1True
3233Adefovir dipivoxilCC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f530>TrueFalseFalseFalseFalseCC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...FalseCC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(=N)[nH]cnc21...True
3334AdenineNc1ncnc2[nH]cnc12000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f760>TrueFalseFalseFalseFalseNc1ncnc2[nH]cnc12FalseN=c1[nH]cnc2[nH]cnc12True
3435AdenosineNc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9fc10>TrueFalseFalseFalseFalseNc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1OFalseN=c1[nH]cnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C...True
3536Adenosine triphosphateNc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f9e0>TrueFalseFalseFalseFalseNc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...FalseN=c1[nH]cnc2c1ncn2C1OC(CO[PH](=O)(=O)O[PH](=O)...True
4041AlbendazoleCCCSc1ccc2nc(NC(=O)OC)[nH]c2c1000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9fa30>TrueFalseFalseFalseFalseCCCSc1ccc2nc(NC(=O)OC)[nH]c2c1FalseCCCSc1ccc2[nH]c(=NC(=O)OC)[nH]c2c1True
4344AllantoinNC(=O)NC1NC(=O)NC1=O000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f440>TrueFalseFalseFalseFalseNC(=O)NC1NC(=O)NC1=OFalseNC(=O)Nc1[nH]c(=O)[nH]c1OTrue
4546AllopurinolO=c1nc[nH]c2cn[nH]c12000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f2b0>TrueFalseFalseFalseFalseO=c1nc[nH]c2cn[nH]c12FalseO=c1[nH]cnc2c[nH]nc12True
5152AmikacinNCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f6c0>TrueFalseFalseFalseFalseNCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...FalseNCCC(=O)C(O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...True
5253AmilorideN=C(N)NC(=O)c1nc(Cl)c(N)nc1N000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9fb20>TrueFalseFalseFalseFalseN=C(N)NC(=O)c1nc(Cl)c(N)nc1NFalseN=C(N)NC(=O)c1nc(Cl)c(=N)[nH]c1NTrue
5657AminoguanidineNN=C(N)N000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f800>TrueFalseFalseFalseFalseNN=C(N)NFalseN=C(N)NNTrue
6162AmlodipineCCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f120>TrueFalseFalseFalseFalseCCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1ClFalseCCOC(=O)C1=C(COCCN)N=C(C)C(C(=O)OC)C1c1ccccc1ClTrue
6364AmodiaquinCCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f940>TrueFalseFalseFalseFalseCCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1OFalseCCN(CC)Cc1cc(N=c2cc[nH]c3cc(Cl)ccc23)ccc1OTrue
7071AmsacrineCOc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c260>TrueFalseFalseFalseFalseCOc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12FalseCOc1cc(NS(C)(=O)=O)ccc1N=c1c2ccccc2[nH]c2ccccc12True
7677Ascorbic acidO=C1C(O)=C(O)OC1C(O)CO000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7cd50>TrueFalseFalseFalseFalseO=C1C(O)=C(O)OC1C(O)COFalseOCC(O)c1oc(O)c(O)c1OTrue
7778AstaxanthinCC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7ca80>TrueFalseFalseFalseFalseCC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=...FalseCC(C=CC=C(C)C=CC1C(C)C(=O)C(=O)CC1(C)C)=CC=CC=...True
8990AztreonamCC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7cee0>TrueFalseFalseFalseFalseCC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)...FalseCC1C(=NC(=O)C(NOC(C)(C)C(=O)O)c2csc(=N)[nH]2)C...True
105106BetamethasoneCC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c6c0>TrueFalseFalseFalseFalseCC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...FalseCC1CC2C3CC=C4CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...True
113114BleomycinCc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c440>TrueFalseFalseFalseFalseCc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(...FalseCc1c(C(=O)NC(C(=O)NC(C)C(O)C(C)C(=O)NC(C(=O)NC...True
115116BosentanCOc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c170>TrueFalseFalseFalseFalseCOc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc...FalseCOc1ccccc1Oc1c(OCCO)[nH]c(-c2ncccn2)nc1=NS(=O)...True
118119BromocriptineCC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c3f0>TrueFalseFalseFalseFalseCC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc...FalseCC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3=CC4c5cccc...True
120121BucladesineCCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7a580>TrueFalseFalseFalseFalseCCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=...FalseCCCC(=O)N=c1[nH]cnc2c1ncn2C1OC2CO[PH](=O)(=O)O...True
121122BudesonideCCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7a990>TrueFalseFalseFalseFalseCCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2...FalseCCCC1OC2CC3C4CC=C5CC(=O)C=CC5(C)C4C(O)CC3(C)C2...True
136137CapecitabineCCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7ada0>TrueFalseFalseFalseFalseCCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1FFalseCCCCCOC(=O)N=c1[nH]c(=O)n(C2OC(C)C(O)C2O)cc1FTrue
143144CarbenoxoloneCC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7adf0>TrueFalseFalseFalseFalseCC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O...FalseCC1(C(=O)O)CCC2(C)CCC3(C)C(=C2C1)CC(=O)C1C2(C)...True
147148CariporideCC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7a440>TrueFalseFalseFalseFalseCC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=OFalseCC(C)c1ccc(C(=O)N=C(N)N)cc1S(C)(=O)=OTrue
156157CefazolinCc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7ab70>TrueFalseFalseFalseFalseCc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C...FalseCc1nnc(SC=C2CSC3C(NC(=O)Cn4cnnn4)C(=O)N3C2C(=O...True
157158CefiximeC=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d7a0d0>TrueFalseFalseFalseFalseC=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c...FalseC=CC1=C(C(=O)O)N2C(=O)C(=NC(=O)C(NOCC(=O)O)c3c...True
159160CefotaximeCON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca490>TrueFalseFalseFalseFalseCON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...FalseCON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...True
160161CefotetanCOC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca620>TrueFalseFalseFalseFalseCOC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C...FalseCOC1(NC(O)=c2sc(=C(C(N)=O)C(=O)O)s2)C(=O)N2C(C...True
162163CeftriaxoneCON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca9e0>TrueFalseFalseFalseFalseCON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...FalseCON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...True
165166CephalosporinCC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca8f0>TrueFalseFalseFalseFalseCC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O...FalseCC(=O)OC=C1CSC2C(NC(=O)CCCC(N)C(=O)O)C(=O)N2C1...True
166167CephalothinCC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca300>TrueFalseFalseFalseFalseCC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1FalseCC(=O)OC=C1CSC2C(NC(=O)Cc3cccs3)C(=O)N2C1C(=O)OTrue
167168CerivastatinCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca2b0>TrueFalseFalseFalseFalseCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...FalseCOCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...True
168169Cerivastatin sodiumCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca670>TrueFalseFalseFalseFalseCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...FalseCOCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...True
171172CF101CNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1O000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca080>TrueFalseFalseFalseFalseCNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1OFalseCNC(=O)C1OC(n2cnc3c(=NCc4cccc(I)c4)[nH]cnc32)C...True
178179ChlorguanideCC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca5d0>TrueFalseFalseFalseFalseCC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1FalseCC(C)N=C(N)N=C(N)Nc1ccc(Cl)cc1True
179180Chlormadinone acetateCC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dcab70>TrueFalseFalseFalseFalseCC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)...FalseCC(=O)OC1(C(C)=O)CCC2C3=CC(Cl)=C4CC(=O)CCC4(C)...True
187188ChlortetracyclineCN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c...000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca1c0>TrueFalseFalseFalseFalseCN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c...FalseCN(C)C1C(=O)C(C(N)=O)C(=O)C2(O)C(=O)C3C(=O)c4c...True
188189ChlorzoxazoneOc1nc2cc(Cl)ccc2o1000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dcadf0>TrueFalseFalseFalseFalseOc1nc2cc(Cl)ccc2o1FalseO=c1[nH]c2cc(Cl)ccc2o1True
191192CidofovirNc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dca850>TrueFalseFalseFalseFalseNc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1FalseN=c1ccn(CC(CO)OC[PH](=O)(=O)O)c(=O)[nH]1True
192193CimetidineCN=C(NC#N)NCCSCc1nc[nH]c1C000<rdkit.Chem.rdchem.Mol object at 0x7f46d6d83030>TrueFalseFalseFalseFalseCN=C(NC#N)NCCSCc1nc[nH]c1CFalseCN=C(NC#N)NCCSCc1[nH]cnc1CTrue
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "11 12 5-Azacitidine \n", + "18 19 Acenocoumarol \n", + "21 22 Acetazolamide \n", + "24 25 Acetohydroxamic acid \n", + "31 32 Acyclovir \n", + "32 33 Adefovir dipivoxil \n", + "33 34 Adenine \n", + "34 35 Adenosine \n", + "35 36 Adenosine triphosphate \n", + "40 41 Albendazole \n", + "43 44 Allantoin \n", + "45 46 Allopurinol \n", + "51 52 Amikacin \n", + "52 53 Amiloride \n", + "56 57 Aminoguanidine \n", + "61 62 Amlodipine \n", + "63 64 Amodiaquin \n", + "70 71 Amsacrine \n", + "76 77 Ascorbic acid \n", + "77 78 Astaxanthin \n", + "89 90 Aztreonam \n", + "105 106 Betamethasone \n", + "113 114 Bleomycin \n", + "115 116 Bosentan \n", + "118 119 Bromocriptine \n", + "120 121 Bucladesine \n", + "121 122 Budesonide \n", + "136 137 Capecitabine \n", + "143 144 Carbenoxolone \n", + "147 148 Cariporide \n", + "156 157 Cefazolin \n", + "157 158 Cefixime \n", + "159 160 Cefotaxime \n", + "160 161 Cefotetan \n", + "162 163 Ceftriaxone \n", + "165 166 Cephalosporin \n", + "166 167 Cephalothin \n", + "167 168 Cerivastatin \n", + "168 169 Cerivastatin sodium \n", + "171 172 CF101 \n", + "178 179 Chlorguanide \n", + "179 180 Chlormadinone acetate \n", + "187 188 Chlortetracycline \n", + "188 189 Chlorzoxazone \n", + "191 192 Cidofovir \n", + "192 193 Cimetidine \n", + "\n", + " SMILEs Filtered_at \\\n", + "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 0 \n", + "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... 0 \n", + "21 CC(=O)Nc1nnc(S(N)(=O)=O)s1 0 \n", + "24 CC(=O)NO 0 \n", + "31 Nc1nc(=O)c2ncn(COCCO)c2[nH]1 0 \n", + "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO... 0 \n", + "33 Nc1ncnc2[nH]cnc12 0 \n", + "34 Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O 0 \n", + "35 Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O... 0 \n", + "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 0 \n", + "43 NC(=O)NC1NC(=O)NC1=O 0 \n", + "45 O=c1nc[nH]c2cn[nH]c12 0 \n", + "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... 0 \n", + "52 N=C(N)NC(=O)c1nc(Cl)c(N)nc1N 0 \n", + "56 NN=C(N)N 0 \n", + "61 CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl 0 \n", + "63 CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O 0 \n", + "70 COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12 0 \n", + "76 O=C1C(O)=C(O)OC1C(O)CO 0 \n", + "77 CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=... 0 \n", + "89 CC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)... 0 \n", + "105 CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O... 0 \n", + "113 Cc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(... 0 \n", + "115 COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc... 0 \n", + "118 CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc... 0 \n", + "120 CCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=... 0 \n", + "121 CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2... 0 \n", + "136 CCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F 0 \n", + "143 CC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O... 0 \n", + "147 CC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O 0 \n", + "156 Cc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C... 0 \n", + "157 C=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c... 0 \n", + "159 CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1... 0 \n", + "160 COC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C... 0 \n", + "162 CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=... 0 \n", + "165 CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O... 0 \n", + "166 CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1 0 \n", + "167 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... 0 \n", + "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... 0 \n", + "171 CNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1O 0 \n", + "178 CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1 0 \n", + "179 CC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)... 0 \n", + "187 CN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c... 0 \n", + "188 Oc1nc2cc(Cl)ccc2o1 0 \n", + "191 Nc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1 0 \n", + "192 CN=C(NC#N)NCCSCc1nc[nH]c1C 0 \n", + "\n", + " Cleaned_at Normalized_at \\\n", + "11 0 0 \n", + "18 0 0 \n", + "21 0 0 \n", + "24 0 0 \n", + "31 0 0 \n", + "32 0 0 \n", + "33 0 0 \n", + "34 0 0 \n", + "35 0 0 \n", + "40 0 0 \n", + "43 0 0 \n", + "45 0 0 \n", + "51 0 0 \n", + "52 0 0 \n", + "56 0 0 \n", + "61 0 0 \n", + "63 0 0 \n", + "70 0 0 \n", + "76 0 0 \n", + "77 0 0 \n", + "89 0 0 \n", + "105 0 0 \n", + "113 0 0 \n", + "115 0 0 \n", + "118 0 0 \n", + "120 0 0 \n", + "121 0 0 \n", + "136 0 0 \n", + "143 0 0 \n", + "147 0 0 \n", + "156 0 0 \n", + "157 0 0 \n", + "159 0 0 \n", + "160 0 0 \n", + "162 0 0 \n", + "165 0 0 \n", + "166 0 0 \n", + "167 0 0 \n", + "168 0 0 \n", + "171 0 0 \n", + "178 0 0 \n", + "179 0 0 \n", + "187 0 0 \n", + "188 0 0 \n", + "191 0 0 \n", + "192 0 0 \n", + "\n", + " mol Carbon_present \\\n", + "11 True \n", + "18 True \n", + "21 True \n", + "24 True \n", + "31 True \n", + "32 True \n", + "33 True \n", + "34 True \n", + "35 True \n", + "40 True \n", + "43 True \n", + "45 True \n", + "51 True \n", + "52 True \n", + "56 True \n", + "61 True \n", + "63 True \n", + "70 True \n", + "76 True \n", + "77 True \n", + "89 True \n", + "105 True \n", + "113 True \n", + "115 True \n", + "118 True \n", + "120 True \n", + "121 True \n", + "136 True \n", + "143 True \n", + "147 True \n", + "156 True \n", + "157 True \n", + "159 True \n", + "160 True \n", + "162 True \n", + "165 True \n", + "166 True \n", + "167 True \n", + "168 True \n", + "171 True \n", + "178 True \n", + "179 True \n", + "187 True \n", + "188 True \n", + "191 True \n", + "192 True \n", + "\n", + " Inorganics mixture metals salts \\\n", + "11 False False False False \n", + "18 False False False False \n", + "21 False False False False \n", + "24 False False False False \n", + "31 False False False False \n", + "32 False False False False \n", + "33 False False False False \n", + "34 False False False False \n", + "35 False False False False \n", + "40 False False False False \n", + "43 False False False False \n", + "45 False False False False \n", + "51 False False False False \n", + "52 False False False False \n", + "56 False False False False \n", + "61 False False False False \n", + "63 False False False False \n", + "70 False False False False \n", + "76 False False False False \n", + "77 False False False False \n", + "89 False False False False \n", + "105 False False False False \n", + "113 False False False False \n", + "115 False False False False \n", + "118 False False False False \n", + "120 False False False False \n", + "121 False False False False \n", + "136 False False False False \n", + "143 False False False False \n", + "147 False False False False \n", + "156 False False False False \n", + "157 False False False False \n", + "159 False False False False \n", + "160 False False False False \n", + "162 False False False False \n", + "165 False False False False \n", + "166 False False False False \n", + "167 False False False False \n", + "168 False False False False \n", + "171 False False False False \n", + "178 False False False False \n", + "179 False False False False \n", + "187 False False False False \n", + "188 False False False False \n", + "191 False False False False \n", + "192 False False False False \n", + "\n", + " SMILEs_after_normalization normalized \\\n", + "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 False \n", + "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... False \n", + "21 CC(=O)Nc1nnc(S(N)(=O)=O)s1 False \n", + "24 CC(=O)NO False \n", + "31 Nc1nc(=O)c2ncn(COCCO)c2[nH]1 False \n", + "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO... False \n", + "33 Nc1ncnc2[nH]cnc12 False \n", + "34 Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O False \n", + "35 Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O... False \n", + "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 False \n", + "43 NC(=O)NC1NC(=O)NC1=O False \n", + "45 O=c1nc[nH]c2cn[nH]c12 False \n", + "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... False \n", + "52 N=C(N)NC(=O)c1nc(Cl)c(N)nc1N False \n", + "56 NN=C(N)N False \n", + "61 CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl False \n", + "63 CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O False \n", + "70 COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12 False \n", + "76 O=C1C(O)=C(O)OC1C(O)CO False \n", + "77 CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=... False \n", + "89 CC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)... False \n", + "105 CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O... False \n", + "113 Cc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(... False \n", + "115 COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc... False \n", + "118 CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc... False \n", + "120 CCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=... False \n", + "121 CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2... False \n", + "136 CCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F False \n", + "143 CC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O... False \n", + "147 CC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O False \n", + "156 Cc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C... False \n", + "157 C=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c... False \n", + "159 CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1... False \n", + "160 COC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C... False \n", + "162 CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=... False \n", + "165 CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O... False \n", + "166 CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1 False \n", + "167 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... False \n", + "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... False \n", + "171 CNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1O False \n", + "178 CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1 False \n", + "179 CC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)... False \n", + "187 CN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c... False \n", + "188 Oc1nc2cc(Cl)ccc2o1 False \n", + "191 Nc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1 False \n", + "192 CN=C(NC#N)NCCSCc1nc[nH]c1C False \n", + "\n", + " canonicalized_tautomer_smiles new_canonical_tautomer \n", + "11 N=c1ncn(C2OC(CO)C(O)C2O)c(=O)[nH]1 True \n", + "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)c2ccccc2... True \n", + "21 CC(=O)N=c1[nH]nc(S(N)(=O)=O)s1 True \n", + "24 CC(O)=NO True \n", + "31 N=c1[nH]c(=O)c2ncn(COCCO)c2[nH]1 True \n", + "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(=N)[nH]cnc21... True \n", + "33 N=c1[nH]cnc2[nH]cnc12 True \n", + "34 N=c1[nH]cnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C... True \n", + "35 N=c1[nH]cnc2c1ncn2C1OC(CO[PH](=O)(=O)O[PH](=O)... True \n", + "40 CCCSc1ccc2[nH]c(=NC(=O)OC)[nH]c2c1 True \n", + "43 NC(=O)Nc1[nH]c(=O)[nH]c1O True \n", + "45 O=c1[nH]cnc2c[nH]nc12 True \n", + "51 NCCC(=O)C(O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... True \n", + "52 N=C(N)NC(=O)c1nc(Cl)c(=N)[nH]c1N True \n", + "56 N=C(N)NN True \n", + "61 CCOC(=O)C1=C(COCCN)N=C(C)C(C(=O)OC)C1c1ccccc1Cl True \n", + "63 CCN(CC)Cc1cc(N=c2cc[nH]c3cc(Cl)ccc23)ccc1O True \n", + "70 COc1cc(NS(C)(=O)=O)ccc1N=c1c2ccccc2[nH]c2ccccc12 True \n", + "76 OCC(O)c1oc(O)c(O)c1O True \n", + "77 CC(C=CC=C(C)C=CC1C(C)C(=O)C(=O)CC1(C)C)=CC=CC=... True \n", + "89 CC1C(=NC(=O)C(NOC(C)(C)C(=O)O)c2csc(=N)[nH]2)C... True \n", + "105 CC1CC2C3CC=C4CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O... True \n", + "113 Cc1c(C(=O)NC(C(=O)NC(C)C(O)C(C)C(=O)NC(C(=O)NC... True \n", + "115 COc1ccccc1Oc1c(OCCO)[nH]c(-c2ncccn2)nc1=NS(=O)... True \n", + "118 CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3=CC4c5cccc... True \n", + "120 CCCC(=O)N=c1[nH]cnc2c1ncn2C1OC2CO[PH](=O)(=O)O... True \n", + "121 CCCC1OC2CC3C4CC=C5CC(=O)C=CC5(C)C4C(O)CC3(C)C2... True \n", + "136 CCCCCOC(=O)N=c1[nH]c(=O)n(C2OC(C)C(O)C2O)cc1F True \n", + "143 CC1(C(=O)O)CCC2(C)CCC3(C)C(=C2C1)CC(=O)C1C2(C)... True \n", + "147 CC(C)c1ccc(C(=O)N=C(N)N)cc1S(C)(=O)=O True \n", + "156 Cc1nnc(SC=C2CSC3C(NC(=O)Cn4cnnn4)C(=O)N3C2C(=O... True \n", + "157 C=CC1=C(C(=O)O)N2C(=O)C(=NC(=O)C(NOCC(=O)O)c3c... True \n", + "159 CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1... True \n", + "160 COC1(NC(O)=c2sc(=C(C(N)=O)C(=O)O)s2)C(=O)N2C(C... True \n", + "162 CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=... True \n", + "165 CC(=O)OC=C1CSC2C(NC(=O)CCCC(N)C(=O)O)C(=O)N2C1... True \n", + "166 CC(=O)OC=C1CSC2C(NC(=O)Cc3cccs3)C(=O)N2C1C(=O)O True \n", + "167 COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(... True \n", + "168 COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(... True \n", + "171 CNC(=O)C1OC(n2cnc3c(=NCc4cccc(I)c4)[nH]cnc32)C... True \n", + "178 CC(C)N=C(N)N=C(N)Nc1ccc(Cl)cc1 True \n", + "179 CC(=O)OC1(C(C)=O)CCC2C3=CC(Cl)=C4CC(=O)CCC4(C)... True \n", + "187 CN(C)C1C(=O)C(C(N)=O)C(=O)C2(O)C(=O)C3C(=O)c4c... True \n", + "188 O=c1[nH]c2cc(Cl)ccc2o1 True \n", + "191 N=c1ccn(CC(CO)OC[PH](=O)(=O)O)c(=O)[nH]1 True \n", + "192 CN=C(NC#N)NCCSCc1[nH]cnc1C True " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[dataset[\"new_canonical_tautomer\"] == True]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Additionally to the calculation of a canonicalized tautomer, we can also use the function `enumerate_tautomer`, which returns a list of all possible tautomers. While this might be practical for a detailed check of the tautomers of an entry, storing the results in a data frame like here would be impractical. Therefore it is recommended to generate those lists only for specifically selected entries.
\n", + "An Example of how this can be done for the entry with the ID 12 is shown below:" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'N=c1ncn(C2OC(CO)C(O)C2O)c(=O)[nH]1',\n", + " 'N=c1ncn(C2OC(CO)C(O)C2O)c(O)n1',\n", + " 'Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1'}" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Extract the SMILEs for the entry with the ID you want to enumerate the tautomers for\n", + "smiles_to_enumerate_tautomer = \"\".join(\n", + " dataset.loc[dataset[\"IDs\"] == 12, [\"SMILEs\"]].values[0]\n", + ")\n", + "\n", + "# Apply the enumerate_tautomer function on that SMILES\n", + "handle_tautomers.enumerate_tautomer(smiles_to_enumerate_tautomer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 5: Removal of duplicates\n", + "\n", + "Since RDKit can calculate the canonical version of SMILES, we can try to find all duplicate entries in our data frame through a SMILES string comparison." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Following IDs have identical SMILES 168 and 169\n", + "Following IDs have identical SMILES 203 and 204\n" + ] + } + ], + "source": [ + "i = 0\n", + "\n", + "all_SMILES = dataset.loc[:, \"SMILEs\"]\n", + "IDs = dataset.loc[:, \"IDs\"]\n", + "list_len = len(all_SMILES)\n", + "list_len\n", + "\n", + "while i < list_len:\n", + " SMILES = all_SMILES[i]\n", + " ID = IDs[i]\n", + " j = i + 1\n", + " while j < list_len:\n", + " compared_SMILES = all_SMILES[j]\n", + " compared_ID = IDs[j]\n", + " j += 1\n", + " if SMILES == compared_SMILES and ID != compared_ID:\n", + " print(\"Following IDs have identical SMILES\", ID, \"and\", compared_ID)\n", + " continue\n", + " i += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Export of the Dataset\n", + "\n", + "Various exporting possibilities are now open.
\n", + "You can:
\n", + "- export the whole dataset, with its scores in an dedicated row\n", + "- filter for only the entries that passed all filtering step (ergo have a Score of null in the *Filtered_at*-column)\n", + "- filter for the entries that where filtered at a step to perform some transformations on them (e.g. remove salts)\n", + "- export all the mol files you need into a SDF with the function `convert_mol_to_sdf` by firstly generating an array of all mol-entries (`mol_array`) and pass them to the function as a parameter, togheter with a filename `fn` (e.g. `convert_mol_to_sdf(mol_array, fn=\"my_sdf_export\")`)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILEsFiltered_atCleaned_atNormalized_atmolCarbon_presentInorganicsmixturemetalssaltsSMILEs_after_normalizationnormalizedcanonicalized_tautomer_smilesnew_canonical_tautomer
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]300<rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>TrueTrueNoneNoneNoneCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]NoneCCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...None
1217-MethyltestosteroneCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O000<rdkit.Chem.rdchem.Mol object at 0x7f46d6daf580>TrueFalseFalseFalseFalseCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OFalseCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)OFalse
231-alpha-HydroxycholecalciferolC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O000<rdkit.Chem.rdchem.Mol object at 0x7f46d6dafb20>TrueFalseFalseFalseFalseC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OFalseC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1OFalse
342,3-Dimercaptosuccinic acidO=C(O)C(S)C(S)C(=O)O000<rdkit.Chem.rdchem.Mol object at 0x7f46d6daf1c0>TrueFalseFalseFalseFalseO=C(O)C(S)C(S)C(=O)OFalseO=C(O)C(S)C(S)C(=O)OFalse
452,4,6-TrinitrotolueneCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]000<rdkit.Chem.rdchem.Mol object at 0x7f46d6daf0d0>TrueFalseFalseFalseFalseCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]FalseCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]False
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", + "\n", + " SMILEs Filtered_at Cleaned_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 0 \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 0 \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 0 \n", + "3 O=C(O)C(S)C(S)C(=O)O 0 0 \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 0 \n", + "\n", + " Normalized_at mol \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "\n", + " Carbon_present Inorganics mixture metals salts \\\n", + "0 True True None None None \n", + "1 True False False False False \n", + "2 True False False False False \n", + "3 True False False False False \n", + "4 True False False False False \n", + "\n", + " SMILEs_after_normalization normalized \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] None \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O False \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O False \n", + "3 O=C(O)C(S)C(S)C(=O)O False \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] False \n", + "\n", + " canonicalized_tautomer_smiles new_canonical_tautomer \n", + "0 CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)... None \n", + "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O False \n", + "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O False \n", + "3 O=C(O)C(S)C(S)C(=O)O False \n", + "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] False " + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.head()" + ] } ], "metadata": { From f7aacb045d41a1b9dddcff5fa83326064c46953e Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Fri, 14 May 2021 10:35:31 +0200 Subject: [PATCH 49/55] added a remark about the test dataset --- docs/tutorials/standardization.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index a5172558..493e37c4 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -22,7 +22,7 @@ "\n", "We are following the recommended standardization steps of [\"Trust, But Verify\" (Fourches et al., 2010)](https://pubmed.ncbi.nlm.nih.gov/20572635/), and using a modified¹ version of the dataset from the following paper: [Cheminformatics Analysis of Assertions Mined from Literature That Describe Drug-Induced Liver Injury in Different Species](https://pubs.acs.org/doi/10.1021/tx900326k).\n", "\n", - "¹ We added some entries to trigger curation steps not covered by the original data." + "¹ We cut the dataset at 200 entries added some entries to trigger curation steps not covered by the original data." ] }, { @@ -3745,7 +3745,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.8.10" } }, "nbformat": 4, From 4f40a555923b1197f46b98314a6743b38053750b Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Wed, 19 May 2021 20:31:54 +0200 Subject: [PATCH 50/55] fixed typo --- opencadd/compounds/standardization/detect_metals.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/opencadd/compounds/standardization/detect_metals.py b/opencadd/compounds/standardization/detect_metals.py index f1c414c9..05007263 100644 --- a/opencadd/compounds/standardization/detect_metals.py +++ b/opencadd/compounds/standardization/detect_metals.py @@ -6,14 +6,13 @@ from rdkit.Chem.MolStandardize import rdMolStandardize from rdkit import RDLogger -RDLogger.DisableLog('rdApp.info') +RDLogger.DisableLog("rdApp.info") __all__ = ["detect_metals"] def _validation_smiles(mol): - """Utility function that converts a mol to SMILES for later validation. - """ + """Utility function that converts a mol to SMILES for later validation.""" validation_smiles = Chem.MolToSmiles(mol) return validation_smiles @@ -21,14 +20,14 @@ def _validation_smiles(mol): def detect_metals(mol, *args, **kwargs): """Detects metals. - Generates a SMILES out of the entered mol for validation, performs metal - disconnection, turns the changed mol into another SMILES - and validates it with the first SMILES created. + Generates a SMILES out of the entered mol for validation, performs metal + disconnection, turns the changed mol into another SMILES + and validates it with the first SMILES created. Parameters ---------- mol: rdkit.Chem.Mol - The molecule which has to be searched for non-organic + The molecule which has to be searched for metal substructures. Returns From 2c6633154d1c1fcfdf6ecd16a5c42e25610dd81a Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Thu, 20 May 2021 14:14:43 +0200 Subject: [PATCH 51/55] info about max tautomeric enumerations added --- opencadd/compounds/standardization/handle_tautomers.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/opencadd/compounds/standardization/handle_tautomers.py b/opencadd/compounds/standardization/handle_tautomers.py index 1167fd3a..ff312a4e 100644 --- a/opencadd/compounds/standardization/handle_tautomers.py +++ b/opencadd/compounds/standardization/handle_tautomers.py @@ -26,6 +26,7 @@ def enumerate_tautomer(smiles): Notes ----- + Maximal number of tautomeric enumerations is 1000. The default list of Tautomer Transforms is saved in the list: TAUTOMER_TRANSFORMS in rdkit/Chem/MolStandardize/tautomer.py @@ -51,6 +52,7 @@ def canonicalize_tautomer(smiles): Notes ----- + Maximal number of tautomeric enumerations is 1000. The default list of Tautomer Scores is saved in the list: TAUTOMER_SCORES in rdkit/Chem/MolStandardize/tautomer.py """ From 9a6793704b34906022b04fc582e47c5c169eaf5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Rodr=C3=ADguez-Guerra?= Date: Thu, 20 May 2021 20:11:55 +0200 Subject: [PATCH 52/55] JRG rev --- docs/tutorials/standardization.ipynb | 447 ++++++++++++++------------- 1 file changed, 229 insertions(+), 218 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index 493e37c4..d3c8d5d7 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -22,7 +22,7 @@ "\n", "We are following the recommended standardization steps of [\"Trust, But Verify\" (Fourches et al., 2010)](https://pubmed.ncbi.nlm.nih.gov/20572635/), and using a modified¹ version of the dataset from the following paper: [Cheminformatics Analysis of Assertions Mined from Literature That Describe Drug-Induced Liver Injury in Different Species](https://pubs.acs.org/doi/10.1021/tx900326k).\n", "\n", - "¹ We cut the dataset at 200 entries added some entries to trigger curation steps not covered by the original data." + "¹ We trim the dataset at 200 entries and added some entries to trigger curation steps not covered by the original data." ] }, { @@ -39,17 +39,17 @@ "4. Normalization of Specific Chemotypes\n", "5. Removal of Duplicates\n", "\n", - "Each step consists of action performing tasks on the dataset.
\n", - "Actions are:\n", + "Each step consists of action performing tasks on the dataset. Actions are:\n", + "\n", "- filtering\n", "- cleaning\n", "- normalizing\n", "\n", - "**Filtering** actions will result in a score applied to the entries. The score is the number of the filtering task. You can use it to select subsets of the dataset sorting by the column **Filtered_at**.\n", + "**Filtering** actions will result in a score applied to the entries. The score is the number of the filtering task. You can use it to select subsets of the dataset sorting by the column `filtered_at`.\n", "\n", - "**Cleaning** actions will result in a modification of the mol-representation of the entry, overwriting with the recent version calculated in the task. You can use it to select subsets of the dataset sorting by the column **Cleaned_at**.\n", + "**Cleaning** actions will result in a modification of the mol-representation of the entry, overwriting with the recent version calculated in the task. You can use it to select subsets of the dataset sorting by the column `cleaned_at`.\n", "\n", - "**Normalizing** actions also will result in a modification of the mol-representation of the entry.You can use it to select subsets of the dataset sorting by the column **Normalized_at**.\n", + "**Normalizing** actions also will result in a modification of the mol-representation of the entry.You can use it to select subsets of the dataset sorting by the column `normalized_at`.\n", "\n", "At the end of the script, there is the possibility to export subsets of the dataset as a CSV. " ] @@ -63,8 +63,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Tutorial location: /home/allen/dev/opencadd/docs/tutorials\n", - "Repo location: /home/allen/dev/opencadd\n" + "Tutorial location: /home/jaime/devel/py/volkamerlab/opencadd/docs/tutorials\n", + "Repo location: /home/jaime/devel/py/volkamerlab/opencadd\n" ] } ], @@ -113,24 +113,26 @@ "outputs": [], "source": [ "# Utility function to compare Smiles\n", + "# JRG: Why is this function needed? You can use\n", + "# `operator.eq` builtin!\n", "def smiles_string_changed(smiles_old, smiles_new):\n", - " \"\"\"Compares SMILES strings. If they are identical, the value returned is False,\n", + " \"\"\"\n", + " Compares SMILES strings. If they are identical, the value returned is False,\n", " if they differ the value returned is True.\n", "\n", - " Parameters:\n", - " smiles_old: SMILES string\n", - " smiles_new: SMILES string\n", - "\n", - " Returns:\n", - " Boolean:\n", - " Changes = True\n", - " No Changes = False\n", - "\n", + " Parameters\n", + " ----------\n", + " smiles_old: str\n", + " SMILES string\n", + " smiles_new: str\n", + " SMILES string\n", + "\n", + " Returns\n", + " -------\n", + " bool\n", + " True if changes were detectrd, false otherwise\n", " \"\"\"\n", - " if smiles_old == smiles_new:\n", - " return False\n", - " else:\n", - " return True" + " return smiles_old != smiles_new" ] }, { @@ -161,19 +163,23 @@ "dataset = dataset[[\"IDs\", \"Names\", \"SMILEs\"]]\n", "\n", "# Delete empty entries from the main set.\n", + "# JRG: The usual thing here is to use df.dropna() function, possibly with a subset=XXX option\n", "dataset = dataset[(dataset[\"SMILEs\"].notna())]\n", "\n", "# Initializing the score to null at the 'Filtered_at'-column\n", + "# JRG: You can use a constant here, I believe: dataset[X] = task_number\n", "dataset[\"Filtered_at\"] = dataset[\"SMILEs\"].apply(\n", " lambda x, task_number=task_number: task_number\n", ")\n", "\n", "# Initializing the score to null at the 'Cleaned_at'-column\n", + "# JRG: Same as above\n", "dataset[\"Cleaned_at\"] = dataset[\"SMILEs\"].apply(\n", " lambda x, task_number=task_number: task_number\n", ")\n", "\n", "# Initializing the score to null at the 'Normalized_at'-column\n", + "# JRG: Same as above\n", "dataset[\"Normalized_at\"] = dataset[\"SMILEs\"].apply(\n", " lambda x, task_number=task_number: task_number\n", ")\n", @@ -208,7 +214,9 @@ "- Set hybridization property on atoms.\n", "- Remove chirality markers from sp and sp2 hybridized centers.\n", "\n", - "If the conversion from SMILE to mol fails, then those SMILEs will get a **Filtered_at** marker added. \n", + "If the conversion from SMILES to mol fails, then those SMILES will get a **Filtered_at** marker added. \n", + "\n", + "> JRG: SMILES contains the end S already. It is not a plural form!\n", "\n", "To avoid molecule sanitization `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find alternative representation formats of the same molecule. \n", "\n", @@ -240,19 +248,19 @@ "name": "stderr", "output_type": "stream", "text": [ - "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", + "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", "RDKit ERROR: \n", - "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", + "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", "RDKit ERROR: \n", - "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", + "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", "RDKit ERROR: \n", - "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", + "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", "RDKit ERROR: \n", - "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", + "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", "RDKit ERROR: \n", - "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", + "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", "RDKit ERROR: \n", - "RDKit ERROR: [21:43:17] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", + "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", "RDKit ERROR: \n" ] }, @@ -295,7 +303,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", " \n", " \n", " 1\n", @@ -305,7 +313,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e68210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cb20>\n", " \n", " \n", " 2\n", @@ -315,7 +323,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e64b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c7b0>\n", " \n", " \n", " 3\n", @@ -325,7 +333,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e64350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cda0>\n", " \n", " \n", " 4\n", @@ -335,7 +343,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cad0>\n", " \n", " \n", " 5\n", @@ -345,7 +353,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ccb0>\n", " \n", " \n", " 6\n", @@ -355,7 +363,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cd00>\n", " \n", " \n", " 7\n", @@ -365,7 +373,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2da30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ce40>\n", " \n", " \n", " 8\n", @@ -375,7 +383,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2da80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393fea670>\n", " \n", " \n", " 9\n", @@ -385,7 +393,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2dad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ce90>\n", " \n", " \n", " 10\n", @@ -395,7 +403,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2db20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cf80>\n", " \n", " \n", " 11\n", @@ -405,7 +413,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2db70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cf30>\n", " \n", " \n", " 12\n", @@ -415,7 +423,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2dbc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3b030>\n", " \n", " \n", " 13\n", @@ -425,7 +433,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2dc10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3b080>\n", " \n", " \n", " 14\n", @@ -445,7 +453,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2dc60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3b0d0>\n", " \n", " \n", "\n", @@ -507,22 +515,22 @@ "15 0 0 \n", "\n", " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", "14 None \n", - "15 " + "15 " ] }, "execution_count": 5, @@ -534,7 +542,8 @@ "# Setting up the task_number\n", "task_number = 1\n", "\n", - "# A column called mol is beeing added to the dataframe to store the mol-files\n", + "# A column called mol is being added to the dataframe to store the mol-files\n", + "# JRG: I think you can use dataset[\"SMILES\"].apply here directly, without loc (huge overhead)\n", "dataset[\"mol\"] = dataset.loc[:, (\"SMILEs\")].apply(convert_format.convert_smiles_to_mol)\n", "\n", "# Add task_number to failed entries\n", @@ -655,7 +664,7 @@ " 2\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e337b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ead0>\n", " False\n", " \n", " \n", @@ -666,7 +675,7 @@ " 2\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33800>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3eb20>\n", " False\n", " \n", " \n", @@ -683,8 +692,8 @@ "203 2 0 0 \n", "\n", " mol Carbon_present \n", - "202 False \n", - "203 False " + "202 False \n", + "203 False " ] }, "execution_count": 7, @@ -794,7 +803,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", " True\n", " True\n", " \n", @@ -806,7 +815,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e31bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3cf30>\n", " True\n", " True\n", " \n", @@ -818,7 +827,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea30>\n", " True\n", " True\n", " \n", @@ -830,7 +839,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea80>\n", " True\n", " True\n", " \n", @@ -842,7 +851,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3eb70>\n", " True\n", " True\n", " \n", @@ -866,11 +875,11 @@ "204 3 0 0 \n", "\n", " mol Carbon_present \\\n", - "0 True \n", - "114 True \n", - "200 True \n", - "201 True \n", - "204 True \n", + "0 True \n", + "114 True \n", + "200 True \n", + "201 True \n", + "204 True \n", "\n", " Inorganics \n", "0 True \n", @@ -971,7 +980,7 @@ " 4\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ccb0>\n", " True\n", " False\n", " True\n", @@ -988,7 +997,7 @@ "5 0 0 \n", "\n", " mol Carbon_present Inorganics \\\n", - "5 True False \n", + "5 True False \n", "\n", " mixture \n", "5 True " @@ -1204,7 +1213,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea30>\n", " True\n", " True\n", " None\n", @@ -1218,7 +1227,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3eb70>\n", " True\n", " True\n", " None\n", @@ -1234,8 +1243,8 @@ "204 206 covalent_metal CCC(=O)O[Na] 3 0 \n", "\n", " Normalized_at mol \\\n", - "200 0 \n", - "204 0 \n", + "200 0 \n", + "204 0 \n", "\n", " Carbon_present Inorganics mixture metals \n", "200 True True None True \n", @@ -1362,7 +1371,7 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2de90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3b300>\n", " True\n", " False\n", " False\n", @@ -1377,7 +1386,7 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e336c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3e9e0>\n", " True\n", " False\n", " False\n", @@ -1394,8 +1403,8 @@ "199 200 Citric acid O=C(O)CC(O)(CC(=O)O)C(=O)O 6 0 \n", "\n", " Normalized_at mol \\\n", - "22 0 \n", - "199 0 \n", + "22 0 \n", + "199 0 \n", "\n", " Carbon_present Inorganics mixture metals salts \n", "22 True False False False True \n", @@ -1468,7 +1477,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", " True\n", " True\n", " None\n", @@ -1483,7 +1492,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e68210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cb20>\n", " True\n", " False\n", " False\n", @@ -1498,7 +1507,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e64b20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c7b0>\n", " True\n", " False\n", " False\n", @@ -1513,7 +1522,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e64350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cda0>\n", " True\n", " False\n", " False\n", @@ -1528,7 +1537,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cad0>\n", " True\n", " False\n", " False\n", @@ -1555,11 +1564,11 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 0 \n", "\n", " Normalized_at mol \\\n", - "0 0 \n", - "1 0 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", "\n", " Carbon_present Inorganics mixture metals salts \n", "0 True True None None None \n", @@ -1664,7 +1673,7 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6daf3a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e649e0>\n", " True\n", " False\n", " False\n", @@ -1679,7 +1688,7 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dc6080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e11d50>\n", " True\n", " False\n", " False\n", @@ -1696,8 +1705,8 @@ "199 200 Citric acid 6 0 0 \n", "\n", " mol Carbon_present \\\n", - "22 True \n", - "199 True \n", + "22 True \n", + "199 True \n", "\n", " Inorganics mixture metals salts \n", "22 False False False True \n", @@ -1792,7 +1801,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", " True\n", " True\n", " None\n", @@ -1807,7 +1816,7 @@ " 4\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e2d990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ccb0>\n", " True\n", " False\n", " True\n", @@ -1822,7 +1831,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e31bc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3cf30>\n", " True\n", " True\n", " None\n", @@ -1837,7 +1846,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea30>\n", " True\n", " True\n", " None\n", @@ -1852,7 +1861,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea80>\n", " True\n", " True\n", " None\n", @@ -1867,7 +1876,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e33850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3eb70>\n", " True\n", " True\n", " None\n", @@ -1904,12 +1913,12 @@ "204 0 0 \n", "\n", " mol Carbon_present \\\n", - "0 True \n", - "5 True \n", - "114 True \n", - "200 True \n", - "201 True \n", - "204 True \n", + "0 True \n", + "5 True \n", + "114 True \n", + "200 True \n", + "201 True \n", + "204 True \n", "\n", " Inorganics mixture metals salts \n", "0 True None None True \n", @@ -2059,7 +2068,7 @@ " 0\n", " 0\n", " 7\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d83260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e0c670>\n", " True\n", " False\n", " False\n", @@ -2080,7 +2089,7 @@ "205 0 7 \n", "\n", " mol Carbon_present \\\n", - "205 True \n", + "205 True \n", "\n", " Inorganics mixture metals salts SMILEs_after_normalization normalized \n", "205 False False False False CC(=O)N(C)C True " @@ -2219,7 +2228,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6daf9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47c60>\n", " True\n", " False\n", " False\n", @@ -2238,7 +2247,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dafa30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47210>\n", " True\n", " False\n", " False\n", @@ -2257,7 +2266,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dafd00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e478a0>\n", " True\n", " False\n", " False\n", @@ -2276,7 +2285,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9fbc0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e477b0>\n", " True\n", " False\n", " False\n", @@ -2295,7 +2304,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58170>\n", " True\n", " False\n", " False\n", @@ -2314,7 +2323,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f530>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58030>\n", " True\n", " False\n", " False\n", @@ -2333,7 +2342,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e588f0>\n", " True\n", " False\n", " False\n", @@ -2352,7 +2361,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9fc10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58670>\n", " True\n", " False\n", " False\n", @@ -2371,7 +2380,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e586c0>\n", " True\n", " False\n", " False\n", @@ -2390,7 +2399,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9fa30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58080>\n", " True\n", " False\n", " False\n", @@ -2409,7 +2418,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58da0>\n", " True\n", " False\n", " False\n", @@ -2428,7 +2437,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58260>\n", " True\n", " False\n", " False\n", @@ -2447,7 +2456,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f6c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58ee0>\n", " True\n", " False\n", " False\n", @@ -2466,7 +2475,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9fb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58620>\n", " True\n", " False\n", " False\n", @@ -2485,7 +2494,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f800>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58580>\n", " True\n", " False\n", " False\n", @@ -2504,7 +2513,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f120>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e769e0>\n", " True\n", " False\n", " False\n", @@ -2523,7 +2532,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d9f940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76260>\n", " True\n", " False\n", " False\n", @@ -2542,7 +2551,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76c10>\n", " True\n", " False\n", " False\n", @@ -2561,7 +2570,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7cd50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76440>\n", " True\n", " False\n", " False\n", @@ -2580,7 +2589,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7ca80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76a30>\n", " True\n", " False\n", " False\n", @@ -2599,7 +2608,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7cee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76ad0>\n", " True\n", " False\n", " False\n", @@ -2618,7 +2627,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c6c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393eb7ad0>\n", " True\n", " False\n", " False\n", @@ -2637,7 +2646,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393eb7710>\n", " True\n", " False\n", " False\n", @@ -2656,7 +2665,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393eb7a30>\n", " True\n", " False\n", " False\n", @@ -2675,7 +2684,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7c3f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393ea39e0>\n", " True\n", " False\n", " False\n", @@ -2694,7 +2703,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7a580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393ea3710>\n", " True\n", " False\n", " False\n", @@ -2713,7 +2722,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7a990>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393ea3440>\n", " True\n", " False\n", " False\n", @@ -2732,7 +2741,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7ada0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393ea3e40>\n", " True\n", " False\n", " False\n", @@ -2751,7 +2760,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7adf0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a7b0>\n", " True\n", " False\n", " False\n", @@ -2770,7 +2779,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7a440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a300>\n", " True\n", " False\n", " False\n", @@ -2789,7 +2798,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7ab70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a490>\n", " True\n", " False\n", " False\n", @@ -2808,7 +2817,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d7a0d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a940>\n", " True\n", " False\n", " False\n", @@ -2827,7 +2836,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a4e0>\n", " True\n", " False\n", " False\n", @@ -2846,7 +2855,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4aa80>\n", " True\n", " False\n", " False\n", @@ -2865,7 +2874,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a670>\n", " True\n", " False\n", " False\n", @@ -2884,7 +2893,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca8f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a9e0>\n", " True\n", " False\n", " False\n", @@ -2903,7 +2912,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a8f0>\n", " True\n", " False\n", " False\n", @@ -2922,7 +2931,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca2b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a260>\n", " True\n", " False\n", " False\n", @@ -2941,7 +2950,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56a30>\n", " True\n", " False\n", " False\n", @@ -2960,7 +2969,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e569e0>\n", " True\n", " False\n", " False\n", @@ -2979,7 +2988,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca5d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56760>\n", " True\n", " False\n", " False\n", @@ -2998,7 +3007,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dcab70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56300>\n", " True\n", " False\n", " False\n", @@ -3017,7 +3026,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca1c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56800>\n", " True\n", " False\n", " False\n", @@ -3036,7 +3045,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dcadf0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e568a0>\n", " True\n", " False\n", " False\n", @@ -3055,7 +3064,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dca850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56080>\n", " True\n", " False\n", " False\n", @@ -3074,7 +3083,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6d83030>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e563a0>\n", " True\n", " False\n", " False\n", @@ -3235,52 +3244,52 @@ "192 0 0 \n", "\n", " mol Carbon_present \\\n", - "11 True \n", - "18 True \n", - "21 True \n", - "24 True \n", - "31 True \n", - "32 True \n", - "33 True \n", - "34 True \n", - "35 True \n", - "40 True \n", - "43 True \n", - "45 True \n", - "51 True \n", - "52 True \n", - "56 True \n", - "61 True \n", - "63 True \n", - "70 True \n", - "76 True \n", - "77 True \n", - "89 True \n", - "105 True \n", - "113 True \n", - "115 True \n", - "118 True \n", - "120 True \n", - "121 True \n", - "136 True \n", - "143 True \n", - "147 True \n", - "156 True \n", - "157 True \n", - "159 True \n", - "160 True \n", - "162 True \n", - "165 True \n", - "166 True \n", - "167 True \n", - "168 True \n", - "171 True \n", - "178 True \n", - "179 True \n", - "187 True \n", - "188 True \n", - "191 True \n", - "192 True \n", + "11 True \n", + "18 True \n", + "21 True \n", + "24 True \n", + "31 True \n", + "32 True \n", + "33 True \n", + "34 True \n", + "35 True \n", + "40 True \n", + "43 True \n", + "45 True \n", + "51 True \n", + "52 True \n", + "56 True \n", + "61 True \n", + "63 True \n", + "70 True \n", + "76 True \n", + "77 True \n", + "89 True \n", + "105 True \n", + "113 True \n", + "115 True \n", + "118 True \n", + "120 True \n", + "121 True \n", + "136 True \n", + "143 True \n", + "147 True \n", + "156 True \n", + "157 True \n", + "159 True \n", + "160 True \n", + "162 True \n", + "165 True \n", + "166 True \n", + "167 True \n", + "168 True \n", + "171 True \n", + "178 True \n", + "179 True \n", + "187 True \n", + "188 True \n", + "191 True \n", + "192 True \n", "\n", " Inorganics mixture metals salts \\\n", "11 False False False False \n", @@ -3478,7 +3487,9 @@ "source": [ "### Step 5: Removal of duplicates\n", "\n", - "Since RDKit can calculate the canonical version of SMILES, we can try to find all duplicate entries in our data frame through a SMILES string comparison." + "Since RDKit can calculate the canonical version of SMILES, we can try to find all duplicate entries in our data frame through a SMILES string comparison.\n", + "\n", + "> JRG: Are you actually comparing canonical smiles here? I think they are just the raw values present in the dataset, aren't they? You might need to do a round trip MolFromSmiles->MolToSmiles to get the canonical version. Molecule comparison is tricky! Best way is to resort to graph homology, but we are not doing that now. Just ensure you are indeed using canonical smiles.\n" ] }, { @@ -3513,7 +3524,7 @@ " j += 1\n", " if SMILES == compared_SMILES and ID != compared_ID:\n", " print(\"Following IDs have identical SMILES\", ID, \"and\", compared_ID)\n", - " continue\n", + " continue # JRG: What's this continue for? It's the last statement... do you mean `break`?\n", " i += 1" ] }, @@ -3584,7 +3595,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6e683f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", " True\n", " True\n", " None\n", @@ -3603,7 +3614,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6daf580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47170>\n", " True\n", " False\n", " False\n", @@ -3622,7 +3633,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6dafb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47350>\n", " True\n", " False\n", " False\n", @@ -3641,7 +3652,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6daf1c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47850>\n", " True\n", " False\n", " False\n", @@ -3660,7 +3671,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f46d6daf0d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47620>\n", " True\n", " False\n", " False\n", @@ -3691,11 +3702,11 @@ "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 0 \n", "\n", " Normalized_at mol \\\n", - "0 0 \n", - "1 0 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", "\n", " Carbon_present Inorganics mixture metals salts \\\n", "0 True True None None None \n", @@ -3745,7 +3756,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.8.3" } }, "nbformat": 4, From 9192ca7b4dc839429257828ee7159bd199312813 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Sun, 23 May 2021 20:44:14 +0200 Subject: [PATCH 53/55] minor text fixes --- docs/tutorials/standardization.ipynb | 789 +++++++++++++++++---------- 1 file changed, 496 insertions(+), 293 deletions(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index d3c8d5d7..b7bb36db 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -63,8 +63,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Tutorial location: /home/jaime/devel/py/volkamerlab/opencadd/docs/tutorials\n", - "Repo location: /home/jaime/devel/py/volkamerlab/opencadd\n" + "Tutorial location: C:\\Users\\Allen.DESKTOP-O8FR8HB\\Documents\\DEV\\opencadd\\docs\\tutorials\n", + "Repo location: C:\\Users\\Allen.DESKTOP-O8FR8HB\\Documents\\DEV\\opencadd\n" ] } ], @@ -112,7 +112,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Utility function to compare Smiles\n", + "# Utility function to compare SMILES\n", "# JRG: Why is this function needed? You can use\n", "# `operator.eq` builtin!\n", "def smiles_string_changed(smiles_old, smiles_new):\n", @@ -143,7 +143,7 @@ "------------------------------------------------\n", "Before any curation steps are can be applied, we need to import the dataset as a Pandas Dataframe.
\n", "At this point you have the possibility to select the columns you need for the curation process. For our example dataset we will use columns IDs, Names and SMILEs.
\n", - "After that, we search for all entries which have empty strings saved under SMILEs and remove them from the dataset.
\n", + "After that, we search for all entries which have empty strings saved under SMILES and remove them from the dataset.
\n", "After the import, we add a Filtered_at column to track which standardization step filtered the entry. \n", "The initial `task_number` will be 0, which leads to a default Filtered_at-value of 0 for all entries, where null stands for all the entries that passed without any filtering. " ] @@ -152,7 +152,114 @@ "cell_type": "code", "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDsNamesSMILESFiltered_atCleaned_atNormalized_at
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]000
1217-MethyltestosteroneCC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C000
231-alpha-HydroxycholecalciferolCC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C000
342,3-Dimercaptosuccinic acidOC(=O)C(S)C(S)C(O)=O000
452,4,6-TrinitrotolueneCc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O000
\n", + "
" + ], + "text/plain": [ + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", + "\n", + " SMILES Filtered_at Cleaned_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 0 \n", + "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 0 \n", + "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 0 \n", + "3 OC(=O)C(S)C(S)C(O)=O 0 0 \n", + "4 Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O 0 0 \n", + "\n", + " Normalized_at \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "task_number = 0\n", "\n", @@ -161,26 +268,28 @@ "\n", "# Filter columns\n", "dataset = dataset[[\"IDs\", \"Names\", \"SMILEs\"]]\n", + "# Rename a column, due to an typo in the original dataset\n", + "dataset = dataset.rename(columns={\"SMILEs\": \"SMILES\"})\n", "\n", "# Delete empty entries from the main set.\n", "# JRG: The usual thing here is to use df.dropna() function, possibly with a subset=XXX option\n", - "dataset = dataset[(dataset[\"SMILEs\"].notna())]\n", + "dataset = dataset[(dataset[\"SMILES\"].notna())]\n", "\n", "# Initializing the score to null at the 'Filtered_at'-column\n", "# JRG: You can use a constant here, I believe: dataset[X] = task_number\n", - "dataset[\"Filtered_at\"] = dataset[\"SMILEs\"].apply(\n", + "dataset[\"Filtered_at\"] = dataset[\"SMILES\"].apply(\n", " lambda x, task_number=task_number: task_number\n", ")\n", "\n", "# Initializing the score to null at the 'Cleaned_at'-column\n", "# JRG: Same as above\n", - "dataset[\"Cleaned_at\"] = dataset[\"SMILEs\"].apply(\n", + "dataset[\"Cleaned_at\"] = dataset[\"SMILES\"].apply(\n", " lambda x, task_number=task_number: task_number\n", ")\n", "\n", "# Initializing the score to null at the 'Normalized_at'-column\n", "# JRG: Same as above\n", - "dataset[\"Normalized_at\"] = dataset[\"SMILEs\"].apply(\n", + "dataset[\"Normalized_at\"] = dataset[\"SMILES\"].apply(\n", " lambda x, task_number=task_number: task_number\n", ")\n", "\n", @@ -189,14 +298,15 @@ "dataset = dataset.reset_index(drop=True)\n", "\n", "# [Optional] Display empty entries for manual inspection.\n", - "# dataset[(dataset[\"SMILEs\"].isnull())]" + "# dataset[(dataset[\"SMILES\"].isnull())]\n", + "dataset.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 1: Structural Converison\n", + "### Step 1: Encoding Converison\n", "------------------------------------------\n", "\n", "__Convert the SMILES representation format of the compounds into Mol-files__\n", @@ -220,8 +330,8 @@ "\n", "To avoid molecule sanitization `convert_smiles_to_mol` can be called with the argument `sanitize=False`. Keep in mind that the generation of different Lewis structures serves to find alternative representation formats of the same molecule. \n", "\n", - "__Overwrite the SMILES representation with ones compiled from our generated Mol-files__\n", - "In order to register the changes we make to the entries, we have to recompile the SMILES encoding with our converting functions. The conversion back to SMILES has to happen since SMILES encodings vary depending on the algorithm used to calculate them. The newly calculated SMILES will be used as a validation parameter to determine any changes made to our entries further down the curation pipeline. \n", + "__Overwrite the SMILES representation with ones compiled from our generated Mol-files__
\n", + "In order to register the changes we make to the entries, we have to calculate canonical SMILES with our function `convert_format`, which by default returns a canonical representation. The conversion back to SMILES has to happen since SMILES encodings vary depending on the algorithm used to calculate them. The newly calculated SMILES will be used as a validation parameter to determine any changes made to our entries further down the curation pipeline. \n", "\n", "References:\n", "\n", @@ -244,26 +354,6 @@ "execution_count": 5, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 1 2 3 4 5 7 9\n", - "RDKit ERROR: \n", - "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 2 3 4 6 7 8 10 11 12\n", - "RDKit ERROR: \n", - "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 6 8 10\n", - "RDKit ERROR: \n", - "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 7 8 9 10 11 12 13 14 15\n", - "RDKit ERROR: \n", - "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 57 58 60\n", - "RDKit ERROR: \n", - "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 14 15 16 17 18 19 20 21 23\n", - "RDKit ERROR: \n", - "RDKit ERROR: [19:54:37] Can't kekulize mol. Unkekulized atoms: 11 12 13 15 16 17 19 20 21\n", - "RDKit ERROR: \n" - ] - }, { "data": { "text/html": [ @@ -287,7 +377,7 @@ " \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -303,7 +393,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 1\n", @@ -313,7 +403,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 2\n", @@ -323,7 +413,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c7b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 3\n", @@ -333,7 +423,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cda0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 4\n", @@ -343,7 +433,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 5\n", @@ -353,7 +443,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ccb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 6\n", @@ -363,7 +453,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cd00>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 7\n", @@ -373,7 +463,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ce40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 8\n", @@ -383,7 +473,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393fea670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 9\n", @@ -393,7 +483,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ce90>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 10\n", @@ -403,7 +493,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cf80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 11\n", @@ -413,7 +503,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cf30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 12\n", @@ -423,7 +513,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3b030>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 13\n", @@ -433,7 +523,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3b080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", " 14\n", @@ -453,7 +543,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3b0d0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " \n", " \n", "\n", @@ -478,7 +568,7 @@ "14 15 6-Mercaptopurine \n", "15 16 Acadesine \n", "\n", - " SMILEs Filtered_at \\\n", + " SMILES Filtered_at \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 \n", "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 \n", @@ -514,23 +604,23 @@ "14 0 0 \n", "15 0 0 \n", "\n", - " mol \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 \n", - "6 \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 \n", - "12 \n", - "13 \n", - "14 None \n", - "15 " + " mol \n", + "0 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -664,7 +753,7 @@ " 2\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ead0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " False\n", " \n", " \n", @@ -675,7 +764,7 @@ " 2\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3eb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " False\n", " \n", " \n", @@ -683,7 +772,7 @@ "" ], "text/plain": [ - " IDs Names SMILEs \\\n", + " IDs Names SMILES \\\n", "202 203 test_salt Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", "203 204 test_duplicate Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", "\n", @@ -691,9 +780,9 @@ "202 2 0 0 \n", "203 2 0 0 \n", "\n", - " mol Carbon_present \n", - "202 False \n", - "203 False " + " mol Carbon_present \n", + "202 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -803,7 +892,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " \n", @@ -815,7 +904,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3cf30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " \n", @@ -827,7 +916,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " \n", @@ -839,7 +928,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " \n", @@ -851,7 +940,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3eb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " \n", @@ -860,7 +949,7 @@ "" ], "text/plain": [ - " IDs Names SMILEs \\\n", + " IDs Names SMILES \\\n", "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", @@ -874,12 +963,12 @@ "201 3 0 0 \n", "204 3 0 0 \n", "\n", - " mol Carbon_present \\\n", - "0 True \n", - "114 True \n", - "200 True \n", - "201 True \n", - "204 True \n", + " mol Carbon_present \\\n", + "0 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -980,7 +1069,7 @@ " 4\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ccb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " True\n", @@ -990,17 +1079,17 @@ "" ], "text/plain": [ - " IDs Names SMILEs Filtered_at \\\n", + " IDs Names SMILES Filtered_at \\\n", "5 6 2-Deoxy-D-glucose C1COCCO1.OCC1OC(O)CC(O)C1O 4 \n", "\n", " Cleaned_at Normalized_at \\\n", "5 0 0 \n", "\n", - " mol Carbon_present Inorganics \\\n", - "5 True False \n", + " mol Carbon_present \\\n", + "5 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -1114,7 +1203,7 @@ ], "text/plain": [ "Empty DataFrame\n", - "Columns: [IDs, Names, SMILEs, Filtered_at, Cleaned_at, Normalized_at, mol, Carbon_present, Inorganics, mixture, metals]\n", + "Columns: [IDs, Names, SMILES, Filtered_at, Cleaned_at, Normalized_at, mol, Carbon_present, Inorganics, mixture, metals]\n", "Index: []" ] }, @@ -1193,7 +1282,7 @@ " \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -1213,7 +1302,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", @@ -1227,7 +1316,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3eb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", @@ -1238,13 +1327,13 @@ "" ], "text/plain": [ - " IDs Names SMILEs Filtered_at Cleaned_at \\\n", + " IDs Names SMILES Filtered_at Cleaned_at \\\n", "200 201 zirconium CCO[Zr](OCC)(OCC)OCC 3 0 \n", "204 206 covalent_metal CCC(=O)O[Na] 3 0 \n", "\n", - " Normalized_at mol \\\n", - "200 0 \n", - "204 0 \n", + " Normalized_at mol \\\n", + "200 0 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -1371,7 +1461,7 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3b300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", @@ -1386,7 +1476,7 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3e9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", @@ -1398,13 +1488,13 @@ "" ], "text/plain": [ - " IDs Names SMILEs Filtered_at Cleaned_at \\\n", + " IDs Names SMILES Filtered_at Cleaned_at \\\n", "22 23 Acetic acid CC(=O)O 6 0 \n", "199 200 Citric acid O=C(O)CC(O)(CC(=O)O)C(=O)O 6 0 \n", "\n", - " Normalized_at mol \\\n", - "22 0 \n", - "199 0 \n", + " Normalized_at mol \\\n", + "22 0 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -1477,7 +1567,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", @@ -1492,7 +1582,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cb20>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", @@ -1507,7 +1597,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c7b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", @@ -1522,7 +1612,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cda0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", @@ -1537,7 +1627,7 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1cad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", @@ -1556,19 +1646,19 @@ "3 4 2,3-Dimercaptosuccinic acid \n", "4 5 2,4,6-Trinitrotoluene \n", "\n", - " SMILEs Filtered_at Cleaned_at \\\n", + " SMILES Filtered_at Cleaned_at \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 0 \n", "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 0 \n", "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 0 \n", "3 O=C(O)C(S)C(S)C(=O)O 0 0 \n", "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 0 \n", "\n", - " Normalized_at mol \\\n", - "0 0 \n", - "1 0 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", + " Normalized_at mol \\\n", + "0 0 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -1673,7 +1763,7 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e649e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", @@ -1688,7 +1778,7 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e11d50>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", " True\n", " False\n", " False\n", @@ -1700,13 +1790,13 @@ "" ], "text/plain": [ - " IDs Names SMILEs Filtered_at Cleaned_at Normalized_at \\\n", + " IDs Names SMILES Filtered_at Cleaned_at Normalized_at \\\n", "22 23 Acetic acid 6 0 0 \n", "199 200 Citric acid 6 0 0 \n", "\n", - " mol Carbon_present \\\n", - "22 True \n", - "199 True \n", + " mol Carbon_present \\\n", + "22 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -1801,7 +1891,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", @@ -1816,7 +1906,7 @@ " 4\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1ccb0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " True\n", @@ -1831,7 +1921,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3cf30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", @@ -1846,7 +1936,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", @@ -1861,7 +1951,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3ea80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", @@ -1876,7 +1966,7 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f3eb70>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", @@ -1896,7 +1986,7 @@ "201 202 hemoglobin \n", "204 206 covalent_metal \n", "\n", - " SMILEs Filtered_at \\\n", + " SMILES Filtered_at \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 \n", "5 C1COCCO1.OCC1OC(O)CC(O)C1O 4 \n", "114 CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O 3 \n", @@ -1912,13 +2002,13 @@ "201 0 0 \n", "204 0 0 \n", "\n", - " mol Carbon_present \\\n", - "0 True \n", - "5 True \n", - "114 True \n", - "200 True \n", - "201 True \n", - "204 True \n", + " mol Carbon_present \\\n", + "0 save as Boolean Value\n", "dataset[\"normalized\"] = dataset.apply(\n", - " lambda row: smiles_string_changed(row.SMILEs, row.SMILEs_after_normalization)\n", + " lambda row: smiles_string_changed(row.SMILES, row.SMILES_after_normalization)\n", " if row.Filtered_at == 0\n", " else None,\n", " axis=1,\n", @@ -2019,7 +2109,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -2045,7 +2135,7 @@ " \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -2056,6 +2146,7 @@ " metals\n", " salts\n", " SMILEs_after_normalization\n", + " SMILES_after_normalization\n", " normalized\n", " \n", " \n", @@ -2068,13 +2159,14 @@ " 0\n", " 0\n", " 7\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e0c670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(=O)N(C)C\n", + " CC(=O)N(C)C\n", " True\n", " \n", " \n", @@ -2082,20 +2174,23 @@ "" ], "text/plain": [ - " IDs Names SMILEs Filtered_at \\\n", + " IDs Names SMILES Filtered_at \\\n", "205 207 test_charge_recombination CC([O-])=[N+](C)C 0 \n", "\n", " Cleaned_at Normalized_at \\\n", "205 0 7 \n", "\n", - " mol Carbon_present \\\n", - "205 True \n", + " mol Carbon_present \\\n", + "205 save as Boolean Value\n", "dataset[\"new_canonical_tautomer\"] = dataset.apply(\n", - " lambda row: smiles_string_changed(row.SMILEs, row.canonicalized_tautomer_smiles)\n", + " lambda row: smiles_string_changed(row.SMILES, row.canonicalized_tautomer_smiles)\n", " if row.Filtered_at == 0\n", " else None,\n", " axis=1,\n", @@ -2172,12 +2267,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Below you can see all entries where the canonicalized tautomer differs to the SMILEs, that resulted from the curation process." + "Below you can see all entries where the canonicalized tautomer differs to the SMILES, that resulted from the curation process." ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -2203,7 +2298,7 @@ " \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -2214,6 +2309,7 @@ " metals\n", " salts\n", " SMILEs_after_normalization\n", + " SMILES_after_normalization\n", " normalized\n", " canonicalized_tautomer_smiles\n", " new_canonical_tautomer\n", @@ -2228,13 +2324,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47c60>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", + " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", " False\n", " N=c1ncn(C2OC(CO)C(O)C2O)c(=O)[nH]1\n", " True\n", @@ -2247,13 +2344,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47210>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", + " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", " False\n", " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)c2ccccc2...\n", " True\n", @@ -2266,13 +2364,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e478a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(=O)Nc1nnc(S(N)(=O)=O)s1\n", + " CC(=O)Nc1nnc(S(N)(=O)=O)s1\n", " False\n", " CC(=O)N=c1[nH]nc(S(N)(=O)=O)s1\n", " True\n", @@ -2285,13 +2384,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e477b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(=O)NO\n", + " CC(=O)NO\n", " False\n", " CC(O)=NO\n", " True\n", @@ -2304,13 +2404,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Nc1nc(=O)c2ncn(COCCO)c2[nH]1\n", + " Nc1nc(=O)c2ncn(COCCO)c2[nH]1\n", " False\n", " N=c1[nH]c(=O)c2ncn(COCCO)c2[nH]1\n", " True\n", @@ -2323,13 +2424,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58030>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...\n", + " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...\n", " False\n", " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(=N)[nH]cnc21...\n", " True\n", @@ -2342,13 +2444,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e588f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Nc1ncnc2[nH]cnc12\n", + " Nc1ncnc2[nH]cnc12\n", " False\n", " N=c1[nH]cnc2[nH]cnc12\n", " True\n", @@ -2361,13 +2464,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O\n", + " Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O\n", " False\n", " N=c1[nH]cnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C...\n", " True\n", @@ -2380,13 +2484,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e586c0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...\n", + " Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...\n", " False\n", " N=c1[nH]cnc2c1ncn2C1OC(CO[PH](=O)(=O)O[PH](=O)...\n", " True\n", @@ -2399,13 +2504,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1\n", + " CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1\n", " False\n", " CCCSc1ccc2[nH]c(=NC(=O)OC)[nH]c2c1\n", " True\n", @@ -2418,13 +2524,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58da0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " NC(=O)NC1NC(=O)NC1=O\n", + " NC(=O)NC1NC(=O)NC1=O\n", " False\n", " NC(=O)Nc1[nH]c(=O)[nH]c1O\n", " True\n", @@ -2437,13 +2544,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " O=c1nc[nH]c2cn[nH]c12\n", + " O=c1nc[nH]c2cn[nH]c12\n", " False\n", " O=c1[nH]cnc2c[nH]nc12\n", " True\n", @@ -2456,13 +2564,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58ee0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", + " NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", " False\n", " NCCC(=O)C(O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", " True\n", @@ -2475,13 +2584,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " N=C(N)NC(=O)c1nc(Cl)c(N)nc1N\n", + " N=C(N)NC(=O)c1nc(Cl)c(N)nc1N\n", " False\n", " N=C(N)NC(=O)c1nc(Cl)c(=N)[nH]c1N\n", " True\n", @@ -2494,13 +2604,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e58580>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " NN=C(N)N\n", + " NN=C(N)N\n", " False\n", " N=C(N)NN\n", " True\n", @@ -2513,13 +2624,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e769e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl\n", + " CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl\n", " False\n", " CCOC(=O)C1=C(COCCN)N=C(C)C(C(=O)OC)C1c1ccccc1Cl\n", " True\n", @@ -2532,13 +2644,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O\n", + " CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O\n", " False\n", " CCN(CC)Cc1cc(N=c2cc[nH]c3cc(Cl)ccc23)ccc1O\n", " True\n", @@ -2551,13 +2664,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76c10>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12\n", + " COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12\n", " False\n", " COc1cc(NS(C)(=O)=O)ccc1N=c1c2ccccc2[nH]c2ccccc12\n", " True\n", @@ -2570,13 +2684,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " O=C1C(O)=C(O)OC1C(O)CO\n", + " O=C1C(O)=C(O)OC1C(O)CO\n", " False\n", " OCC(O)c1oc(O)c(O)c1O\n", " True\n", @@ -2589,13 +2704,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=...\n", + " CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=...\n", " False\n", " CC(C=CC=C(C)C=CC1C(C)C(=O)C(=O)CC1(C)C)=CC=CC=...\n", " True\n", @@ -2608,13 +2724,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e76ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338B...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)...\n", + " CC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)...\n", " False\n", " CC1C(=NC(=O)C(NOC(C)(C)C(=O)O)c2csc(=N)[nH]2)C...\n", " True\n", @@ -2627,13 +2744,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393eb7ad0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...\n", + " CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...\n", " False\n", " CC1CC2C3CC=C4CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...\n", " True\n", @@ -2646,13 +2764,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393eb7710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Cc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(...\n", + " Cc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(...\n", " False\n", " Cc1c(C(=O)NC(C(=O)NC(C)C(O)C(C)C(=O)NC(C(=O)NC...\n", " True\n", @@ -2665,13 +2784,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393eb7a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc...\n", + " COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc...\n", " False\n", " COc1ccccc1Oc1c(OCCO)[nH]c(-c2ncccn2)nc1=NS(=O)...\n", " True\n", @@ -2684,13 +2804,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393ea39e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc...\n", + " CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc...\n", " False\n", " CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3=CC4c5cccc...\n", " True\n", @@ -2703,13 +2824,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393ea3710>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=...\n", + " CCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=...\n", " False\n", " CCCC(=O)N=c1[nH]cnc2c1ncn2C1OC2CO[PH](=O)(=O)O...\n", " True\n", @@ -2722,13 +2844,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393ea3440>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2...\n", + " CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2...\n", " False\n", " CCCC1OC2CC3C4CC=C5CC(=O)C=CC5(C)C4C(O)CC3(C)C2...\n", " True\n", @@ -2741,13 +2864,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393ea3e40>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F\n", + " CCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F\n", " False\n", " CCCCCOC(=O)N=c1[nH]c(=O)n(C2OC(C)C(O)C2O)cc1F\n", " True\n", @@ -2760,13 +2884,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a7b0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O...\n", + " CC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O...\n", " False\n", " CC1(C(=O)O)CCC2(C)CCC3(C)C(=C2C1)CC(=O)C1C2(C)...\n", " True\n", @@ -2779,13 +2904,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O\n", + " CC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O\n", " False\n", " CC(C)c1ccc(C(=O)N=C(N)N)cc1S(C)(=O)=O\n", " True\n", @@ -2798,13 +2924,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a490>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Cc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C...\n", + " Cc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C...\n", " False\n", " Cc1nnc(SC=C2CSC3C(NC(=O)Cn4cnnn4)C(=O)N3C2C(=O...\n", " True\n", @@ -2817,13 +2944,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a940>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " C=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c...\n", + " C=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c...\n", " False\n", " C=CC1=C(C(=O)O)N2C(=O)C(=NC(=O)C(NOCC(=O)O)c3c...\n", " True\n", @@ -2836,13 +2964,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...\n", + " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...\n", " False\n", " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...\n", " True\n", @@ -2855,13 +2984,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4aa80>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " COC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C...\n", + " COC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C...\n", " False\n", " COC1(NC(O)=c2sc(=C(C(N)=O)C(=O)O)s2)C(=O)N2C(C...\n", " True\n", @@ -2874,13 +3004,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a670>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...\n", + " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...\n", " False\n", " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...\n", " True\n", @@ -2893,13 +3024,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a9e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O...\n", + " CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O...\n", " False\n", " CC(=O)OC=C1CSC2C(NC(=O)CCCC(N)C(=O)O)C(=O)N2C1...\n", " True\n", @@ -2912,13 +3044,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a8f0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1\n", + " CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1\n", " False\n", " CC(=O)OC=C1CSC2C(NC(=O)Cc3cccs3)C(=O)N2C1C(=O)O\n", " True\n", @@ -2931,13 +3064,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e4a260>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", + " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", " False\n", " COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...\n", " True\n", @@ -2950,13 +3084,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56a30>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", + " COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...\n", " False\n", " COCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...\n", " True\n", @@ -2969,13 +3104,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e569e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1O\n", + " CNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1O\n", " False\n", " CNC(=O)C1OC(n2cnc3c(=NCc4cccc(I)c4)[nH]cnc32)C...\n", " True\n", @@ -2988,13 +3124,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56760>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1\n", + " CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1\n", " False\n", " CC(C)N=C(N)N=C(N)Nc1ccc(Cl)cc1\n", " True\n", @@ -3007,13 +3144,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56300>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)...\n", + " CC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)...\n", " False\n", " CC(=O)OC1(C(C)=O)CCC2C3=CC(Cl)=C4CC(=O)CCC4(C)...\n", " True\n", @@ -3026,13 +3164,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56800>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c...\n", + " CN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c...\n", " False\n", " CN(C)C1C(=O)C(C(N)=O)C(=O)C2(O)C(=O)C3C(=O)c4c...\n", " True\n", @@ -3045,13 +3184,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e568a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Oc1nc2cc(Cl)ccc2o1\n", + " Oc1nc2cc(Cl)ccc2o1\n", " False\n", " O=c1[nH]c2cc(Cl)ccc2o1\n", " True\n", @@ -3064,13 +3204,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e56080>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Nc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1\n", + " Nc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1\n", " False\n", " N=c1ccn(CC(CO)OC[PH](=O)(=O)O)c(=O)[nH]1\n", " True\n", @@ -3083,13 +3224,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e563a0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CN=C(NC#N)NCCSCc1nc[nH]c1C\n", + " CN=C(NC#N)NCCSCc1nc[nH]c1C\n", " False\n", " CN=C(NC#N)NCCSCc1[nH]cnc1C\n", " True\n", @@ -3147,7 +3289,7 @@ "191 192 Cidofovir \n", "192 193 Cimetidine \n", "\n", - " SMILEs Filtered_at \\\n", + " SMILES Filtered_at \\\n", "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 0 \n", "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... 0 \n", "21 CC(=O)Nc1nnc(S(N)(=O)=O)s1 0 \n", @@ -3243,53 +3385,53 @@ "191 0 0 \n", "192 0 0 \n", "\n", - " mol Carbon_present \\\n", - "11 True \n", - "18 True \n", - "21 True \n", - "24 True \n", - "31 True \n", - "32 True \n", - "33 True \n", - "34 True \n", - "35 True \n", - "40 True \n", - "43 True \n", - "45 True \n", - "51 True \n", - "52 True \n", - "56 True \n", - "61 True \n", - "63 True \n", - "70 True \n", - "76 True \n", - "77 True \n", - "89 True \n", - "105 True \n", - "113 True \n", - "115 True \n", - "118 True \n", - "120 True \n", - "121 True \n", - "136 True \n", - "143 True \n", - "147 True \n", - "156 True \n", - "157 True \n", - "159 True \n", - "160 True \n", - "162 True \n", - "165 True \n", - "166 True \n", - "167 True \n", - "168 True \n", - "171 True \n", - "178 True \n", - "179 True \n", - "187 True \n", - "188 True \n", - "191 True \n", - "192 True \n", + " mol Carbon_present \\\n", + "11 \n", " IDs\n", " Names\n", - " SMILEs\n", + " SMILES\n", " Filtered_at\n", " Cleaned_at\n", " Normalized_at\n", @@ -3581,6 +3771,7 @@ " metals\n", " salts\n", " SMILEs_after_normalization\n", + " SMILES_after_normalization\n", " normalized\n", " canonicalized_tautomer_smiles\n", " new_canonical_tautomer\n", @@ -3595,13 +3786,14 @@ " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393f1c4e0>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", " True\n", " True\n", " None\n", " None\n", " None\n", " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", " None\n", " CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...\n", " None\n", @@ -3614,13 +3806,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47170>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " False\n", @@ -3633,13 +3826,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47350>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " False\n", @@ -3652,13 +3846,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47850>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", + " O=C(O)C(S)C(S)C(=O)O\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", " False\n", @@ -3671,13 +3866,14 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x7f8393e47620>\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " False\n", @@ -3694,19 +3890,19 @@ "3 4 2,3-Dimercaptosuccinic acid \n", "4 5 2,4,6-Trinitrotoluene \n", "\n", - " SMILEs Filtered_at Cleaned_at \\\n", + " SMILES Filtered_at Cleaned_at \\\n", "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 0 \n", "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 0 \n", "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 0 \n", "3 O=C(O)C(S)C(S)C(=O)O 0 0 \n", "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 0 \n", "\n", - " Normalized_at mol \\\n", - "0 0 \n", - "1 0 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", + " Normalized_at mol \\\n", + "0 0 Date: Mon, 24 May 2021 09:26:22 +0200 Subject: [PATCH 54/55] text adjustment --- docs/tutorials/standardization.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index b7bb36db..d94af4fb 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -346,7 +346,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Task 1: Convert to Mol" + "#### Task 1: Convert to RDKit Molecule Objects" ] }, { From 1fde238e3cf8e5e47e8266a504d9df0196505e97 Mon Sep 17 00:00:00 2001 From: Allen Dumler Date: Mon, 24 May 2021 22:32:20 +0200 Subject: [PATCH 55/55] Adjusted notebook and updated test data --- .../data/standardization_test_data.csv | 1169 +++++- docs/tutorials/standardization.ipynb | 3442 ++++++++--------- 2 files changed, 2591 insertions(+), 2020 deletions(-) diff --git a/docs/tutorials/data/standardization_test_data.csv b/docs/tutorials/data/standardization_test_data.csv index 17f4a2db..eab0c4fc 100644 --- a/docs/tutorials/data/standardization_test_data.csv +++ b/docs/tutorials/data/standardization_test_data.csv @@ -1,208 +1,961 @@ -IDs,Names,SMILEs,HUMANS,RODENTS,NON-RODENTS -1,(R)-Roscovitine,CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca],0,1,0 -2,17-Methyltestosterone,CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C,0,1,0 -3,1-alpha-Hydroxycholecalciferol,CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C,1,0,0 -4,"2,3-Dimercaptosuccinic acid",OC(=O)C(S)C(S)C(O)=O,1,1,0 -5,"2,4,6-Trinitrotoluene",Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O,1,0,0 -6,2-Deoxy-D-glucose,OCC1OC(O)CC(O)C1O.O1CCOCC1,1,1,0 -7,2'-fluoro-5-methylarabinosyluracil,CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O,1,0,0 -8,2-Methoxyestradiol,COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O,1,1,0 -9,4-aminobenzoic acid,Nc1ccc(cc1)C(O)=O,0,1,0 -10,4-Hydroxytamoxifen,CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1,1,1,0 -11,5 fluorouracil,FC1=CNC(=O)NC1=O,1,1,1 -12,5-Azacitidine,NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O,1,1,0 -13,5-Bromouracil,OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O,0,1,0 -14,5-fluoro-2'-deoxyuridine,OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O,1,1,0 -15,6-Mercaptopurine,Sc1ncnc2[nH]c[nH]c12,1,1,0 -16,Acadesine,NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N,0,1,0 -17,Acarbose,CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)C(O)C(O)C1NC1C=C(CO)C(O)C(O)C1O,1,1,0 -18,Acebutolol,CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O,1,1,0 -19,Acenocoumarol,CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O,1,0,0 -20,Acetamide,CC(N)=O,0,1,0 -21,Acetaminophen,CC(=O)Nc1ccc(O)cc1,1,1,1 -22,Acetazolamide,CC(=O)Nc1nnc(s1)S(N)(=O)=O,1,1,1 -23,Acetic acid,CC(O)=O,1,1,1 -24,Acetohexamide,CC(=O)c1ccc(cc1)S(=O)(=O)NC(=O)NC1CCCCC1,1,0,0 -25,Acetohydroxamic acid,CC(=O)NO,0,1,0 -26,Acetrizoate Sodium,CC(=O)Nc1c(I)cc(I)c(C(O)=O)c1I,0,1,0 -27,Acetylcholine,CC(=O)OCC[N+](C)(C)C,0,1,1 -28,Acetylcysteine,CC(=O)NC(CS)C(O)=O,1,1,0 -29,Acetyl-L-carnitine,CC(=O)OC(CC(O)=O)C[N+](C)(C)C,0,1,0 -30,Acetylsalicylic acid,CC(=O)Oc1ccccc1C(O)=O,1,1,1 -31,Acitretin,COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(O)=O)c(C)c1C,1,1,0 -32,Acyclovir,NC1=NC(=O)c2ncn(COCCO)c2N1,1,1,0 -33,Adefovir dipivoxil,CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc12)OCOC(=O)C(C)(C)C,1,1,0 -34,Adenine,Nc1ncnc2[nH]cnc12,0,1,0 -35,Adenosine,n2c1c(ncnc1n(c2)[C@@H]3O[C@@H]([C@@H](O)[C@H]3O)CO)N,1,1,1 -36,Adenosine triphosphate,Nc1ncnc2n(cnc12)C1OC(COP(O)(=O)OP(O)(=O)OP(O)(O)=O)C(O)C1O,0,1,0 -37,AET,NCCSC(N)=N,0,1,0 -38,Ajmaline,CCC1C2CC3C4N(C)c5ccccc5C44CC(C2C4O)N3C1O,1,0,0 -39,Alanosine,NC(CN(O)N=O)C(O)=O,0,1,0 -40,Alatrofloxacin mesylate,CC(N)C(=O)NC(C)C(=O)NC1C2CN(CC12)c1nc2N(C=C(C(O)=O)C(=O)c2cc1F)c1ccc(F)cc1F,1,0,0 -41,Albendazole,CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1,1,0,0 -42,Alfuzosin,COc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO1,1,0,0 -43,Alitretinoin,CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(O)=O,1,1,0 -44,Allantoin,NC(=O)NC1NC(=O)NC1=O,0,1,0 -45,Allobarbital,C=CCC1(CC=C)C(=O)NC(=O)NC1=O,0,1,0 -46,Allopurinol,O=C1N=CNc2cn[nH]c12,1,1,0 -47,Alpha-tocopherol acetate,CC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(OC(C)=O)c(C)c(C)c2O1,0,1,0 -48,Alverine,CCN(CCCc1ccccc1)CCCc1ccccc1,1,0,0 -49,Amantadine,NC12CC3CC(CC(C3)C1)C2,0,1,0 -50,ambrisentan,COC(C(Oc1nc(C)cc(C)n1)C(O)=O)(c1ccccc1)c1ccccc1,0,0,1 -51,Ambroxol,Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1,0,1,0 -52,Amikacin,NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O)C1OC1OC(CO)C(O)C(N)C1O,1,0,1 -53,Amiloride,NC(=N)NC(=O)c1nc(Cl)c(N)nc1N,1,1,0 -54,Amineptine,OC(=O)CCCCCCNC1c2ccccc2CCc2ccccc12,1,1,0 -55,Amino acid,NCC(O)=O,1,1,1 -56,Aminoglutethimide,CCC1(CCC(=O)NC1=O)c1ccc(N)cc1,0,1,0 -57,Aminoguanidine,N\N=C(\N)N,0,1,0 -58,Aminophylline,CN1C(=O)N(C)c2[nH]c[nH]c2C1=O,1,1,0 -59,Aminopyrine,CN(C)C1=C(C)N(C)N(c2ccccc2)C1=O,1,1,0 -60,Amiodarone,CCCCc1oc2ccccc2c1C(=O)c1cc(I)c(OCCN(CC)CC)c(I)c1,1,1,1 -61,Amitriptyline,CN(C)CC\C=C1\c2ccccc2CCc2ccccc12,1,1,0 -62,Amlodipine,CCOC(=O)C1=C(COCCN)NC(C)=C(C1c1ccccc1Cl)C(=O)OC,0,1,0 -63,Amobarbital,CCC1(CCC(C)C)C(=O)NC(=O)NC1=O,0,1,0 -64,Amodiaquin,CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O,1,1,0 -65,Amoxicillin,CC1(C)SC2C(NC(=O)C(N)c3ccc(O)cc3)C(=O)N2C1C(O)=O,1,0,0 -66,Amphetamine,CC(N)Cc1ccccc1,1,1,0 -67,Amphotericin B,CC1OC(=O)CC(O)CC(O)CCC(O)C(O)CC(O)CC2(O)CC(O)C(C(CC(OC3OC(C)C(O)C(N)C3O)C=CC=CC=CC=CC=CC=CC=CC(C)C(O)C1C)O2)C(O)=O,1,1,0 -68,Ampicillin,CC1(C)SC2C(NC(=O)C(N)c3ccccc3)C(=O)N2C1C(O)=O,1,1,0 -69,Amprenavir,CC(C)CN(CC(O)C(Cc1ccccc1)NC(=O)OC1CCOC1)S(=O)(=O)c1ccc(N)cc1,1,0,0 -70,Amrinone,NC1=CC(=CNC1=O)c1ccncc1,0,1,0 -71,Amsacrine,COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12,1,0,0 -72,Anastrozole,CC(C)(C#N)c1cc(Cn2cncn2)cc(c1)C(C)(C)C#N,1,0,0 -73,Anethole Trithione,COc1ccc(cc1)C1=CC(=S)SS1,0,1,0 -74,Anthralin,Oc1cccc2cc3cccc(O)c3c(O)c12,1,1,0 -75,Apomorphine,CN1CCc2cccc-3c2C1Cc1ccc(O)c(O)c-31,0,1,0 -76,Aprobarbital,CC(C)C1(CC=C)C(=O)NC(=O)NC1=O,0,1,0 -77,Ascorbic acid,OCC(O)C1OC(O)=C(O)C1=O,1,1,1 -78,Astaxanthin,CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=C(C)C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C,0,1,0 -79,Atazanavir,COC(=O)NC(C(=O)NC(Cc1ccccc1)C(O)CN(Cc1ccc(cc1)-c1ccccn1)NC(=O)C(NC(=O)OC)C(C)(C)C)C(C)(C)C,1,0,0 -80,Atenolol,CC(C)NCC(O)COc1ccc(CC(N)=O)cc1,1,0,0 -81,Atiprimod,CCCC1(CCC)CCC2(CCN(CCCN(CC)CC)C2)CC1,1,0,0 -82,Atomoxetine hydrochloride,CNCCC(Oc1ccccc1C)c1ccccc1,1,0,0 -83,Atorvastatin,CC(C)C1=C(C(=O)Nc2ccccc2)C(c2ccccc2)=C(N1CCC(O)CC(O)CC(O)=O)c1ccc(F)cc1,1,1,1 -84,Atropine,CN1C2CCC1CC(C2)OC(=O)C(CO)c1ccccc1,0,1,0 -85,avasimibe,CC(C)c1cc(C(C)C)c(CC(=O)NS(=O)(=O)Oc2c(cccc2C(C)C)C(C)C)c(c1)C(C)C,1,1,0 -86,Azathioprine,Cn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O,1,1,0 -87,AZD6244,Cn1cnc2c(F)c(Nc3ccc(Br)cc3Cl)c(cc12)C(=O)NOCCO,0,1,0 -88,Azithromycin,CCC1OC(=O)C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(OC2OC(C)CC(C2O)N(C)C)C(C)(O)CC(C)CN(C)C(C)C(O)C1(C)O,1,0,0 -89,Azlocillin,CC1(C)SC2C(NC(=O)C(NC(=O)N3CCNC3=O)c3ccccc3)C(=O)N2C1C(O)=O,1,0,0 -90,Aztreonam,CC1C(NC(=O)C(=NOC(C)(C)C(O)=O)c2csc(N)n2)C(=O)N1S(O)(=O)=O,1,0,0 -91,Bacitracin,CCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC(O)=O)C(=O)NC(C(C)CC)C(=O)NC1CCCCNC(=O)C(CC(O)=O)NC(=O)C(Cc2c[nH]c[nH]2)NC(=O)C(Cc2ccccc2)NC(=O)C(NC(=O)C(CCCN)NC1=O)C(C)CC,0,1,0 -92,Baclofen,NCC(CC(O)=O)c1ccc(Cl)cc1,1,0,0 -93,Barbital,CCC1(CC)C(=O)NC(=O)NC1=O,0,1,0 -94,Bendamustine,Cn1c(CCCC(O)=O)nc2cc(ccc12)N(CCCl)CCCl,1,0,0 -95,Bendazac,OC(=O)COc1nn(Cc2ccccc2)c2ccccc12,1,0,0 -96,Benorylate,CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1,0,1,0 -97,Benoxaprofen,CC(C(O)=O)c1ccc2oc(nc2c1)-c1ccc(Cl)cc1,1,1,0 -98,Benzarone,CCc1oc2ccccc2c1C(=O)c1ccc(O)cc1,1,1,0 -99,Benzbromarone,CCc1oc2ccccc2c1C(=O)c1cc(Br)c(O)c(Br)c1,1,1,0 -100,Benziodarone,CCc1oc2ccccc2c1C(=O)c1cc(I)c(O)c(I)c1,0,1,0 -101,Benzoyl peroxide,O=C(OOC(=O)c1ccccc1)c1ccccc1,0,1,0 -102,Beraprost,CC#CCC(C)C(O)C=CC1C(O)CC2Oc3c(CCCC(O)=O)cccc3C12,0,1,0 -103,Beta-Carotene,CC(C=CC=C(C)C=CC1=C(C)CCCC1(C)C)=CC=CC=C(C)C=CC=C(C)C=CC1=C(C)CCCC1(C)C,1,1,1 -104,Betaine,C[N+](C)(C)CC(O)=O,0,1,0 -105,beta-Lapachone,CC1(C)CCC2=C(O1)c1ccccc1C(=O)C2=O,1,0,0 -106,Betamethasone,CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)COP(O)(O)=O,0,1,0 -107,beta-Sitosterol,CCC(CCC(C)C1CCC2C3CC=C4CC(O)CCC4(C)C3CCC12C)C(C)C,1,1,0 -108,Betulinic acid,CC(=C)C1CCC2(CCC3(C)C(CCC4C5(C)CCC(O)C(C)(C)C5CCC34C)C12)C(O)=O,1,0,0 -109,Bezafibrate,CC(C)(Oc1ccc(CCNC(=O)c2ccc(Cl)cc2)cc1)C(O)=O,1,1,0 -110,Bicalutamide,CC(O)(CS(=O)(=O)c1ccc(F)cc1)C(=O)Nc1ccc(C#N)c(c1)C(F)(F)F,1,0,0 -111,Bifonazole,c1ccc(cc1)C(c1ccc(cc1)-c1ccccc1)n1ccnc1,0,1,0 -112,Biotin,OC(=O)CCCCC1SCC2NC(=O)NC12,1,0,0 -113,Bisoprolol,CC(C)NCC(O)COc1ccc(COCCOC(C)C)cc1,1,0,0 -114,Bleomycin,CC(O)C(NC(=O)C(C)C(O)C(C)NC(=O)C(NC(=O)c1nc(nc(N)c1C)C(CC(N)=O)NCC(N)C(N)=O)C(OC1OC(CO)C(O)C(O)C1OC1OC(CO)C(O)C(OC(N)=O)C1O)c1cnc[nH]1)C(=O)NCCc1nc(cs1)-c1nc(cs1)C(O)=O,1,1,0 -115,Bortezomib,CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O,1,1,0 -116,Bosentan,COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(cc2)C(C)(C)C)nc(nc1OCCO)-c1ncccn1,1,1,1 -117,Bromfenac,Nc1c(CC(O)=O)cccc1C(=O)c1ccc(Br)cc1,1,0,0 -118,Bromisovalum,CC(C)C(Br)C(=O)NC(N)=O,1,1,0 -119,Bromocriptine,CC(C)CC1N2C(=O)C(NC(=O)C3CN(C)C4Cc5c(Br)[nH]c6cccc(C4=C3)c56)(OC2(O)C2CCCN2C1=O)C(C)C,0,1,0 -120,Brotizolam,Cc1nnc2CN=C(c3ccccc3Cl)c3cc(Br)sc3-n12,0,1,0 -121,Bucladesine,CCCC(=O)Nc1ncnc2n(cnc12)C1OC2COP(O)(=O)OC2C1OC(=O)CCC,1,1,1 -122,Budesonide,CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2(O1)C(=O)CO,1,1,0 -123,Bumetanide,CCCCNc1cc(cc(c1Oc1ccccc1)S(N)(=O)=O)C(O)=O,0,0,1 -124,Bupivacaine,CCCCN1CCCCC1C(=O)Nc1c(C)cccc1C,0,1,0 -125,Buprenorphine,COc1c(O)ccc2CC3N(CCC4(CC5(CCC34CC5C(C)(O)C(C)(C)C)OC)c12)CC1CC1,1,1,0 -126,Bupropion,CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1,1,0,0 -127,Buspirone,O=C1CC2(CCCC2)CC(=O)N1CCCCN1CCN(CC1)c1ncccn1,1,0,0 -128,Busulfan,CS(=O)(=O)OCCCCOS(C)(=O)=O,1,1,0 -129,Butachlor,CCCCOCN(C(=O)CCl)c1c(CC)cccc1CC,0,1,0 -130,Butalbital,CC(C)CC1(CC=C)C(=O)NC(=O)NC1=O,1,0,0 -131,Butethal,CCCCC1(CC)C(=O)NC(=O)NC1=O,0,1,0 -132,Caffeine,CN1C(=O)N(C)c2ncn(C)c2C1=O,1,1,0 -133,Calcitriol,CC(CCCC(C)(C)O)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C,1,1,0 -134,Camptothecin,CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O,1,1,0 -135,Candesartan cilexetil,CCOc1nc2cccc(C(=O)OC(C)OC(=O)OC3CCCCC3)c2n1Cc1ccc(cc1)-c1ccccc1-c1nn[nH]n1,1,1,0 -136,Cannabidiol,CCCCCc1cc(O)c(C2C=C(C)CCC2C(C)=C)c(O)c1,1,1,0 -137,Capecitabine,CCCCCOC(=O)NC1=NC(=O)N(C=C1F)C1OC(C)C(O)C1O,1,1,0 -138,Capsaicin,COc1cc(CNC(=O)CCCCC=CC(C)C)ccc1O,1,1,0 -139,Captopril,CC(CS)C(=O)N1CCCC1C(O)=O,1,1,0 -140,Carbamazepine,NC(=O)N1c2ccccc2C=Cc2ccccc12,1,1,0 -141,Carbamylcholine,C[N+](C)(C)CCOC(N)=O,0,1,0 -142,Carbaryl,CNC(=O)Oc1cccc2ccccc12,0,1,0 -143,Carbenicillin disodium,CC1(C)SC2C(NC(=O)C(C(O)=O)c3ccccc3)C(=O)N2C1C(O)=O,1,0,0 -144,Carbenoxolone,CC1(C)C(CCC2(C)C1CCC1(C)C2C(=O)C=C2C3CC(C)(CCC3(C)CCC12C)C(O)=O)OC(=O)CCC(O)=O,0,1,0 -145,Carbimazole,CCOC(=O)N1C=CN(C)C1=S,1,0,0 -146,Carboplatin,OC(=O)C1(CCC1)C(O)=O,1,1,0 -147,Carbutamide,CCCCNC(=O)NS(=O)(=O)c1ccc(N)cc1,0,1,0 -148,Cariporide,CC(C)c1ccc(cc1S(C)(=O)=O)C(=O)NC(N)=N,0,1,0 -149,Carisoprodol,CCCC(C)(COC(N)=O)COC(=O)NC(C)C,0,1,0 -150,Carmustine,ClCCNC(=O)N(CCCl)N=O,1,1,0 -151,Carnitine,C[N+](C)(C)CC(O)CC(O)=O,1,1,1 -152,Carprofen,CC(C(O)=O)c1ccc-2c(Nc3ccc(Cl)cc-23)c1,0,0,1 -153,Carvedilol,COc1ccccc1OCCNCC(O)COc1cccc2Nc3ccccc3-c12,1,1,0 -154,Catechin,OC1Cc2c(O)cc(O)cc2OC1c1ccc(O)c(O)c1,1,1,1 -155,Cefaclor,NC(C(=O)NC1C2SCC(Cl)=C(N2C1=O)C(O)=O)c1ccccc1,1,0,0 -156,Cefadroxil,CC1=C(N2C(SC1)C(NC(=O)C(N)c1ccc(O)cc1)C2=O)C(O)=O,1,0,0 -157,Cefazolin,Cc1nnc(SCC2=C(N3C(SC2)C(NC(=O)Cn2cnnn2)C3=O)C(O)=O)s1,1,1,0 -158,Cefixime,Nc1nc(cs1)C(=NOCC(O)=O)C(=O)NC1C2SCC(C=C)=C(N2C1=O)C(O)=O,1,0,0 -159,Cefoperazone,CCN1CCN(C(=O)NC(C(=O)NC2C3SCC(CSc4nnnn4C)=C(N3C2=O)C(O)=O)c2ccc(O)cc2)C(=O)C1=O,1,1,0 -160,Cefotaxime,CON=C(C(=O)NC1C2SCC(COC(C)=O)=C(N2C1=O)C(O)=O)c1csc(N)n1,1,0,0 -161,Cefotetan,COC1(NC(=O)C2S\C(S2)=C(/C(N)=O)C(O)=O)C2SCC(CSc3nnnn3C)=C(N2C1=O)C(O)=O,1,0,0 -162,Cefprozil,CC=CC1=C(N2C(SC1)C(NC(=O)C(N)c1ccc(O)cc1)C2=O)C(O)=O,1,0,0 -163,Ceftriaxone,CON=C(C(=O)NC1C2SCC(CSC3=NC(=O)C(=O)NN3C)=C(N2C1=O)C(O)=O)c1csc(N)n1,1,1,1 -164,Celecoxib,Cc1ccc(cc1)-c1cc(nn1-c1ccc(cc1)S(N)(=O)=O)C(F)(F)F,1,1,0 -165,Cephaloridine,OC(=O)C1=C(CSC2C(NC(=O)Cc3cccs3)C(=O)N12)C[n+]1ccccc1,1,0,0 -166,Cephalosporin,CC(=O)OCC1=C(N2C(SC1)C(NC(=O)CCCC(N)C(O)=O)C2=O)C(O)=O,1,0,0 -167,Cephalothin,CC(=O)OCC1=C(N2C(SC1)C(NC(=O)Cc1cccs1)C2=O)C(O)=O,1,0,0 -168,Cerivastatin,COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc(F)cc1)C(C)C,1,1,1 -169,Cerivastatin sodium,COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc(F)cc1)C(C)C,0,1,1 -170,Cetirizine,OC(=O)COCCN1CCN(CC1)C(c1ccccc1)c1ccc(Cl)cc1,1,0,0 -171,Cetrimonium bromide,CCCCCCCCCCCCCCCC[N+](C)(C)C,0,1,0 -172,CF101,CNC(=O)C1OC(C(O)C1O)n1cnc2c(NCc3cccc(I)c3)ncnc12,0,1,0 -173,Chenodiol,O=C(O)CC[C@H]([C@H]1CC[C@@H]2[C@]1(C)CC[C@H]4[C@H]2[C@H](O)C[C@@H]3C[C@H](O)CC[C@@]34C)C,1,1,1 -174,Chloral hydrate,OC(O)C(Cl)(Cl)Cl,1,1,0 -175,Chlorambucil,OC(=O)CCCc1ccc(cc1)N(CCCl)CCCl,1,1,0 -176,Chloramine-T,Cc1ccc(cc1)S(=O)(=O)NCl,0,1,1 -177,Chloramphenicol,OCC(NC(=O)C(Cl)Cl)C(O)c1ccc(cc1)N(=O)=O,1,1,0 -178,Chlordiazepoxide,CN=C1CN(O)C(c2ccccc2)=C2C=C(Cl)C=CC2=N1,0,1,0 -179,Chlorguanide,CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1,1,0,0 -180,Chlormadinone acetate,CC(=O)OC1(CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)C3CCC12C)C(C)=O,1,1,1 -181,Chlormethiazole,Cc1ncsc1CCCl,1,1,0 -182,Chlormezanone,CN1C(c2ccc(Cl)cc2)S(=O)(=O)CCC1=O,1,0,0 -183,Chloroquine,CCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc12,1,1,1 -184,Chloroxylenol,Cc1cc(O)cc(C)c1Cl,0,1,0 -185,Chlorphenamine,CN(C)CCC(c1ccc(Cl)cc1)c1ccccn1,1,0,0 -186,Chlorpromazine,CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12,1,1,1 -187,Chlorpropamide,CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1,1,1,0 -188,Chlortetracycline,CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)C2(O)C(=O)C(C(N)=O)=C1O,0,1,1 -189,Chlorzoxazone,Oc1nc2cc(Cl)ccc2o1,1,0,0 -190,Cholestyramine,CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O)(=O)=O,1,1,0 -191,Chondroitin sulfate,CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(O)C1O)C(O)=O,0,1,0 -192,Cidofovir,NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1,1,0,0 -193,Cimetidine,CN=C(NCCSCc1nc[nH]c1C)NC#N,1,1,1 -194,Cinchophen,OC(=O)c1cc(nc2ccccc12)-c1ccccc1,1,0,1 -195,Cinoxacin,CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12,1,0,0 -196,Ciprofibrate,CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O,1,1,1 -197,Ciprofloxacin,OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O,1,1,0 -198,Cisapride,COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)cc1OC,1,0,0 -199,Citalopram,CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1,0,1,0 -200,Citric acid,OC(=O)CC(O)(CC(O)=O)C(O)=O,0,1,0 -201,zirconium,CCO[Zr](OCC)(OCC)OCC,0,0,0 -202,hemoglobin,CC1=C(C2=CC3=NC(=CC4=C(C(=C([N-]4)C=C5C(=C(C(=N5)C=C1N2)C=C)C)C)CCC(=O)[O-])C(=C3C)CCC(=O)O)C=C.[Fe+2],0,0,0 -203,test_salt,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 -204,test_duplicate,[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn],0,0,0 -205,no_smiles_test,,0,0,0 -206,covalent_metal,CCC(=O)O[Na],0,0,0 -207,test_charge_recombination, CC([O-])=[N+](C)C, 0,0,0 \ No newline at end of file +IDs;Names;SMILEs;HUMANS;RODENTS;NON-RODENTS;;;;; +1;(R)-Roscovitine;CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1;0;1;0;;;;; +2;17-Methyltestosterone;CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C;0;1;0;;;;; +3;1-alpha-Hydroxycholecalciferol;CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C;1;0;0;;;;; +4;2,3-Dimercaptosuccinic acid;OC(=O)C(S)C(S)C(O)=O;1;1;0;;;;; +5;2,4,6-Trinitrotoluene;Cc1c(cc(cc1N(=O)=O)N(=O)=O)N(=O)=O;1;0;0;;;;; +6;2-Deoxy-D-glucose;OCC1OC(O)CC(O)C1O;1;1;0;;;;; +7;2'-fluoro-5-methylarabinosyluracil;CC1=CN(C2OC(CO)C(O)C2F)C(=O)NC1=O;1;0;0;;;;; +8;2-Methoxyestradiol;COc1cc2C3CCC4(C)C(O)CCC4C3CCc2cc1O;1;1;0;;;;; +9;4-aminobenzoic acid;Nc1ccc(cc1)C(O)=O;0;1;0;;;;; +10;4-Hydroxytamoxifen;CCC(c1ccccc1)=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1;1;1;0;;;;; +11;5 fluorouracil;FC1=CNC(=O)NC1=O;1;1;1;;;;; +12;5-Azacitidine;NC1=NC(=O)N(C=N1)C1OC(CO)C(O)C1O;1;1;0;;;;; +13;5-Bromouracil;OCC1OC(CC1O)N1C=C(Br)C(=O)NC1=O;0;1;0;;;;; +14;5-fluoro-2'-deoxyuridine;OCC1OC(CC1O)N1C=C(F)C(=O)NC1=O;1;1;0;;;;; +15;6-Mercaptopurine;Sc1ncnc2[nH]c[nH]c12;1;1;0;;;;; +16;Acadesine;NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N;0;1;0;;;;; +17;Acarbose;CC1OC(OC2C(CO)OC(OC3C(CO)OC(O)C(O)C3O)C(O)C2O)C(O)C(O)C1NC1C=C(CO)C(O)C(O)C1O;1;1;0;;;;; +18;Acebutolol;CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O;1;1;0;;;;; +19;Acenocoumarol;CC(=O)CC(c1ccc(cc1)N(=O)=O)C1=C(O)Oc2ccccc2C1=O;1;0;0;;;;; +20;Acetamide;CC(N)=O;0;1;0;;;;; +21;Acetaminophen;CC(=O)Nc1ccc(O)cc1;1;1;1;;;;; +22;Acetazolamide;CC(=O)Nc1nnc(s1)S(N)(=O)=O;1;1;1;;;;; +23;Acetic acid;CC(O)=O;1;1;1;;;;; +24;Acetohexamide;CC(=O)c1ccc(cc1)S(=O)(=O)NC(=O)NC1CCCCC1;1;0;0;;;;; +25;Acetohydroxamic acid;CC(=O)NO;0;1;0;;;;; +26;Acetrizoate Sodium;CC(=O)Nc1c(I)cc(I)c(C(O)=O)c1I;0;1;0;;;;; +27;Acetylcholine;CC(=O)OCC[N+](C)(C)C;0;1;1;;;;; +28;Acetylcysteine;CC(=O)NC(CS)C(O)=O;1;1;0;;;;; +29;Acetyl-L-carnitine;CC(=O)OC(CC(O)=O)C[N+](C)(C)C;0;1;0;;;;; +30;Acetylsalicylic acid;CC(=O)Oc1ccccc1C(O)=O;1;1;1;;;;; +31;Acitretin;COc1cc(C)c(C=CC(C)=CC=CC(C)=CC(O)=O)c(C)c1C;1;1;0;;;;; +32;Acyclovir;NC1=NC(=O)c2ncn(COCCO)c2N1;1;1;0;;;;; +33;Adefovir dipivoxil;CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc12)OCOC(=O)C(C)(C)C;1;1;0;;;;; +34;Adenine;Nc1ncnc2[nH]cnc12;0;1;0;;;;; +35;Adenosine;n2c1c(ncnc1n(c2)[C@@H]3O[C@@H]([C@@H](O)[C@H]3O)CO)N;1;1;1;;;;; +36;Adenosine triphosphate;Nc1ncnc2n(cnc12)C1OC(COP(O)(=O)OP(O)(=O)OP(O)(O)=O)C(O)C1O;0;1;0;;;;; +37;AET;NCCSC(N)=N;0;1;0;;;;; +38;Ajmaline;CCC1C2CC3C4N(C)c5ccccc5C44CC(C2C4O)N3C1O;1;0;0;;;;; +39;Alanosine;NC(CN(O)N=O)C(O)=O;0;1;0;;;;; +40;Alatrofloxacin mesylate;CC(N)C(=O)NC(C)C(=O)NC1C2CN(CC12)c1nc2N(C=C(C(O)=O)C(=O)c2cc1F)c1ccc(F)cc1F;1;0;0;;;;; +41;Albendazole;CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1;1;0;0;;;;; +42;Alfuzosin;COc1cc2[nH]c(nc(N)c2cc1OC)N(C)CCCNC(=O)C1CCCO1;1;0;0;;;;; +43;Alitretinoin;CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(O)=O;1;1;0;;;;; +44;Allantoin;NC(=O)NC1NC(=O)NC1=O;0;1;0;;;;; +45;Allobarbital;C=CCC1(CC=C)C(=O)NC(=O)NC1=O;0;1;0;;;;; +46;Allopurinol;O=C1N=CNc2cn[nH]c12;1;1;0;;;;; +47;Alpha-tocopherol acetate;CC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(OC(C)=O)c(C)c(C)c2O1;0;1;0;;;;; +48;Alverine;CCN(CCCc1ccccc1)CCCc1ccccc1;1;0;0;;;;; +49;Amantadine;NC12CC3CC(CC(C3)C1)C2;0;1;0;;;;; +50;ambrisentan;COC(C(Oc1nc(C)cc(C)n1)C(O)=O)(c1ccccc1)c1ccccc1;0;0;1;;;;; +51;Ambroxol;Nc1c(Br)cc(Br)cc1CNC1CCC(O)CC1;0;1;0;;;;; +52;Amikacin;NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O)C1OC1OC(CO)C(O)C(N)C1O;1;0;1;;;;; +53;Amiloride;NC(=N)NC(=O)c1nc(Cl)c(N)nc1N;1;1;0;;;;; +54;Amineptine;OC(=O)CCCCCCNC1c2ccccc2CCc2ccccc12;1;1;0;;;;; +55;Amino acid;NCC(O)=O;1;1;1;;;;; +56;Aminoglutethimide;CCC1(CCC(=O)NC1=O)c1ccc(N)cc1;0;1;0;;;;; +57;Aminoguanidine;N\N=C(\N)N;0;1;0;;;;; +58;Aminophylline;CN1C(=O)N(C)c2[nH]c[nH]c2C1=O;1;1;0;;;;; +59;Aminopyrine;CN(C)C1=C(C)N(C)N(c2ccccc2)C1=O;1;1;0;;;;; +60;Amiodarone;CCCCc1oc2ccccc2c1C(=O)c1cc(I)c(OCCN(CC)CC)c(I)c1;1;1;1;;;;; +61;Amitriptyline;CN(C)CC\C=C1\c2ccccc2CCc2ccccc12;1;1;0;;;;; +62;Amlodipine;CCOC(=O)C1=C(COCCN)NC(C)=C(C1c1ccccc1Cl)C(=O)OC;0;1;0;;;;; +63;Amobarbital;CCC1(CCC(C)C)C(=O)NC(=O)NC1=O;0;1;0;;;;; +64;Amodiaquin;CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O;1;1;0;;;;; +65;Amoxicillin;CC1(C)SC2C(NC(=O)C(N)c3ccc(O)cc3)C(=O)N2C1C(O)=O;1;0;0;;;;; +66;Amphetamine;CC(N)Cc1ccccc1;1;1;0;;;;; +67;Amphotericin B;CC1OC(=O)CC(O)CC(O)CCC(O)C(O)CC(O)CC2(O)CC(O)C(C(CC(OC3OC(C)C(O)C(N)C3O)C=CC=CC=CC=CC=CC=CC=CC(C)C(O)C1C)O2)C(O)=O;1;1;0;;;;; +68;Ampicillin;CC1(C)SC2C(NC(=O)C(N)c3ccccc3)C(=O)N2C1C(O)=O;1;1;0;;;;; +69;Amprenavir;CC(C)CN(CC(O)C(Cc1ccccc1)NC(=O)OC1CCOC1)S(=O)(=O)c1ccc(N)cc1;1;0;0;;;;; +70;Amrinone;NC1=CC(=CNC1=O)c1ccncc1;0;1;0;;;;; +71;Amsacrine;COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12;1;0;0;;;;; +72;Anastrozole;CC(C)(C#N)c1cc(Cn2cncn2)cc(c1)C(C)(C)C#N;1;0;0;;;;; +73;Anethole Trithione;COc1ccc(cc1)C1=CC(=S)SS1;0;1;0;;;;; +74;Anthralin;Oc1cccc2cc3cccc(O)c3c(O)c12;1;1;0;;;;; +75;Apomorphine;CN1CCc2cccc-3c2C1Cc1ccc(O)c(O)c-31;0;1;0;;;;; +76;Aprobarbital;CC(C)C1(CC=C)C(=O)NC(=O)NC1=O;0;1;0;;;;; +77;Ascorbic acid;OCC(O)C1OC(O)=C(O)C1=O;1;1;1;;;;; +78;Astaxanthin;CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=C(C)C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C;0;1;0;;;;; +79;Atazanavir;COC(=O)NC(C(=O)NC(Cc1ccccc1)C(O)CN(Cc1ccc(cc1)-c1ccccn1)NC(=O)C(NC(=O)OC)C(C)(C)C)C(C)(C)C;1;0;0;;;;; +80;Atenolol;CC(C)NCC(O)COc1ccc(CC(N)=O)cc1;1;0;0;;;;; +81;Atiprimod;CCCC1(CCC)CCC2(CCN(CCCN(CC)CC)C2)CC1;1;0;0;;;;; +82;Atomoxetine hydrochloride;CNCCC(Oc1ccccc1C)c1ccccc1;1;0;0;;;;; +83;Atorvastatin;CC(C)C1=C(C(=O)Nc2ccccc2)C(c2ccccc2)=C(N1CCC(O)CC(O)CC(O)=O)c1ccc(F)cc1;1;1;1;;;;; +84;Atropine;CN1C2CCC1CC(C2)OC(=O)C(CO)c1ccccc1;0;1;0;;;;; +85;avasimibe;CC(C)c1cc(C(C)C)c(CC(=O)NS(=O)(=O)Oc2c(cccc2C(C)C)C(C)C)c(c1)C(C)C;1;1;0;;;;; +86;Azathioprine;Cn1cnc(c1Sc1ncnc2ncnc12)N(=O)=O;1;1;0;;;;; +87;AZD6244;Cn1cnc2c(F)c(Nc3ccc(Br)cc3Cl)c(cc12)C(=O)NOCCO;0;1;0;;;;; +88;Azithromycin;CCC1OC(=O)C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(OC2OC(C)CC(C2O)N(C)C)C(C)(O)CC(C)CN(C)C(C)C(O)C1(C)O;1;0;0;;;;; +89;Azlocillin;CC1(C)SC2C(NC(=O)C(NC(=O)N3CCNC3=O)c3ccccc3)C(=O)N2C1C(O)=O;1;0;0;;;;; +90;Aztreonam;CC1C(NC(=O)C(=NOC(C)(C)C(O)=O)c2csc(N)n2)C(=O)N1S(O)(=O)=O;1;0;0;;;;; +91;Bacitracin;CCC(C)C(C)C1=NC(CS1)C(=O)NC(CC(C)C)C(=O)NC(CCC(O)=O)C(=O)NC(C(C)CC)C(=O)NC1CCCCNC(=O)C(CC(O)=O)NC(=O)C(Cc2c[nH]c[nH]2)NC(=O)C(Cc2ccccc2)NC(=O)C(NC(=O)C(CCCN)NC1=O)C(C)CC;0;1;0;;;;; +92;Baclofen;NCC(CC(O)=O)c1ccc(Cl)cc1;1;0;0;;;;; +93;Barbital;CCC1(CC)C(=O)NC(=O)NC1=O;0;1;0;;;;; +94;Bendamustine;Cn1c(CCCC(O)=O)nc2cc(ccc12)N(CCCl)CCCl;1;0;0;;;;; +95;Bendazac;OC(=O)COc1nn(Cc2ccccc2)c2ccccc12;1;0;0;;;;; +96;Benorylate;CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1;0;1;0;;;;; +97;Benoxaprofen;CC(C(O)=O)c1ccc2oc(nc2c1)-c1ccc(Cl)cc1;1;1;0;;;;; +98;Benzarone;CCc1oc2ccccc2c1C(=O)c1ccc(O)cc1;1;1;0;;;;; +99;Benzbromarone;CCc1oc2ccccc2c1C(=O)c1cc(Br)c(O)c(Br)c1;1;1;0;;;;; +100;Benziodarone;CCc1oc2ccccc2c1C(=O)c1cc(I)c(O)c(I)c1;0;1;0;;;;; +101;Benzoyl peroxide;O=C(OOC(=O)c1ccccc1)c1ccccc1;0;1;0;;;;; +102;Beraprost;CC#CCC(C)C(O)C=CC1C(O)CC2Oc3c(CCCC(O)=O)cccc3C12;0;1;0;;;;; +103;Beta-Carotene;CC(C=CC=C(C)C=CC1=C(C)CCCC1(C)C)=CC=CC=C(C)C=CC=C(C)C=CC1=C(C)CCCC1(C)C;1;1;1;;;;; +104;Betaine;C[N+](C)(C)CC(O)=O;0;1;0;;;;; +105;beta-Lapachone;CC1(C)CCC2=C(O1)c1ccccc1C(=O)C2=O;1;0;0;;;;; +106;Betamethasone;CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)COP(O)(O)=O;0;1;0;;;;; +107;beta-Sitosterol;CCC(CCC(C)C1CCC2C3CC=C4CC(O)CCC4(C)C3CCC12C)C(C)C;1;1;0;;;;; +108;Betulinic acid;CC(=C)C1CCC2(CCC3(C)C(CCC4C5(C)CCC(O)C(C)(C)C5CCC34C)C12)C(O)=O;1;0;0;;;;; +109;Bezafibrate;CC(C)(Oc1ccc(CCNC(=O)c2ccc(Cl)cc2)cc1)C(O)=O;1;1;0;;;;; +110;Bicalutamide;CC(O)(CS(=O)(=O)c1ccc(F)cc1)C(=O)Nc1ccc(C#N)c(c1)C(F)(F)F;1;0;0;;;;; +111;Bifonazole;c1ccc(cc1)C(c1ccc(cc1)-c1ccccc1)n1ccnc1;0;1;0;;;;; +112;Biotin;OC(=O)CCCCC1SCC2NC(=O)NC12;1;0;0;;;;; +113;Bisoprolol;CC(C)NCC(O)COc1ccc(COCCOC(C)C)cc1;1;0;0;;;;; +114;Bleomycin;CC(O)C(NC(=O)C(C)C(O)C(C)NC(=O)C(NC(=O)c1nc(nc(N)c1C)C(CC(N)=O)NCC(N)C(N)=O)C(OC1OC(CO)C(O)C(O)C1OC1OC(CO)C(O)C(OC(N)=O)C1O)c1cnc[nH]1)C(=O)NCCc1nc(cs1)-c1nc(cs1)C(O)=O;1;1;0;;;;; +115;Bortezomib;CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O;1;1;0;;;;; +116;Bosentan;COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(cc2)C(C)(C)C)nc(nc1OCCO)-c1ncccn1;1;1;1;;;;; +117;Bromfenac;Nc1c(CC(O)=O)cccc1C(=O)c1ccc(Br)cc1;1;0;0;;;;; +118;Bromisovalum;CC(C)C(Br)C(=O)NC(N)=O;1;1;0;;;;; +119;Bromocriptine;CC(C)CC1N2C(=O)C(NC(=O)C3CN(C)C4Cc5c(Br)[nH]c6cccc(C4=C3)c56)(OC2(O)C2CCCN2C1=O)C(C)C;0;1;0;;;;; +120;Brotizolam;Cc1nnc2CN=C(c3ccccc3Cl)c3cc(Br)sc3-n12;0;1;0;;;;; +121;Bucladesine;CCCC(=O)Nc1ncnc2n(cnc12)C1OC2COP(O)(=O)OC2C1OC(=O)CCC;1;1;1;;;;; +122;Budesonide;CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2(O1)C(=O)CO;1;1;0;;;;; +123;Bumetanide;CCCCNc1cc(cc(c1Oc1ccccc1)S(N)(=O)=O)C(O)=O;0;0;1;;;;; +124;Bupivacaine;CCCCN1CCCCC1C(=O)Nc1c(C)cccc1C;0;1;0;;;;; +125;Buprenorphine;COc1c(O)ccc2CC3N(CCC4(CC5(CCC34CC5C(C)(O)C(C)(C)C)OC)c12)CC1CC1;1;1;0;;;;; +126;Bupropion;CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1;1;0;0;;;;; +127;Buspirone;O=C1CC2(CCCC2)CC(=O)N1CCCCN1CCN(CC1)c1ncccn1;1;0;0;;;;; +128;Busulfan;CS(=O)(=O)OCCCCOS(C)(=O)=O;1;1;0;;;;; +129;Butachlor;CCCCOCN(C(=O)CCl)c1c(CC)cccc1CC;0;1;0;;;;; +130;Butalbital;CC(C)CC1(CC=C)C(=O)NC(=O)NC1=O;1;0;0;;;;; +131;Butethal;CCCCC1(CC)C(=O)NC(=O)NC1=O;0;1;0;;;;; +132;Caffeine;CN1C(=O)N(C)c2ncn(C)c2C1=O;1;1;0;;;;; +133;Calcitriol;CC(CCCC(C)(C)O)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C;1;1;0;;;;; +134;Camptothecin;CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4ccccc4[nH]c13)C2=O;1;1;0;;;;; +135;Candesartan cilexetil;CCOc1nc2cccc(C(=O)OC(C)OC(=O)OC3CCCCC3)c2n1Cc1ccc(cc1)-c1ccccc1-c1nn[nH]n1;1;1;0;;;;; +136;Cannabidiol;CCCCCc1cc(O)c(C2C=C(C)CCC2C(C)=C)c(O)c1;1;1;0;;;;; +137;Capecitabine;CCCCCOC(=O)NC1=NC(=O)N(C=C1F)C1OC(C)C(O)C1O;1;1;0;;;;; +138;Capsaicin;COc1cc(CNC(=O)CCCCC=CC(C)C)ccc1O;1;1;0;;;;; +139;Captopril;CC(CS)C(=O)N1CCCC1C(O)=O;1;1;0;;;;; +140;Carbamazepine;NC(=O)N1c2ccccc2C=Cc2ccccc12;1;1;0;;;;; +141;Carbamylcholine;C[N+](C)(C)CCOC(N)=O;0;1;0;;;;; +142;Carbaryl;CNC(=O)Oc1cccc2ccccc12;0;1;0;;;;; +143;Carbenicillin disodium;CC1(C)SC2C(NC(=O)C(C(O)=O)c3ccccc3)C(=O)N2C1C(O)=O;1;0;0;;;;; +144;Carbenoxolone;CC1(C)C(CCC2(C)C1CCC1(C)C2C(=O)C=C2C3CC(C)(CCC3(C)CCC12C)C(O)=O)OC(=O)CCC(O)=O;0;1;0;;;;; +145;Carbimazole;CCOC(=O)N1C=CN(C)C1=S;1;0;0;;;;; +146;Carboplatin;OC(=O)C1(CCC1)C(O)=O;1;1;0;;;;; +147;Carbutamide;CCCCNC(=O)NS(=O)(=O)c1ccc(N)cc1;0;1;0;;;;; +148;Cariporide;CC(C)c1ccc(cc1S(C)(=O)=O)C(=O)NC(N)=N;0;1;0;;;;; +149;Carisoprodol;CCCC(C)(COC(N)=O)COC(=O)NC(C)C;0;1;0;;;;; +150;Carmustine;ClCCNC(=O)N(CCCl)N=O;1;1;0;;;;; +151;Carnitine;C[N+](C)(C)CC(O)CC(O)=O;1;1;1;;;;; +152;Carprofen;CC(C(O)=O)c1ccc-2c(Nc3ccc(Cl)cc-23)c1;0;0;1;;;;; +153;Carvedilol;COc1ccccc1OCCNCC(O)COc1cccc2Nc3ccccc3-c12;1;1;0;;;;; +154;Catechin;OC1Cc2c(O)cc(O)cc2OC1c1ccc(O)c(O)c1;1;1;1;;;;; +155;Cefaclor;NC(C(=O)NC1C2SCC(Cl)=C(N2C1=O)C(O)=O)c1ccccc1;1;0;0;;;;; +156;Cefadroxil;CC1=C(N2C(SC1)C(NC(=O)C(N)c1ccc(O)cc1)C2=O)C(O)=O;1;0;0;;;;; +157;Cefazolin;Cc1nnc(SCC2=C(N3C(SC2)C(NC(=O)Cn2cnnn2)C3=O)C(O)=O)s1;1;1;0;;;;; +158;Cefixime;Nc1nc(cs1)C(=NOCC(O)=O)C(=O)NC1C2SCC(C=C)=C(N2C1=O)C(O)=O;1;0;0;;;;; +159;Cefoperazone;CCN1CCN(C(=O)NC(C(=O)NC2C3SCC(CSc4nnnn4C)=C(N3C2=O)C(O)=O)c2ccc(O)cc2)C(=O)C1=O;1;1;0;;;;; +160;Cefotaxime;CON=C(C(=O)NC1C2SCC(COC(C)=O)=C(N2C1=O)C(O)=O)c1csc(N)n1;1;0;0;;;;; +161;Cefotetan;COC1(NC(=O)C2S\C(S2)=C(/C(N)=O)C(O)=O)C2SCC(CSc3nnnn3C)=C(N2C1=O)C(O)=O;1;0;0;;;;; +162;Cefprozil;CC=CC1=C(N2C(SC1)C(NC(=O)C(N)c1ccc(O)cc1)C2=O)C(O)=O;1;0;0;;;;; +163;Ceftriaxone;CON=C(C(=O)NC1C2SCC(CSC3=NC(=O)C(=O)NN3C)=C(N2C1=O)C(O)=O)c1csc(N)n1;1;1;1;;;;; +164;Celecoxib;Cc1ccc(cc1)-c1cc(nn1-c1ccc(cc1)S(N)(=O)=O)C(F)(F)F;1;1;0;;;;; +165;Cephaloridine;OC(=O)C1=C(CSC2C(NC(=O)Cc3cccs3)C(=O)N12)C[n+]1ccccc1;1;0;0;;;;; +166;Cephalosporin;CC(=O)OCC1=C(N2C(SC1)C(NC(=O)CCCC(N)C(O)=O)C2=O)C(O)=O;1;0;0;;;;; +167;Cephalothin;CC(=O)OCC1=C(N2C(SC1)C(NC(=O)Cc1cccs1)C2=O)C(O)=O;1;0;0;;;;; +168;Cerivastatin;COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc(F)cc1)C(C)C;1;1;1;;;;; +169;Cerivastatin sodium;COCc1c(nc(C(C)C)c(C=CC(O)CC(O)CC(O)=O)c1-c1ccc(F)cc1)C(C)C;0;1;1;;;;; +170;Cetirizine;OC(=O)COCCN1CCN(CC1)C(c1ccccc1)c1ccc(Cl)cc1;1;0;0;;;;; +171;Cetrimonium bromide;CCCCCCCCCCCCCCCC[N+](C)(C)C;0;1;0;;;;; +172;CF101;CNC(=O)C1OC(C(O)C1O)n1cnc2c(NCc3cccc(I)c3)ncnc12;0;1;0;;;;; +173;Chenodiol;O=C(O)CC[C@H]([C@H]1CC[C@@H]2[C@]1(C)CC[C@H]4[C@H]2[C@H](O)C[C@@H]3C[C@H](O)CC[C@@]34C)C;1;1;1;;;;; +174;Chloral hydrate;OC(O)C(Cl)(Cl)Cl;1;1;0;;;;; +175;Chlorambucil;OC(=O)CCCc1ccc(cc1)N(CCCl)CCCl;1;1;0;;;;; +176;Chloramine-T;Cc1ccc(cc1)S(=O)(=O)NCl;0;1;1;;;;; +177;Chloramphenicol;OCC(NC(=O)C(Cl)Cl)C(O)c1ccc(cc1)N(=O)=O;1;1;0;;;;; +178;Chlordiazepoxide;CN=C1CN(O)C(c2ccccc2)=C2C=C(Cl)C=CC2=N1;0;1;0;;;;; +179;Chlorguanide;CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1;1;0;0;;;;; +180;Chlormadinone acetate;CC(=O)OC1(CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)C3CCC12C)C(C)=O;1;1;1;;;;; +181;Chlormethiazole;Cc1ncsc1CCCl;1;1;0;;;;; +182;Chlormezanone;CN1C(c2ccc(Cl)cc2)S(=O)(=O)CCC1=O;1;0;0;;;;; +183;Chloroquine;CCN(CC)CCCC(C)Nc1cc[nH]c2cc(Cl)ccc12;1;1;1;;;;; +184;Chloroxylenol;Cc1cc(O)cc(C)c1Cl;0;1;0;;;;; +185;Chlorphenamine;CN(C)CCC(c1ccc(Cl)cc1)c1ccccn1;1;0;0;;;;; +186;Chlorpromazine;CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc12;1;1;1;;;;; +187;Chlorpropamide;CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1;1;1;0;;;;; +188;Chlortetracycline;CN(C)C1C2CC3C(C(=O)c4c(O)ccc(Cl)c4C3(C)O)=C(O)C2(O)C(=O)C(C(N)=O)=C1O;0;1;1;;;;; +189;Chlorzoxazone;Oc1nc2cc(Cl)ccc2o1;1;0;0;;;;; +190;Cholestyramine;CC(C)(Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1)C(=O)NCCS(O)(=O)=O;1;1;0;;;;; +191;Chondroitin sulfate;CC(=O)NC1C(O)OC(OS(O)(=O)=O)C(O)C1OC1OC(C(O)C(O)C1O)C(O)=O;0;1;0;;;;; +192;Cidofovir;NC1=NC(=O)N(CC(CO)OCP(O)(O)=O)C=C1;1;0;0;;;;; +193;Cimetidine;CN=C(NCCSCc1nc[nH]c1C)NC#N;1;1;1;;;;; +194;Cinchophen;OC(=O)c1cc(nc2ccccc12)-c1ccccc1;1;0;1;;;;; +195;Cinoxacin;CCN1N=C(C(O)=O)C(=O)c2cc3OCOc3cc12;1;0;0;;;;; +196;Ciprofibrate;CC(C)(Oc1ccc(cc1)C1CC1(Cl)Cl)C(O)=O;1;1;1;;;;; +197;Ciprofloxacin;OC(=O)C1=CN(C2CC2)c2cc(N3CCNCC3)c(F)cc2C1=O;1;1;0;;;;; +198;Cisapride;COC1CN(CCCOc2ccc(F)cc2)CCC1NC(=O)c1cc(Cl)c(N)cc1OC;1;0;0;;;;; +199;Citalopram;CN(C)CCCC1(OCc2cc(ccc12)C#N)c1ccc(F)cc1;0;1;0;;;;; +200;Citric acid;OC(=O)CC(O)(CC(O)=O)C(O)=O;0;1;0;;;;; +201;Cladribine;Nc1nc(Cl)nc2n(cnc12)C1CC(O)C(CO)O1;1;0;0;;;;; +202;Clarithromycin;CCC1OC(=O)C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(OC2OC(C)CC(C2O)N(C)C)C(C)(CC(C)C(=O)C(C)C(O)C1(C)O)OC;1;1;0;;;;; +203;Clavulanic acid;OCC=C1OC2CC(=O)N2C1C(O)=O;1;0;0;;;;; +204;Clindamycin;CCCC1CC(N(C)C1)C(=O)NC(C(C)Cl)C1OC(SC)C(O)C(O)C1O;1;0;0;;;;; +205;Clioquinol;Oc1c(I)cc(Cl)c2cccnc12;0;1;0;;;;; +206;Clobazam;CN1C(=O)CC(=O)N(c2ccccc2)c2cc(Cl)ccc12;1;0;0;;;;; +207;Clodronic Acid;OP(O)(=O)C(Cl)(Cl)P(O)(O)=O;0;1;0;;;;; +208;Clofarabine;Nc1nc(Cl)nc2n(cnc12)C1OC(CO)C(O)C1F;1;0;0;;;;; +209;Clofazimine;CC(C)N=C1C=C2N(c3ccc(Cl)cc3)c3ccccc3N=C2C=C1Nc1ccc(Cl)cc1;1;0;0;;;;; +210;Clofibrate;CCOC(=O)C(C)(C)Oc1ccc(Cl)cc1;1;1;1;;;;; +211;Clomiphene;CCN(CC)CCOc1ccc(cc1)C(c1ccccc1)=C(Cl)c1ccccc1;1;0;0;;;;; +212;Clomiphene citrate;CCN(CC)CCOc1ccc(cc1)C(c1ccccc1)=C(Cl)c1ccccc1;0;1;0;;;;; +213;Clonidine;Clc1cccc(Cl)c1NC1=NCCN1;1;1;0;;;;; +214;Clopidogrel;COC(=O)C(N1CCc2sccc2C1)c1ccccc1Cl;1;1;0;;;;; +215;Clotiazepam;CCc1cc2C(=NCC(=O)N(C)c2s1)c1ccccc1Cl;1;0;0;;;;; +216;Clotrimazole;Clc1ccccc1C(c1ccccc1)(c1ccccc1)n1ccnc1;0;1;0;;;;; +217;Clozapine;CN1CCN(CC1)C1=C2C=CC=CC2=Nc2ccc(Cl)cc2N1;1;0;0;;;;; +218;Co-amoxiclav;CC1(C)SC2C(NC(=O)C(N)c3ccc(O)cc3)C(=O)N2C1C(O)=O;1;0;0;;;;; +219;Cocaine;COC(=O)C1C(CC2CCC1N2C)OC(=O)c1ccccc1;1;1;0;;;;; +220;Codeine;COc1ccc2CC3C4C=CC(O)C5Oc1c2C45CCN3C;1;1;0;;;;; +221;Coenzyme Q10;COC1=C(OC)C(=O)C(CC=C(C)CCC=C(C)CCC=C(C)CCC=C(C)CCC=C(C)CCC=C(C)CCC=C(C)CCC=C(C)CCC=C(C)CC\C=C(\C)C)=C(C)C1=O;0;1;0;;;;; +222;Colchicine;COC1=CC=C2C(=CC1=O)C(CCc1cc(OC)c(OC)c(OC)c21)NC(C)=O;1;1;0;;;;; +223;Cordycepin;Nc1ncnc2n(cnc12)C1OC(CO)CC1O;0;1;0;;;;; +224;cortisone acetate;CC(=O)OCC(=O)C1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3C(=O)CC12C;0;1;0;;;;; +225;Creatine;CN(CC(O)=O)C(N)=N;0;1;0;;;;; +226;Curcumin;COc1cc(C=CC(=O)CC(=O)C=Cc2ccc(O)c(OC)c2)ccc1O;1;1;0;;;;; +227;Cyclandelate;CC1CC(CC(C)(C)C1)OC(=O)C(O)c1ccccc1;0;1;0;;;;; +228;Cyclobarbital;CCC1(C(=O)NC(=O)NC1=O)C1=CCCCC1;0;1;0;;;;; +229;Cyclobutyrol;CCC(C(O)=O)C1(O)CCCCC1;0;1;0;;;;; +230;cyclopamine;CC1CNC2C(C1)OC1(CCC3C4CC=C5CC(O)CCC5(C)C4CC3=C1C)C2C;1;0;0;;;;; +231;Cyclophosphamide;ClCCN(CCCl)P1(=O)NCCCO1;1;1;0;;;;; +232;Cyclosporine A;CCC1NC(=O)C(C(O)C(C)CC=CC)N(C)C(=O)C(C(C)C)N(C)C(=O)C(CC(C)C)N(C)C(=O)C(CC(C)C)N(C)C(=O)C(C)NC(=O)C(C)NC(=O)C(CC(C)C)N(C)C(=O)C(NC(=O)C(CC(C)C)NC(=O)CN(C)C1=O)C(C)C;1;1;1;;;;; +233;Cynarin;OC1CC(CC(OC(=O)C=Cc2ccc(O)c(O)c2)C1O)(OC(=O)C=Cc1ccc(O)c(O)c1)C(O)=O;0;1;0;;;;; +234;Cyproheptadine;CN1CC\C(CC1)=C1/c2ccccc2C=Cc2ccccc12;1;1;0;;;;; +235;Cyproterone acetate;CC(=O)OC1(CCC2C3C=C(Cl)C4=CC(=O)C5CC5C4(C)C3CCC12C)C(C)=O;1;1;0;;;;; +236;Cytarabine;NC1=NC(=O)N(C=C1)C1OC(CO)C(O)C1O;1;1;0;;;;; +237;Dacarbazine;CN(C)N=Nc1[nH]cnc1C(N)=O;1;0;0;;;;; +238;Dactinomycin;CC(C)C1NC(=O)C(NC(=O)c2ccc(C)c3OC4=C(C)C(=O)C(N)=C(C(=O)NC5C(C)OC(=O)C(C(C)C)N(C)C(=O)CN(C)C(=O)C6CCCN6C(=O)C(NC5=O)C(C)C)C4=Nc23)C(C)OC(=O)C(C(C)C)N(C)C(=O)CN(C)C(=O)C2CCCN2C1=O;1;1;1;;;;; +239;Dalteparin sodium;CC(=O)N[C@@H]1[C@@H](O)[C@H](O)[C@@H](COS(O)(=O)=O)O[C@@H]1O[C@H]1[C@H](O)[C@@H](O)[C@H](O[C@@H]2[C@@H](O)O[C@H](O[C@H]3[C@H](O)[C@@H](OS(O)(=O)=O)C(O)O[C@H]3C(O)=O)[C@H](OS(O)(=O)=O)[C@H]2CS(O)(=O)=O)O[C@@H]1C(O)=O;0;1;0;;;;; +240;Danazol;CC12CC3C=NOC3C=C1CCC1C2CCC2(C)C1CCC2(O)C#C;1;0;0;;;;; +241;Danthron;Oc1cccc2C(=O)c3cccc(O)c3C(=O)c12;0;1;0;;;;; +242;Dantrolene sodium;OC1=NC(=O)CN1N=Cc1ccc(o1)-c1ccc(cc1)N(=O)=O;0;1;0;;;;; +243;Dapsone;Nc1ccc(cc1)S(=O)(=O)c1ccc(N)cc1;1;0;0;;;;; +244;Daunorubicin;COc1cccc2C(=O)c3c(O)c4CC(O)(CC(OC5CC(N)C(O)C(C)O5)c4c(O)c3C(=O)c12)C(C)=O;1;1;0;;;;; +245;DDT;Clc1ccc(cc1)C(c1ccc(Cl)cc1)C(Cl)(Cl)Cl;0;1;0;;;;; +246;Decitabine;NC1=NC(=O)N(C=N1)C1CC(O)C(CO)O1;1;0;0;;;;; +247;Deferasirox;OC(=O)c1ccc(cc1)-n1nc(nc1-c1ccccc1O)-c1ccccc1O;1;0;0;;;;; +248;Deferoxamine;CC(=O)N(O)CCCCCNC(=O)CCC(=O)N(O)CCCCCNC(=O)CCC(=O)N(O)CCCCCN;1;1;1;;;;; +249;Dehydrocholic Acid;CC(CCC(O)=O)C1CCC2C3C(CC(=O)C12C)C1(C)CCC(=S)CC1CC3=O;0;1;0;;;;; +250;Dehydroemetine;CCC1=C(CC2NCCc3cc(OC)c(OC)cc23)CC2N(CCc3cc(OC)c(OC)cc23)C1;0;1;0;;;;; +251;Delta9-tetrahydrocannabinol;CCCCCc1cc(O)c2C3C=C(C)CCC3C(C)(C)Oc2c1;1;1;0;;;;; +252;Desflurane;FC(F)OC(F)C(F)(F)F;1;1;0;;;;; +253;Desogestrel;CCC12CC(=C)C3C(CCC4=CCCCC34)C1CCC2(O)C#C;1;0;0;;;;; +254;Devazepide;CN1C(=O)C(NC(=O)c2cc3ccccc3[nH]2)N=C(c2ccccc2)c2ccccc12;0;1;0;;;;; +255;Dexamethasone;CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)CO;1;1;1;;;;; +256;Dexfenfluramine;CCNC(C)Cc1cccc(c1)C(F)(F)F;1;1;0;;;;; +257;Dexrazoxane;CC(CN1CC(=O)NC(=O)C1)N1CC(=O)NC(=O)C1;0;1;0;;;;; +258;Dextran;OC[C@H]1O[C@H](OC[C@H]2O[C@H](OC[C@@H](O)[C@@H](O)[C@H](O)[C@@H](O)C=O)[C@H](O)[C@@H](O)[C@@H]2O)[C@H](O)[C@@H](O)[C@@H]1O;0;1;1;;;;; +259;Dextroamphetamine;N[C@H](Cc1ccccc1)C;0;1;0;;;;; +260;Dextromethorphan;COc1ccc2CC3C4CCCCC4(CCN3C)c2c1;1;0;0;;;;; +261;Diatrizoate sodium;CC(=O)Nc1c(I)c(NC(C)=O)c(I)c(C(O)=O)c1I;0;1;0;;;;; +262;Diazepam;CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc12;1;1;1;;;;; +263;Diazoxide;CC1=Nc2ccc(Cl)cc2S(O)(=O)=N1;1;1;0;;;;; +264;Diclofenac;OC(=O)Cc1ccccc1Nc1c(Cl)cccc1Cl;1;1;1;;;;; +265;Dicumarol;OC1=C(CC2=C(O)Oc3ccccc3C2=O)C(=O)c2ccccc2O1;1;1;0;;;;; +266;Didanosine;OCC1CCC(O1)n1cnc2C(=O)N=CNc12;1;1;0;;;;; +267;Dienogest;CC12CCC3=C4CCC(=O)C=C4CCC3C1CCC2(O)CC#N;0;1;0;;;;; +268;Diethylstilbestrol;CCC(c1ccc(OP(O)(O)=O)cc1)=C(CC)c1ccc(OP(O)(O)=O)cc1;1;1;1;;;;; +269;Diethyltoluamide;CCN(CC)C(=O)c1cccc(C)c1;0;1;0;;;;; +270;Diflunisal;OC(=O)c1cc(ccc1O)-c1ccc(F)cc1F;1;1;1;;;;; +271;Digitoxin;CC1OC(CC(O)C1O)OC1CC(O)C(OC1C)OC1C(O)CC(OC2CCC3(C)C(CCC4C3CCC3(C)C(CCC43O)C3=CC(=O)OC3)C2)OC1C;0;1;0;;;;; +272;Digoxin;CC1OC(CC(O)C1O)OC1CC(O)C(OC1C)OC1C(O)CC(OC2CCC3(C)C(CCC4C3CC(O)C3(C)C(CCC43O)C3=CC(=O)OC3)C2)OC1C;0;1;1;;;;; +273;Dihydralazine;N=C1NNC(=N)c2ccccc12;1;1;0;;;;; +274;Dihydroergotamine;CN1CC(CC2C1Cc1c[nH]c3cccc2c13)C(=O)NC1(C)OC2(O)C3CCCN3C(=O)C(Cc3ccccc3)N2C1=O;1;1;0;;;;; +275;Diltiazem;COc1ccc(cc1)C1Sc2ccccc2N(CCN(C)C)C(=O)C1OC(C)=O;1;1;1;;;;; +276;Dimethyl sulfoxide;CS(C)=O;1;1;1;;;;; +277;Diosmin;COc1ccc(cc1O)C1=CC(=O)c2c(O)cc(OC3OC(COC4OC(C)C(O)C(O)C4O)C(O)C(O)C3O)cc2O1;0;1;0;;;;; +278;Diphenhydramine;CN(C)CCOC(c1ccccc1)c1ccccc1;0;1;0;;;;; +279;Dipyridamole;OCCN(CCO)c1nc(N2CCCCC2)c2nc(nc(N3CCCCC3)c2n1)N(CCO)CCO;1;1;1;;;;; +280;Dipyrone;CN(CS(O)(=O)=O)C1=C(C)N(C)N(C1=O)c1ccccc1;1;1;0;;;;; +281;Discodermolide;CC(CC(C)=CC(C)C(O)C(C)C=CC(O)CC1OC(=O)C(C)C(O)C1C)C(O)C(C)C(OC(N)=O)C(C)C=CC=C;1;0;0;;;;; +282;Disopyramide;CC(C)N(CCC(C(N)=O)(c1ccccc1)c1ccccn1)C(C)C;1;0;0;;;;; +283;Disulfiram;CCN(CC)C(=S)SSC(=S)N(CC)CC;1;1;1;;;;; +284;Ditiocarb sodium;CCN(CC)C(S)=S;0;1;0;;;;; +285;Dobutamine;CC(CCc1ccc(O)cc1)NCCc1ccc(O)c(O)c1;1;0;1;;;;; +286;Docetaxel;CC(=O)OC12COC1CC(O)C1(C)C2C(OC(=O)c2ccccc2)C2(O)CC(OC(=O)C(O)C(NC(=O)OC(C)(C)C)c3ccccc3)C(C)=C(C(O)C1=O)C2(C)C;1;1;0;;;;; +287;Docosahexaenoic acid;CCC=CCC=CCC=CCC=CCC=CCC=CCCC(O)=O;1;1;0;;;;; +288;Dopamine;NCCc1ccc(O)c(O)c1;1;1;1;;;;; +289;Dothiepin;CN(C)CCC=C1c2ccccc2CSc2ccccc12;1;0;0;;;;; +290;Doxapram hydrochloride;CCN1CC(CCN2CCOCC2)C(C1=O)(c1ccccc1)c1ccccc1;1;0;0;;;;; +291;Doxepin;CN(C)CCC=C1c2ccccc2COc2ccccc12;1;0;0;;;;; +292;Doxifluridine;CC1OC(C(O)C1O)C1C=C(F)C(=O)NC1=O;1;1;0;;;;; +293;Doxorubicin;COc1cccc2C(=O)C3C(C(=O)c12)C(O)=C1C(CC(O)(CC1=C3O)C(=O)CO)OC1CC(N)C(O)C(C)O1;1;1;1;;;;; +294;Doxorubicin hydrochloride;O=C2c1c(O)c5c(c(O)c1C(=O)c3cccc(OC)c23)C[C@@](O)(C(=O)CO)C[C@@H]5O[C@@H]4O[C@H]([C@@H](O)[C@@H](N)C4)C;1;0;0;;;;; +295;Doxycycline;CC1C2C(O)C3C(N(C)C)C(=O)C(=C(N)O)C(=O)C3(O)C(=O)C2=C(O)c2c(O)cccc12;1;1;1;;;;; +296;Droloxifene;CCC(c1ccccc1)=C(c1ccc(OCCN(C)C)cc1)c1cccc(O)c1;0;1;0;;;;; +297;Droperidol;Fc1ccc(cc1)C(=O)CCCN1CCC(=CC1)N1C(=O)Nc2ccccc12;0;1;0;;;;; +298;Duloxetine;CNCCC(Oc1cccc2ccccc12)c1cccs1;1;0;0;;;;; +299;Dydrogesterone;CC(=O)C1CCC2C3C=CC4=CC(=O)CCC4(C)C3CCC12C;1;1;0;;;;; +300;Econazole;Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)cc1;0;1;0;;;;; +301;Ecteinascidin 743;COc1cc2c(CCNC22CSC3C4C5N(C)C(Cc6cc(C)c(OC)c(O)c56)C(O)N4C(COC2=O)c2c4OCOc4c(C)c(OC(C)=O)c32)cc1O;1;1;0;;;;; +302;Efavirenz;FC(F)(F)C1(OC(=O)Nc2ccc(Cl)cc12)C#CC1CC1;1;1;0;;;;; +303;Eflornithine;NCCCC(N)(C(F)F)C(O)=O;0;1;0;;;;; +304;Eflucimibe;CCCCCCCCCCCCCC(=S)Nc1cc(C)c(O)c(C)c1C;0;0;1;;;;; +305;Eicosapentaenoic acid;CCC=CCC=CCC=CCC=CCC=CCCCC(O)=O;1;1;0;;;;; +306;Enalapril;CCOC(=O)C(CCc1ccccc1)NC(C)C(=O)N1CCCC1C(O)=O;1;1;0;;;;; +307;Enalaprilat;CC(NC(CCc1ccccc1)C(O)=O)C(=O)N1CCCC1C(O)=O;1;0;0;;;;; +308;Encainide;COc1ccc(cc1)C(=O)Nc1ccccc1CCC1CCCCN1C;1;0;0;;;;; +309;Enflurane;FC(F)OC(F)(F)C(F)Cl;1;1;1;;;;; +310;Enoxacin;CCN1C=C(C(O)=O)C(=O)c2cc(F)c(nc12)N1CCNCC1;1;1;0;;;;; +311;Enoximone;CSc1ccc(cc1)C(=O)C1NC(=O)N=C1C;0;1;0;;;;; +312;Enoxolone;CC1(C)C(O)CCC2(C)C1CCC1(C)C2C(=O)C=C2C3CC(C)(CCC3(C)CCC12C)C(O)=O;1;1;0;;;;; +313;Entacapone;CCN(CC)C(=O)C(=Cc1cc(O)c(O)c(c1)N(=O)=O)C#N;1;1;0;;;;; +314;Entecavir;NC1=NC(=O)c2ncn(C3CC(O)C(CO)C3=C)c2N1;1;0;0;;;;; +315;Ephedrine;CNC(C)C(O)c1ccccc1;1;0;0;;;;; +316;Epinephrine;CNCC(O)c1ccc(O)c(O)c1;1;1;1;;;;; +317;Epirubicin;O=C2c1c(O)c5c(c(O)c1C(=O)c3cccc(OC)c23)C[C@@](O)(C(=O)CO)C[C@@H]5O[C@@H]4O[C@H]([C@H](O)[C@@H](N)C4)C;0;1;0;;;;; +318;Epoprostenol sodium;CCCCCC(O)C=CC1C(O)CC2OC(CC12)=CCCCC(O)=O;0;1;0;;;;; +319;epsilon-Aminocaproic acid;NCCCCCC(O)=O;1;0;0;;;;; +320;Erdosteine;OC(=O)CSCC(=O)NC1CCSC1=O;0;1;0;;;;; +321;Ergotamine;CN1CC(C=C2C1Cc1c[nH]c3cccc2c13)C(=O)NC1(C)OC2(O)C3CCCN3C(=O)C(Cc3ccccc3)N2C1=O;1;0;1;;;;; +322;Erythromycin;CCC1OC(=O)C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(OC2OC(C)CC(C2O)N(C)C)C(C)(O)CC(C)C(=O)C(C)C(O)C1(C)O;1;1;0;;;;; +323;Erythromycin estolate;CCC1OC(=O)C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(OC2OC(C)CC(C2OC(=O)CC)N(C)C)C(C)(O)CC(C)C(=O)C(C)C(O)C1(C)O;1;1;0;;;;; +324;Erythromycin ethylsuccinate;CCOC(=O)CCC(=O)OC1C(OC(C)CC1N(C)C)OC1C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(=O)OC(CC)C(C)(O)C(O)C(C)C(=O)C(C)CC1(C)O;1;0;0;;;;; +325;Erythromycin lactobionate;CCC1OC(=O)C(C)C(CC(OC2OC(C)CC(C2O)N(C)C)C(C)(O)CC(C)C(=O)C(C)CC1(C)O)OC1CC(C)(OC)C(O)C(C)O1;1;0;0;;;;; +326;Erythromycin stearate;CCC1OC(=O)C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(OC2OC(C)CC(C2O)N(C)C)C(C)(O)CC(C)C(=O)C(C)C(O)C1(C)O;1;0;0;;;;; +327;Esomeprazole;O=S(c2nc1ccc(OC)cc1n2)Cc3ncc(c(OC)c3C)C;1;0;0;;;;; +328;Estazolam;Clc1ccc-2c(c1)C(=NCc1nncn-21)c1ccccc1;0;1;0;;;;; +329;Estradiol;CC12CCC3C(CCc4cc(O)ccc34)C1CCC2O;1;1;1;;;;; +330;Estradiol valerate;CCCCC(=O)OC1CCC2C3CCc4cc(O)ccc4C3CCC12C;0;1;0;;;;; +331;Estramustine;CC12CCC3C(CCc4cc(OC(=O)N(CCCl)CCCl)ccc34)C1CCC2O;1;0;0;;;;; +332;Estriol;CC12CCC3C(CCc4cc(O)ccc34)C1CC(O)C2O;0;1;0;;;;; +333;Estrone;CC12CCC3C(CCc4cc(O)ccc34)C1CCC2=O;1;1;0;;;;; +334;Estrone sulfate;CC12CCC3C(CCc4cc(OS(O)(=O)=O)ccc34)C1CCC2=O;0;1;0;;;;; +335;Ethacrynic acid;CCC(=C)C(=O)c1ccc(OCC(O)=O)c(Cl)c1Cl;0;1;1;;;;; +336;Ethanol;CCO;1;1;1;;;;; +337;Ethanolamine oleate;CCCCCCCCC=CCCCCCCCC(=O)OCCN;0;1;0;;;;; +338;Ethinyl estradiol;CC12CCC3C(CCc4cc(O)ccc34)C1CCC2(O)C#C;1;1;1;;;;; +339;Ethinyl estradiol 3-methyl-ether;O(c1cc4c(cc1)[C@H]3CC[C@]2([C@@H](CC[C@]2(C#C)O)[C@@H]3CC4)C)C;1;1;1;;;;; +340;Ethionamide;CCc1cc(ccn1)C(N)=S;1;1;0;;;;; +341;Ethoxzolamide;CCOc1ccc2nc(sc2c1)S(N)(=O)=O;0;1;0;;;;; +342;Etodolac;CCc1cccc2c3CCOC(CC)(CC(O)=O)c3[nH]c12;1;1;0;;;;; +343;Etomidate;CCOC(=O)c1cncn1C(C)c1ccccc1;1;1;0;;;;; +344;Etomoxir;CCOC(=O)C1(CCCCCCOc2ccc(Cl)cc2)CO1;1;1;1;;;;; +345;Etoposide;COc1cc(cc(OC)c1O)C1C2C(COC2=O)C(OC2OC3COC(C)OC3C(O)C2O)c2cc3OCOc3cc12;1;1;0;;;;; +346;Etretinate;CCOC(=O)C=C(C)C=CC=C(C)C=Cc1c(C)cc(OC)c(C)c1C;1;0;0;;;;; +347;Evan's Blue;Cc1cc(ccc1N=Nc1ccc2c(cc(c(N)c2c1O)S(O)(=O)=O)S(O)(=O)=O)-c1ccc(N=Nc2ccc3c(cc(c(N)c3c2O)S(O)(=O)=O)S(O)(=O)=O)c(C)c1;0;1;0;;;;; +348;Ezetimibe;OC(CCC1C(N(C1=O)c1ccc(F)cc1)c1ccc(O)cc1)c1ccc(F)cc1;1;1;1;;;;; +349;Famciclovir;CC(=O)OCC(CCn1cnc2cnc(N)nc12)COC(C)=O;1;0;0;;;;; +350;Famotidine;N\C(N)=N\c1nc(CSCCC(N)=NS(N)(=O)=O)cs1;1;1;0;;;;; +351;Fasudil;O=S(=O)(N1CCCNCC1)c1cccc2cnccc12;1;1;0;;;;; +352;Felbamate;NC(=O)OCC(COC(N)=O)c1ccccc1;1;1;0;;;;; +353;Felodipine;CCOC(=O)C1=C(C)NC(C)=C(C1c1cccc(Cl)c1Cl)C(=O)OC;1;0;0;;;;; +354;Fenofibrate;CC(C)OC(=O)C(C)(C)Oc1ccc(cc1)C(=O)c1ccc(Cl)cc1;1;1;0;;;;; +355;Fenretinide;CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(=O)Nc1ccc(O)cc1;1;1;0;;;;; +356;Fentanyl;CCC(=O)N(C1CCN(CC1)CCc1ccccc1)c1ccccc1;1;1;1;;;;; +357;Ferrous citrate;OC(=O)CC(O)(CC(O)=O)C(O)=O;0;1;0;;;;; +358;FK-506;COC1CC(CCC1O)C=C(C)C1OC(=O)C2CCCCN2C(=O)C(=O)C2(O)OC(C(CC(C)CC(C)=CC(CC=C)C(=O)CC(O)C1C)OC)C(CC2C)OC;1;1;0;;;;; +359;Flavopiridol;CN1CCC(C(O)C1)c1c(O)cc(O)c2C(=O)C=C(Oc12)c1ccccc1Cl;1;0;0;;;;; +360;Flecainide;FC(F)(F)COc1ccc(OCC(F)(F)F)c(c1)C(=O)NCC1CCCCN1;1;0;0;;;;; +361;Flosequinan;COSC1=CN(C)c2cc(F)ccc2C1=O;1;0;0;;;;; +362;Flucloxacillin;Cc1onc(c1C(=O)NC1C2SC(C)(C)C(N2C1=O)C(O)=O)-c1c(F)cccc1Cl;1;1;0;;;;; +363;Fluconazole;OC(Cn1cncn1)(Cn1cncn1)c1ccc(F)cc1F;1;1;0;;;;; +364;Flucytosine;NC1=NC(=O)NC=C1F;0;1;0;;;;; +365;Flufenamic acid;OC(=O)c1ccccc1Nc1cccc(c1)C(F)(F)F;1;1;0;;;;; +366;Flumazenil;CCOC(=O)c1ncn2-c3ccc(F)cc3C(=O)N(C)Cc12;1;0;0;;;;; +367;Flunitrazepam;CN1C(=O)CN=C(c2ccccc2F)c2cc(ccc12)N(=O)=O;0;0;1;;;;; +368;Fluoxetine;CNCCC(Oc1ccc(cc1)C(F)(F)F)c1ccccc1;1;1;0;;;;; +369;Flurbiprofen;CC(C(O)=O)c1ccc(c(F)c1)-c1ccccc1;0;1;1;;;;; +370;Flutamide;CC(C)C(=O)Nc1ccc(c(c1)C(F)(F)F)N(=O)=O;1;1;0;;;;; +371;Fluvastatin;CC(C)n1c(C=CC(O)CC(O)CC(O)=O)c(-c2ccc(F)cc2)c2ccccc12;1;1;0;;;;; +372;Fluvoxamine;COCCCCC(=NOCCN)c1ccc(cc1)C(F)(F)F;1;1;0;;;;; +373;Folic acid;NC1=NC(=O)c2nc(CNc3ccc(cc3)C(=O)NC(CCC(O)=O)C(O)=O)cnc2N1;1;1;0;;;;; +374;Fomepizole;Cc1cn[nH]c1;1;1;0;;;;; +375;Formaldehyde;C=O;1;1;0;;;;; +376;Foscarnet Sodium;OC(=O)P(O)(O)=O;0;1;0;;;;; +377;Fosfomycin;CC1OC1P(O)(O)=O;1;0;0;;;;; +378;Fosinopril;CCC(=O)OC(OP(=O)(CCCCc1ccccc1)CC(=O)N1CC(CC1C(O)=O)C1CCCCC1)C(C)C;1;0;0;;;;; +379;Fructose;OCC1OC(O)(CO)C(O)C1O;1;1;1;;;;; +380;Fructose-1,6-diphosphate;OC1C(O)C(O)(COP(O)(O)=O)OC1COP(O)(O)=O;1;1;0;;;;; +381;FTY 720;CCCCCCCCc1ccc(CCC(N)(CO)CO)cc1;1;1;0;;;;; +382;Furan;c1ccoc1;0;1;0;;;;; +383;Furazolidone;O=C1OCCN1N=Cc1ccc(o1)N(=O)=O;0;1;0;;;;; +384;Furosemide;NS(=O)(=O)c1cc(C(O)=O)c(NCc2ccco2)cc1Cl;1;1;1;;;;; +385;Fusidic acid;CC1C(O)CCC2(C)C1CCC1(C)C2C(O)CC2C(C(CC12C)OC(C)=O)=C(CC\C=C(\C)C)C(O)=O;1;0;0;;;;; +386;Gadobenate dimeglumine;OC(=O)CN(CCN(CC(O)=O)CC(O)=O)CCN(CC(O)=O)C(COCc1ccccc1)C(O)=O;1;0;0;;;;; +387;Ganciclovir;NC1=NC(=O)c2ncn(COC(CO)CO)c2N1;1;0;0;;;;; +388;Gatifloxacin;COc1c(N2CCNC(C)C2)c(F)cc2C(=O)C(=CN(C3CC3)c12)C(O)=O;1;0;0;;;;; +389;Gefitinib;COc1cc2ncnc(Nc3ccc(F)c(Cl)c3)c2cc1OCCCN1CCOCC1;1;1;0;;;;; +390;Geldanamycin;COC1CC(C)CC2=C(OC)C(=O)C=C(NC(=O)C(C)=CC=CC(OC)C(OC(N)=O)C(C)=CC(C)C1O)C2=O;1;0;0;;;;; +391;Gemfibrozil;Cc1ccc(C)c(OCCCC(C)(C)C(O)=O)c1;1;1;0;;;;; +392;Gentamicin;CNC1C(O)C(OCC1(C)O)OC1C(N)CC(N)C(OC2OC(CN)CCC2N)C1O;0;1;0;;;;; +393;Gentian Violet;CN(C)c1ccc(cc1)C(\c1ccc(cc1)N(C)C)=C1/C=C\C(\C=C/1)=[N+](\C)C;0;1;0;;;;; +394;Gepirone;CC1(C)CC(=O)N(CCCCN2CCN(CC2)c2ncccn2)C(=O)C1;1;0;0;;;;; +395;Gestodene;CCC12CCC3C(CCC4=CC(=O)CCC34)C1C=CC2(O)C#C;1;0;0;;;;; +396;Glafenine;OCC(O)COC(=O)c1ccccc1Nc1ccnc2cc(Cl)ccc12;1;0;0;;;;; +397;Glatiramer acetate;NC(Cc1ccc(O)cc1)C(O)=O;1;1;0;;;;; +398;Gliclazide;Cc1ccc(cc1)S(=O)(=O)NC(=O)NN1CC2CCCC2C1;1;0;0;;;;; +399;Glucosamine;NC1C(O)OC(CO)C(O)C1O;0;1;0;;;;; +400;Glucose;OCC1OC(O)C(O)C(O)C1O;1;1;1;;;;; +401;Glutamic acid;NC(CCC(O)=O)C(O)=O;0;1;0;;;;; +402;Glutamine;NC(CCC(N)=O)C(O)=O;1;1;1;;;;; +403;Glutathione Disulfide;NC(CCC(=O)NC(CSSCC(NC(=O)CCC(N)C(O)=O)C(=O)NCC(O)=O)C(=O)NCC(O)=O)C(O)=O;0;1;0;;;;; +404;Glutethimide;CCC1(CCC(=O)NC1=O)c1ccccc1;1;0;0;;;;; +405;Glyburide;COc1ccc(Cl)cc1C(=O)NCCc1ccc(cc1)S(=O)(=O)NC(=O)NC1CCCCC1;1;1;0;;;;; +406;Glycerol;OCC(O)CO;1;1;1;;;;; +407;Glycine;NCC(O)=O;0;1;1;;;;; +408;Gold Sodium Thiomalate;OC(=O)CC(S[Au])C(O)=O;1;1;0;;;;; +409;Gossypol;CC(C)c1c(O)c(O)c(C=O)c2c(O)c(c(C)cc12)-c1c(C)cc2c(C(C)C)c(O)c(O)c(C=O)c2c1O;1;1;0;;;;; +410;Griseofulvin;COc1cc(OC)c2C(=O)C3(Oc2c1Cl)C(C)CC(=O)C=C3OC;1;1;0;;;;; +411;Guaiazulene;CC(C)c1ccc(C)c2ccc(C)c2c1;0;1;0;;;;; +412;Guanabenz acetate;NC(=N)NN=Cc1c(Cl)cccc1Cl;0;1;0;;;;; +413;Guanidine hydrochloride;NC(N)=N;1;1;0;;;;; +414;Halofuginone;OC1CCCNC1CC(=O)CN1C=Nc2cc(Br)c(Cl)cc2C1=O;1;1;0;;;;; +415;Haloperidol;OC1(CCN(CCCC(=O)c2ccc(F)cc2)CC1)c1ccc(Cl)cc1;1;1;1;;;;; +416;Halothane;FC(F)(F)C(Cl)Br;1;1;1;;;;; +417;Hematoporphyrin;CC(O)c1c(C)c2cc3[nH]c(cc4nc(cc5[nH]c(cc1n2)c(C)c5C(C)O)c(C)c4CCC(O)=O)c(CCC(O)=O)c3C;0;1;0;;;;; +418;Heparin;CC(=O)NC1C(O)OC(COS(O)(=O)=O)C(OC2OC(C(OC3OC(CO)C(OC4OC(C(O)C(O)C4OS(O)(=O)=O)C(O)=O)C(OS(O)(=O)=O)C3NS(O)(=O)=O)C(O)C2OS(O)(=O)=O)C(O)=O)C1O;1;1;1;;;;; +419;Hesperidin;COc1ccc(cc1O)C1CC(=O)c2c(O)cc(OC3OC(COC4OC(C)C(O)C(O)C4O)C(O)C(O)C3O)cc2O1;1;1;0;;;;; +420;Hexachlorobenzene;Clc1c(Cl)c(Cl)c(Cl)c(Cl)c1Cl;1;1;0;;;;; +421;Hexachlorophene;Oc1c(Cl)cc(Cl)c(Cl)c1Cc1c(O)c(Cl)cc(Cl)c1Cl;0;1;0;;;;; +422;Hexestrol;CCC(C(CC)c1ccc(O)cc1)c1ccc(O)cc1;0;1;0;;;;; +423;Hexetidine;CCCCC(CC)CN1CN(CC(CC)CCCC)CC(C)(N)C1;0;1;0;;;;; +424;Hexobarbital;CN1C(O)=NC(=O)C(C)(C1=O)C1=CCCCC1;0;1;0;;;;; +425;Histamine Dihydrochloride;NCCc1cnc[nH]1;0;1;0;;;;; +426;Homoharringtonine;COC(=O)CC(O)(CCCC(C)(C)O)C(=O)OC1C2c3cc4OCOc4cc3CCN3CCCC23C=C1OC;1;0;0;;;;; +427;Hyaluronic acid;CC(=O)NC1C(O)OC(CO)C(O)C1OC1OC(C(OC2OC(CO)C(O)C(OC3OC(C(O)C(O)C3O)C(O)=O)C2NC(C)=O)C(O)C1O)C(O)=O;1;1;0;;;;; +428;Hydralazine;NNc1nncc2ccccc12;1;1;1;;;;; +429;Hydrochlorothiazide;NS(=O)(=O)c1cc2c(NCNS2(=O)=O)cc1Cl;1;0;0;;;;; +430;Hydrocortisone;CC12CCC(=O)C=C1CCC1C3CCC(O)(C(=O)CO)C3(C)CC(O)C21;1;1;1;;;;; +431;Hydrocortisone acetate;CC(=O)OCC(=O)C1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3C(O)CC12C;0;1;0;;;;; +432;Hydroquinone;Oc1ccc(O)cc1;1;1;0;;;;; +433;Hydroxyurea;NC(=O)NO;1;1;0;;;;; +434;Hydroxyzine;OCCOCCN1CCN(CC1)C(c1ccccc1)c1ccc(Cl)cc1;1;0;0;;;;; +435;Ibuprofen;CC(C)Cc1ccc(cc1)C(C)C(O)=O;1;1;0;;;;; +436;Idebenone;COC1=C(OC)C(=O)C(CCCCCCCCCCO)=C(C)C1=O;0;1;0;;;;; +437;IDN-6556;C[C@H](C(=O)ON[C@H](CCC(O)=O)C(=O)COc1c(F)c(F)cc(F)c1F)C(=O)C(=O)Nc1ccccc1C(C)(C)C;0;1;0;;;;; +438;Idoxifene;CCC(c1ccccc1)=C(c1ccc(I)cc1)c1ccc(OCCN2CCCC2)cc1;0;1;0;;;;; +439;Ifosfamide;ClCCNP1(=O)OCCCN1CCCl;1;0;0;;;;; +440;ilomastat;CNC(=O)C(Cc1c[nH]c2ccccc12)NC(=O)C(CC(C)C)CC(=O)NO;0;1;0;;;;; +441;Iloprost;CC#CCC(C)C(O)C=CC1C(O)CC2CC(CC12)=CCCCC(O)=O;0;1;0;;;;; +442;Imatinib mesilate;CN1CCN(CC1)Cc1ccc(cc1)C(=O)Nc1ccc(C)c(Nc2nccc(n2)-c2cccnc2)c1;1;1;0;;;;; +443;Imidapril;CCOC(=O)C(CCc1ccccc1)NC(C)C(=O)N1C(=O)N(C)C=C1C(O)=O;0;1;0;;;;; +444;Imipramine;CN(C)CCCN1c2ccccc2CCc2ccccc12;1;1;0;;;;; +445;Implanon;CCC12CC(=C)C3C(CCC4=CC(=O)CCC34)C1CCC2(O)C#C;1;0;0;;;;; +446;Indapamide;CC1Cc2ccccc2N1NC(=O)c1ccc(Cl)c(c1)S(N)(=O)=O;0;1;0;;;;; +447;Indinavir;CC(C)(C)NC(=O)C1CN(CCN1CC(O)CC(Cc1ccccc1)C(=O)NC1C(O)Cc2ccccc12)Cc1cccnc1;1;1;0;;;;; +448;Indocyanine Green;CC1(C)C(C=CC=CC=CC=C2Cc3c(ccc4ccccc34)N2CCCCS(O)(=O)=O)=[N+](CCCCS(O)(=O)=O)c2ccc3ccccc3c12;0;1;0;;;;; +449;Indomethacin;COc1ccc2n(C(=O)c3ccc(Cl)cc3)c(C)c(CC(O)=O)c2c1;1;1;1;;;;; +450;Inosine;OCC1OC(C(O)C1O)n1cnc2C(=O)N=CNc12;0;1;0;;;;; +451;Inositol;OC1C(O)C(O)C(O)C(O)C1O;1;0;0;;;;; +452;intoplicine;CN(C)CCCNc1ncc(C)c2Nc3ccc4cc(O)ccc4c3-c12;1;0;0;;;;; +453;Iodipamide;OC(=O)c1c(I)cc(I)c(NC(=O)CCCCC(=O)Nc2c(I)cc(I)c(C(O)=O)c2I)c1I;0;1;1;;;;; +454;Iohexol;CC(=O)N(CC(O)CO)c1c(I)c(C(=O)NCC(O)CO)c(I)c(C(=O)NCC(O)CO)c1I;0;0;1;;;;; +455;Iproclozide;CC(C)NNC(=O)COc1ccc(Cl)cc1;1;0;0;;;;; +456;Iproniazid;CC(C)NNC(=O)c1ccncc1;1;1;0;;;;; +457;Irbesartan;CCCCC1=NC2(CCCC2)C(=O)N1Cc1ccc(cc1)-c1ccccc1-c1nn[nH]n1;1;1;0;;;;; +458;Irinotecan;CCc1c2CN3C(=O)C4=C(C=C3c2[nH]c2ccc(OC(=O)N3CCC(CC3)N3CCCCC3)cc12)C(O)(CC)C(=O)OC4;1;0;0;;;;; +459;Isaxonine phosphate;CC(C)Nc1ncccn1;1;0;0;;;;; +460;Isoflavone;O=C1C(=COc2ccccc12)c1ccccc1;0;0;1;;;;; +461;Isoflurane;FC(F)OC(Cl)C(F)(F)F;1;1;1;;;;; +462;Isoniazid;NNC(=O)c1ccncc1;1;1;1;;;;; +463;Isoproterenol;CC(C)NCC(O)c1ccc(O)c(O)c1;1;1;1;;;;; +464;Isosorbide dinitrate;O=N(=O)OC1COC2C(COC12)ON(=O)=O;1;1;0;;;;; +465;Isosorbide mononitrate;OC1COC2C(COC12)ON(=O)=O;1;0;0;;;;; +466;Isotretinoin;CC(\C=C\C1=C(C)CCCC1(C)C)=C/C=C/C(C)=C\C(O)=O;1;0;0;;;;; +467;Isoxsuprine;CC(COc1ccccc1)NC(C)C(O)c1ccc(O)cc1;0;1;0;;;;; +468;Isradipine;COC(=O)C1=C(C)NC(C)=C(C1c1cccc2nonc12)C(=O)OC(C)C;1;0;0;;;;; +469;Itraconazole;CCC(C)N1N=CN(C1=O)c1ccc(cc1)N1CCN(CC1)c1ccc(OCC2COC(Cn3cncn3)(O2)c2ccc(Cl)cc2Cl)cc1;1;1;0;;;;; +470;Ivermectin;CCC(C)C1OC2(CCC1C)CC1CC(CC=C(C)C(OC3CC(OC)C(OC4CC(OC)C(O)C(C)O4)C(C)O3)C(C)C=CC=C3COC4C(O)C(C)=CC(C(=O)O1)C34O)O2;1;0;0;;;;; +471;ixabepilone;CC1CCCC2(C)OC2CC(NC(=O)CC(O)C(C)(C)C(=O)C(C)C1O)C(C)=Cc1csc(C)n1;1;0;0;;;;; +472;JTT-501;Cc1oc(nc1CCOc1ccc(CC2C(=O)NOC2=O)cc1)-c1ccccc1;0;1;0;;;;; +473;Kanamycin;NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O;0;0;1;;;;; +474;Ketamine;CNC1(CCCCC1=O)c1ccccc1Cl;0;1;1;;;;; +475;Ketanserin;Fc1ccc(cc1)C(=O)C1CCN(CC1)CCN1C(=O)Nc2ccccc2C1=O;1;1;0;;;;; +476;Ketoconazole;CC(=O)N1CCN(CC1)c1ccc(OCC2COC(Cn3ccnc3)(O2)c2ccc(Cl)cc2Cl)cc1;1;1;1;;;;; +477;Ketoprofen;CC(C(O)=O)c1cccc(c1)C(=O)c1ccccc1;1;0;0;;;;; +478;Khellin;COc1c2OC(C)=CC(=O)c2c(OC)c2ccoc12;0;1;0;;;;; +479;KRN 5500;CCCCCCCCCC=CC=CC(=O)NCC(=O)NC1C(O)C(O)C(Nc2ncnc3nc[nH]c23)OC1C(O)CO;0;1;0;;;;; +480;L dopa;NC(Cc1ccc(O)c(O)c1)C(O)=O;1;1;0;;;;; +481;Labetalol;CC(CCc1ccccc1)NCC(O)c1ccc(O)c(c1)C(N)=O;1;0;0;;;;; +482;Lactic acid;CC(O)C(O)=O;1;1;1;;;;; +483;Lactose;OCC1OC(OC2C(CO)OC(O)C(O)C2O)C(O)C(O)C1O;0;1;0;;;;; +484;Lactulose;OCC1OC(OC2C(CO)OC(O)(CO)C2O)C(O)C(O)C1O;1;1;0;;;;; +485;Lamivudine;NC1=NC(=O)N(C=C1)C1CSC(CO)O1;1;1;0;;;;; +486;Lamotrigine;Nc1nnc(c(N)n1)-c1cccc(Cl)c1Cl;1;0;0;;;;; +487;Lanreotide;CC(C)C1NC(=O)C(CCCCN)NC(=O)C(Cc2c[nH]c3ccccc23)NC(=O)C(Cc2ccc(O)cc2)NC(=O)C(CSSCC(NC1=O)C(=O)NC(C(C)O)C(N)=O)NC(=O)C(N)Cc1ccc2ccccc2c1;1;0;0;;;;; +488;Lansoprazole;Cc1c(OCC(F)(F)F)cc[nH]c1CS(=O)c1nc2ccccc2[nH]1;1;0;0;;;;; +489;L-Arginine;NC(CCC\N=C(\N)N)C(O)=O;1;1;1;;;;; +490;Lecithin;C[N+](C)(C)CCOP(O)(=O)OCC(COC=O)OC=O;1;1;0;;;;; +491;Leflunomide;Cc1oncc1C(=O)Nc1ccc(cc1)C(F)(F)F;1;1;0;;;;; +492;Leucovorin;NC1=NC(=O)C2=C(NCC(CNc3ccc(cc3)C(=O)NC(CCC(O)=O)C(O)=O)N2C=O)N1;1;1;0;;;;; +493;Levamisole;C1CN2CC(N=C2S1)c1ccccc1;1;1;0;;;;; +494;Levetiracetam;CCC(N1CCCC1=O)C(N)=O;1;0;0;;;;; +495;Levofloxacin;CC1COc2c(N3CCN(C)CC3)c(F)cc3C(=O)C(=CN1c23)C(O)=O;1;0;0;;;;; +496;Levosimendan;CC1CC(=O)NN=C1c1ccc(N\N=C(\C#N)C#N)cc1;0;0;1;;;;; +497;Lidocaine;CCN(CC)CC(=O)Nc1c(C)cccc1C;1;1;1;;;;; +498;Lisinopril;NCCCCC(NC(CCc1ccccc1)C(O)=O)C(=O)N1CCCC1C(O)=O;1;1;0;;;;; +499;Lodoxamide tromethamine;OC(=O)C(=O)Nc1cc(cc(NC(=O)C(O)=O)c1Cl)C#N;0;1;0;;;;; +500;Lofepramine;CN(CCCN1c2ccccc2CCc2ccccc12)CC(=O)c1ccc(Cl)cc1;1;0;0;;;;; +501;Lomustine;ClCCN(N=O)C(=O)NC1CCCCC1;1;1;0;;;;; +502;Loperamide;CN(C)C(=O)C(CCN1CCC(O)(CC1)c1ccc(Cl)cc1)(c1ccccc1)c1ccccc1;0;1;0;;;;; +503;Lopinavir;CC(C)C(N1CCCNC1=O)C(=O)NC(CC(O)C(Cc1ccccc1)NC(=O)COc1c(C)cccc1C)Cc1ccccc1;1;0;0;;;;; +504;Lornoxicam;CN1C(C(=O)Nc2ccccn2)=C(O)c2sc(Cl)cc2S1(=O)=O;1;0;0;;;;; +505;Losartan;CCCCc1nc(Cl)c(CO)n1Cc1ccc(cc1)-c1ccccc1-c1nn[nH]n1;1;1;0;;;;; +506;Lovastatin;CCC(C)C(=O)OC1CC(C)C=C2C=CC(C)C(CCC3CC(O)CC(=O)O3)C12;1;1;1;;;;; +507;Lysine acetylsalicylate;CC(=O)Oc1ccccc1C(O)=O;1;1;0;;;;; +508;Malathion;CCOC(=O)CC(SP(=S)(OC)OC)C(=O)OCC;0;1;0;;;;; +509;Malotilate;CC(C)OC(=O)C(\C(=O)OC(C)C)=C1\SC=CS1;1;1;0;;;;; +510;Mangafodipir trisodium;Cc1ncc(COP(O)(O)=O)c(CN(CCN(CC(O)=O)Cc2c(COP(O)(O)=O)cnc(C)c2O)CC(O)=O)c1O;1;0;0;;;;; +511;Mannitol;O[C@H]([C@H](O)CO)[C@H](O)[C@H](O)CO;1;1;1;;;;; +512;Marimastat;CNC(=O)C(NC(=O)C(CC(C)C)C(O)C(=O)NO)C(C)(C)C;0;1;0;;;;; +513;Marvelon;CCC12CC(=C)C3C(CCC4=CCCCC34)C1CCC2(O)C#C;1;0;0;;;;; +514;Mazindol;OC1(N2CCN=C2c2ccccc12)c1ccc(Cl)cc1;0;1;0;;;;; +515;Mebendazole;COC(=O)Nc1nc2ccc(cc2[nH]1)C(=O)c1ccccc1;1;0;1;;;;; +516;Mebutamate;CCC(C)C(C)(COC(N)=O)COC(N)=O;0;1;0;;;;; +517;Meclizine;Cc1cccc(CN2CCN(CC2)C(c2ccccc2)c2ccc(Cl)cc2)c1;0;1;0;;;;; +518;Meclofenoxate;CN(C)CCOC(=O)COc1ccc(Cl)cc1;0;1;0;;;;; +519;Medetomidine;CC(c1c[nH]c[nH]1)c1cccc(C)c1C;1;0;1;;;;; +520;Medroxyprogesterone acetate;CC1CC2C(CCC3(C)C2CCC3(OC(C)=O)C(C)=O)C2(C)CCC(=O)C=C12;0;1;0;;;;; +521;Mefenamic acid;Cc1cccc(Nc2ccccc2C(O)=O)c1C;1;1;0;;;;; +522;Megestrol acetate;CC(=O)OC1(CCC2C3C=C(C)C4=CC(=O)CCC4(C)C3CCC12C)C(C)=O;1;1;0;;;;; +523;Meloxicam;CN1C(C(=O)c2ccccc2S1(=O)=O)=C(O)Nc1ncc(C)s1;1;0;0;;;;; +524;Melphalan;NC(Cc1ccc(cc1)N(CCCl)CCCl)C(O)=O;1;1;0;;;;; +525;Menadione;CC1=CC(=O)c2ccccc2C1=O;1;1;1;;;;; +526;Menthol;CC(C)c1ccc(C)cc1O;1;0;0;;;;; +527;Meperidine;CCOC(=O)C1(CCN(C)CC1)c1ccccc1;1;0;0;;;;; +528;Mephenytoin;CCC1(NC(=O)N(C)C1=O)c1ccccc1;0;1;0;;;;; +529;Mephobarbital;CCC1(C(=O)NC(=O)N(C)C1=O)c1ccccc1;0;1;0;;;;; +530;Mepivacaine;CC1CCCC(N1C)C(=O)N(C)c1ccccc1C;0;1;0;;;;; +531;Meprobamate;CCCC(C)(COC(N)=O)COC(N)=O;0;1;0;;;;; +532;Mequinol;COc1ccc(O)cc1;0;1;0;;;;; +533;Meropenem;CC(O)C1C2C(C)C(SC3CCC(N3)C(=O)N(C)C)=C(N2C1=O)C(O)=O;1;0;0;;;;; +534;Mersalyl;COC(CNC(=O)c1ccccc1OCC(O)=O)C[Hg]O;0;1;0;;;;; +535;Mesalamine;Nc1ccc(O)c(c1)C(O)=O;1;1;0;;;;; +536;Mesna;OS(=O)(=O)CCS;0;1;0;;;;; +537;Metformin;CN(C)C(=N)\N=C(\N)N;1;1;1;;;;; +538;Methadone;CCC(=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1;1;1;0;;;;; +539;Methamphetamine;CNC(C)Cc1ccccc1;1;1;0;;;;; +540;Methaqualone;CC1=Nc2ccccc2C(=O)N1c1ccccc1C;0;1;0;;;;; +541;Methimazole;Cn1ccnc1S;1;1;0;;;;; +542;Methionine;CSCCC(N)C(O)=O;1;1;1;;;;; +543;Methohexital sodium;CCC=CC(C)C1(CC=C)C(=O)NC(=O)N(C)C1=O;0;1;0;;;;; +544;Methotrexate;CN(Cc1cnc2nc(N)nc(N)c2n1)c1ccc(cc1)C(=O)NC(CCC(O)=O)C(O)=O;1;1;1;;;;; +545;Methoxsalen;COc1c2OC(=O)C=Cc2cc2ccoc12;1;1;0;;;;; +546;Methoxyflurane;COC(F)(F)C(Cl)Cl;1;1;0;;;;; +547;Methyl salicylate;COC(=O)c1ccccc1O;0;0;1;;;;; +548;Methylcobalamin;CC(CNC(=O)CCC1(C)C(CC(N)=O)C2NC1=C(C)C1=NC(=CC3=NC(=C(C)C4=NC2(C)C(C)(CC(N)=O)C4CCC(N)=O)C(C)(CC(N)=O)C3CCC(N)=O)C(C)(C)C1CCC(N)=O)OP(O)(=O)OC1C(CO)OC(C1O)n1cnc2cc(C)c(C)cc12;0;1;0;;;;; +549;Methyldopa;CC(N)(Cc1ccc(O)c(O)c1)C(O)=O;1;0;0;;;;; +550;Methylphenidate;COC(=O)C(C1CCCCN1)c1ccccc1;1;1;0;;;;; +551;Methylprednisolone;CC1CC2C3CCC(O)(C(=O)CO)C3(C)CC(O)C2C2(C)C=CC(=O)C=C12;1;1;0;;;;; +552;Methyltestosterone;CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C;1;1;0;;;;; +553;Methyprylon;CCC1(CC)C(=O)NCC(C)C1=O;0;1;0;;;;; +554;Metoclopramide;CCN(CC)CCNC(=O)c1cc(Cl)c(N)cc1OC;1;1;0;;;;; +555;Metoprolol;COCCc1ccc(OCC(O)CNC(C)C)cc1;1;1;0;;;;; +556;Metronidazole;Cc1ncc(n1CCO)N(=O)=O;1;1;0;;;;; +557;Metyrapone;CC(C)(C(=O)c1cccnc1)c1cccnc1;1;1;0;;;;; +558;Mianserin;CN1CCN2C(C1)c1ccccc1Cc1ccccc21;1;1;0;;;;; +559;Micafungin;CCCCCOc1ccc(cc1)-c1cc(no1)-c1ccc(cc1)C(=O)NC1CC(O)C(O)NC(=O)C2C(O)C(C)CN2C(=O)C(NC(=O)C(NC(=O)C2CC(O)CN2C(=O)C(NC1=O)C(C)O)C(O)C(O)c1ccc(O)c(OS(O)(=O)=O)c1)C(O)CC(N)=O;1;0;0;;;;; +560;Miconazole;Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1;1;1;0;;;;; +561;Midazolam;Cc1ncc2CN=C(c3ccccc3F)c3cc(Cl)ccc3-n12;0;1;0;;;;; +562;Mifepristone;CC#CC1(O)CCC2C3CCC4=CC(=O)CCC4=C3C(CC12C)c1ccc(cc1)N(C)C;0;1;0;;;;; +563;Miglustat;CCCCN1CC(O)C(O)C(O)C1CO;0;1;0;;;;; +564;Miltefosine;CCCCCCCCCCCCCCCCOP(O)(=O)OCC[N+](C)(C)C;1;0;0;;;;; +565;Minocycline;CN(C)C1C2CC3Cc4c(ccc(O)c4C(=O)C3=C(O)C2(O)C(=O)C(C(N)=O)=C1O)N(C)C;1;1;0;;;;; +566;Minoxidil;NC1=CC(=NC(=N)N1O)N1CCCCC1;1;1;0;;;;; +567;Mirtazapine;CN1CCN2C(C1)c1ccccc1Cc1cccnc21;1;0;0;;;;; +568;Misoprostol;CCCCC(C)(O)CC=CC1C(O)CC(=O)C1CCCCCCC(=O)OC;0;1;1;;;;; +569;Mithramycin;COC(C1Cc2cc3cc(OC4CC(OC5CC(O)C(O)C(C)O5)C(O)C(C)O4)c(C)c(O)c3c(O)c2C(=O)C1OC1CC(OC2CC(OC3CC(C)(O)C(O)C(C)O3)C(O)C(C)O2)C(O)C(C)O1)C(=O)C(O)C(C)O;1;1;0;;;;; +570;mitiglinide;OC(=O)C(CC(=O)N1CC2CCCCC2C1)Cc1ccccc1;0;1;0;;;;; +571;Mitomycin;COC12C3NC3CN1C1=C(C2COC(N)=O)C(=O)C(N)=C(C)C1=O;1;1;0;;;;; +572;Mitotane;ClC(Cl)C(c1ccc(Cl)cc1)c1ccccc1Cl;1;0;1;;;;; +573;Mitoxantrone;OCCNCCNc1ccc(NCCNCCO)c2C(=O)c3c(O)ccc(O)c3C(=O)c12;1;1;0;;;;; +574;Mizolastine;CN(C1CCN(CC1)c1nc2ccccc2n1Cc1ccc(F)cc1)C1=NC=CC(=O)N1;1;0;0;;;;; +575;Modafinil;NC(=O)CS(=O)C(c1ccccc1)c1ccccc1;1;0;0;;;;; +576;Molsidomine;CCOC(=O)Nc1c[n+](no1)N1CCOCC1;1;1;0;;;;; +577;Monensin sodium;CCC1(CCC(O1)C1(C)CCC2(CC(O)C(C)C(O2)C(C)C(OC)C(C)C(O)=O)O1)C1OC(CC1C)C1OC(O)(CO)C(C)CC1C;0;1;0;;;;; +578;Montelukast;CC(C)(O)c1ccccc1CCC(SCC1(CC1)CC(O)=O)c1cccc(C=Cc2ccc3ccc(Cl)cc3n2)c1;1;0;0;;;;; +579;Morphazinamide;O=C(NCN1CCOCC1)c1cnccn1;1;0;0;;;;; +580;Morphine;CN1CCC23C4Oc5c(O)ccc(CC1C2C=CC4O)c35;1;1;0;;;;; +581;Moxalactam;COC1(NC(=O)C(C(O)=O)c2ccc(O)cc2)C2OCC(CSc3nnnn3C)=C(N2C1=O)C(O)=O;1;0;0;;;;; +582;Moxifloxacin;COc1c(N2CC3CCCNC3C2)c(F)cc2C(=O)C(=CN(C3CC3)c12)C(O)=O;1;0;0;;;;; +583;Moxisylyte;CC(C)c1cc(OC(C)=O)c(C)cc1OCCN(C)C;1;0;0;;;;; +584;Moxonidine;COc1nc(C)nc(Cl)c1\N=C1/NCCN1;0;1;0;;;;; +585;Muzolimine;CC(N1N=C(N)CC1=O)c1ccc(Cl)c(Cl)c1;1;0;0;;;;; +586;Mycophenolate;COc1c(C)c2COC(=O)c2c(O)c1CC=C(C)CCC(O)=O;1;1;0;;;;; +587;Mycophenolate mofetil;COc1c(C)c2COC(=O)c2c(O)c1CC=C(C)CCC(=O)OCCN1CCOCC1;1;0;0;;;;; +588;Nabumetone;COc1ccc2cc(CCC(C)=O)ccc2c1;0;1;0;;;;; +589;Nadolol;CC(C)(C)NCC(O)COc1cccc2CC(O)C(O)Cc12;1;0;0;;;;; +590;Nafarelin;CC(C)CC(NC(=O)C(N)Cc1ccc2ccccc2c1)C(=O)NC(CCCNC(N)=N)C(=O)N1CCCC1C(=O)NCC(=O)NC(=O)C(Cc1ccc(O)cc1)NC(=O)C(CO)NC(=O)C(Cc1c[nH]c2ccccc12)NC(=O)C(CC1C=NC=N1)NC(=O)C1CCC(=O)N1;1;0;0;;;;; +591;Nalidixic acid;CCN1C=C(C(O)=O)C(=O)c2ccc(C)nc12;1;1;0;;;;; +592;Nalorphine;OC1C=CC2C3Cc4ccc(O)c5OC1C2(CCCN3CC=C)c45;0;1;0;;;;; +593;Naloxone;Oc1ccc2CC3N(CCC45C(Oc1c24)C(=O)CCC35O)CC=C;0;1;0;;;;; +594;Naltrexone;Oc1ccc2CC3N(CCC45C(Oc1c24)C(=O)CCC35O)CC1CC1;1;1;0;;;;; +595;Nandrolone Decanoate;CCCCCCCCCC(=O)OC1CCC2C3CCC4=CC(=O)CCC4C3CCC12C;0;1;0;;;;; +596;Naproxen;COc1ccc2cc(ccc2c1)C(C)C(O)=O;1;1;0;;;;; +597;N-aspartyl chlorin e6;CCc1c(C)c2cc3[nH]c(cc4nc(C(CCC(O)=O)C4C)c(CC(=O)NC(CC(O)=O)C(O)=O)c4nc(cc1[nH]2)c(C)c4C(O)=O)c(C)c3C=C;0;1;0;;;;; +598;Natamycin;CC1CC=CC=CC=CC=CC(CC2OC(O)(CC(O)CC3OC3C=CC(=O)O1)CC(O)C2C(O)=O)OC1OC(C)C(O)C(N)C1O;0;0;1;;;;; +599;Nefazodone;CCC1=NN(CCCN2CCN(CC2)c2cccc(Cl)c2)C(=O)N1CCOc1ccccc1;1;0;0;;;;; +600;Nelfinavir;Cc1c(O)cccc1C(=O)NC(CSc1ccccc1)C(O)CN1CC2CCCCC2CC1C(=O)NC(C)(C)C;1;0;0;;;;; +601;Neomycin;NCC1CC(OC2C(N)CC(N)C(O)C2OC2OC(CO)C(OC3OC(CN)C(O)C(O)C3N)C2O)C(N)C(O)C1O;0;1;0;;;;; +602;Neomycin sulfate;NCC1OC(OC2C(N)CC(N)C(O)C2OC2OC(CO)C(OC3OC(CN)C(O)C(O)C3N)C2O)C(N)C(O)C1O;0;1;0;;;;; +603;Neostigmine;CN(C)C(=O)Oc1cccc(c1)[N+](C)(C)C;0;1;0;;;;; +604;Netilmicin;CCNC1CC(N)C(OC2OC(CN)=CCC2N)C(O)C1OC1OCC(C)(O)C(NC)C1O;1;1;0;;;;; +605;Nevirapine;Cc1ccnc2N(C3CC3)c3ncccc3C(=O)Nc12;1;0;0;;;;; +606;Niacin;OC(=O)c1cccnc1;1;1;0;;;;; +607;Nialamide;O=C(CCNNC(=O)c1ccncc1)NCc1ccccc1;0;1;0;;;;; +608;Nicergoline;COC12CC(COC(=O)c3cncc(Br)c3)CN(C)C1Cc1cn(C)c3cccc2c13;0;1;0;;;;; +609;Niceritrol;O=C(OCC(COC(=O)c1cccnc1)(COC(=O)c1cccnc1)COC(=O)c1cccnc1)c1cccnc1;0;0;1;;;;; +610;Nicorandil;O=C(NCCON(=O)=O)c1cccnc1;0;1;0;;;;; +611;Nicotinamide;NC(=O)c1cccnc1;1;1;0;;;;; +612;Nicotinamide adenine dinucleotide;NC(=O)c1ccc[n+](c1)C1OC(COP(O)(=O)OP(O)(=O)OCC2OC(C(O)C2O)n2cnc3c(N)ncnc23)C(O)C1O;0;1;0;;;;; +613;Nicotine;CN1CCCC1c1cccnc1;1;1;0;;;;; +614;Nicotinic acid;OC(=O)c1cccnc1;1;1;0;;;;; +615;Nifedipine;COC(=O)C1=C(C)NC(C)=C(C1c1ccccc1N(=O)=O)C(=O)OC;1;1;1;;;;; +616;Niflumic acid;OC(=O)c1cccnc1Nc1cccc(c1)C(F)(F)F;0;1;0;;;;; +617;Nifurtimox;CC1CS(=O)(=O)CCN1N=Cc1ccc(o1)N(=O)=O;0;1;0;;;;; +618;Nifurtoinol;OCN1C(=O)CN(CCc2ccc(o2)N(=O)=O)C1=O;1;0;0;;;;; +619;Nilutamide;CC1(C)NC(=O)N(c2ccc(c(c2)C(F)(F)F)N(=O)=O)C1=O;1;1;0;;;;; +620;Nimesulide;CS(=O)(=O)Nc1ccc(cc1Oc1ccccc1)N(=O)=O;1;1;0;;;;; +621;Nimodipine;COCCOC(=O)C1=C(C)NC(C)=C(C1c1cccc(c1)N(=O)=O)C(=O)OC(C)C;1;1;0;;;;; +622;Niridazole;O=C1NCCN1c1ncc(s1)N(=O)=O;0;1;0;;;;; +623;Nisoldipine;COC(=O)C1=C(C)NC(C)=C(C1c1ccccc1N(=O)=O)C(=O)OCC(C)C;1;1;1;;;;; +624;Nitisinone;FC(F)(F)c1ccc(C(=O)C2C(=O)CCCC2=O)c(c1)N(=O)=O;0;1;1;;;;; +625;Nitrazepam;O=C1CN=C(c2ccccc2)c2cc(ccc2N1)N(=O)=O;0;1;0;;;;; +626;Nitrendipine;CCOC(=O)C1=C(C)NC(C)=C(C1c1cccc(c1)N(=O)=O)C(=O)OC;1;1;0;;;;; +627;Nitrofurantoin;O=C1CN(N=Cc2ccc(o2)N(=O)=O)C(=O)N1;1;1;1;;;;; +628;Nitrofurazone;NC(=O)NN=Cc1ccc(o1)N(=O)=O;0;1;0;;;;; +629;Nitroglycerin;O=N(=O)OCC(CON(=O)=O)ON(=O)=O;1;1;0;;;;; +630;Nizatidine;CNC(NCCSCc1csc(CN(C)C)n1)=CN(=O)=O;1;1;0;;;;; +631;N-methylglucamine;CNCC(O)C(O)C(O)C(O)CO;1;0;0;;;;; +632;Nordihydroguaiaretic acid;CC(Cc1ccc(O)c(O)c1)C(C)Cc1ccc(O)c(O)c1;1;1;0;;;;; +633;Norepinephrine;NCC(O)c1ccc(O)c(O)c1;1;1;1;;;;; +634;Norethindrone;CC12CCC3C(CCC4=CC(=O)CCC34)C1CCC2(O)C#C;1;1;0;;;;; +635;Norethindrone acetate;CC(=O)OC1(CCC2C3CCC4=CC(=O)CCC4C3CCC12C)C#C;0;1;1;;;;; +636;Norethynodrel;CC12CCC3C(CCC4=C3CCC(=O)C4)C1CCC2(O)C#C;0;1;0;;;;; +637;Norfloxacin;CCN1C=C(C(O)=O)C(=O)c2cc(F)c(cc12)N1CCNCC1;1;1;0;;;;; +638;Norgestrel;CCC12CCC3C(CCC4=CC(=O)CCC34)C1CCC2(O)C#C;1;1;0;;;;; +639;Nortriptyline;CNCC\C=C1\c2ccccc2CCc2ccccc12;1;0;0;;;;; +640;Noscapine;COc1ccc2C(OC(=O)c2c1OC)C1N(C)CCc2cc3OCOc3c(OC)c12;0;1;0;;;;; +641;Novobiocin;COC1C(OC(N)=O)C(O)C(Oc2ccc3C(O)=C(NC(=O)c4ccc(O)c(C\C=C(\C)C)c4)C(=O)Oc3c2C)OC1(C)C;1;1;0;;;;; +642;Octapressin;NCCCCC(NC(=O)C1CCCN1C(=O)C1CSSCC(N)C(=O)NC(Cc2ccccc2)C(=O)NC(Cc2ccccc2)C(=O)NC(CCC(N)=O)C(=O)NC(CC(N)=O)C(=O)N1)C(=O)NCC(N)=O;0;0;1;;;;; +643;Octreotide;CC(O)C(CO)NC(=O)C1CSSCC(NC(=O)C(N)Cc2ccccc2)C(=O)NC(Cc2ccccc2)C(=O)NC(Cc2c[nH]c3ccccc23)C(=O)NC(CCCCN)C(=O)NC(C(C)O)C(=O)N1;1;1;0;;;;; +644;Olanzapine;CN1CCN(CC1)C1=Nc2ccccc2Nc2sc(C)cc12;1;0;0;;;;; +645;Olmesartan medoxomil;O=C1O/C(=C(\O1)C)COC(=O)c2c(nc(n2Cc5ccc(c4ccccc4c3nnnn3)cc5)CCC)C​C;0;1;0;;;;; +646;Omeprazole;O=S(c2nc1ccc(OC)cc1n2)Cc3ncc(c(OC)c3C)C;1;1;0;;;;; +647;Ondansetron;Cc1nccn1CC1CCc2c(C1=O)c1ccccc1n2C;1;0;0;;;;; +648;Orlistat;CCCCCCCCCCCC(CC1OC(=O)C1CCCCCC)OC(=O)C(CC(C)C)NC=O;1;0;0;;;;; +649;Orotic acid;OC(=O)C1=CC(=O)NC(=O)N1;0;1;0;;;;; +650;Orphenadrine;CN(C)CCOC(c1ccccc1)c1ccccc1C;0;1;0;;;;; +651;OSI-461;CC1=C(CC(=O)NCc2ccccc2)c2cc(F)ccc2C1=Cc1ccncc1;1;0;0;;;;; +652;Oxacillin sodium;Cc1onc(-c2ccccc2)c1C(=O)NC1C2SC(C)(C)C(N2C1=O)C(O)=O;1;0;0;;;;; +653;Oxaliplatin;NC1CCCCC1N;1;0;0;;;;; +654;Oxamniquine;CC(C)NCC1CCc2cc(CO)c(cc2N1)N(=O)=O;0;1;0;;;;; +655;Oxandrolone;CC1(O)CCC2C3CCC4CC(=O)OCC4(C)C3CCC12C;0;1;0;;;;; +656;Oxaprozin;OC(=O)CCc1nc(-c2ccccc2)c(o1)-c1ccccc1;1;0;0;;;;; +657;Oxazepam;OC1N=C(c2ccccc2)c2cc(Cl)ccc2NC1=O;1;1;0;;;;; +658;Oxcarbazepine;NC(=O)N1c2ccccc2CC(=O)c2ccccc12;1;0;0;;;;; +659;Oxethazaine;CN(C(=O)CN(CCO)CC(=O)N(C)C(C)(C)Cc1ccccc1)C(C)(C)Cc1ccccc1;0;1;0;;;;; +660;Oxprenolol;CC(C)NCC(O)COc1ccccc1OCC=C;0;0;1;;;;; +661;Oxybenzone;COc1ccc(C(=O)c2ccccc2)c(O)c1;0;1;0;;;;; +662;Oxycodone hydrochloride;COc1ccc2CC3N(C)CCC45C(Oc1c24)C(=O)CCC35O;0;1;0;;;;; +663;Oxymetholone;CC1(O)CCC2C3CCC4CC(=O)C(CC4(C)C3CCC12C)=CO;1;0;0;;;;; +664;Oxymorphone;CN1CCC23C4Oc5c(O)ccc(CC1C2(O)CCC4=O)c35;1;0;0;;;;; +665;Oxyphenbutazone;CCCCC1C(=O)N(N(C1=O)c1ccc(O)cc1)c1ccccc1;0;1;0;;;;; +666;Oxyphenisatin;CC(=O)Oc1ccc(cc1)C1(C(=O)Nc2ccccc12)c1ccc(OC(C)=O)cc1;1;0;0;;;;; +667;Oxypurinol;Oc1nc(O)c2cn[nH]c2n1;0;1;0;;;;; +668;Oxytetracycline;CN(C)C1C2C(O)C3C(C(=O)c4c(O)cccc4C3(C)O)=C(O)C2(O)C(=O)C(C(N)=O)=C1O;0;1;0;;;;; +669;Ozagrel;OC(=O)C=Cc1ccc(Cn2ccnc2)cc1;0;1;0;;;;; +670;Paclitaxel;CC(=O)OC1C(=O)C2(C)C(O)CC3OCC3(OC(C)=O)C2C(OC(=O)c2ccccc2)C2(O)CC(OC(=O)C(O)C(NC(=O)c3ccccc3)c3ccccc3)C(C)=C1C2(C)C;1;1;0;;;;; +671;Pantoprazole;COc1cc[nH]c(CS(=O)c2nc3ccc(OC(F)F)cc3[nH]2)c1OC;1;0;0;;;;; +672;para-Aminosalicylic acid;Nc1ccc(C(O)=O)c(O)c1;1;0;0;;;;; +673;Paromomycin;NCC1OC(OC2C(CO)OC(OC3C(O)C(N)CC(N)C3OC3OC(CO)C(O)C(O)C3N)C2O)C(N)C(O)C1O;0;1;0;;;;; +674;Paroxetine;Fc1ccc(cc1)C1CCNCC1COc1ccc2OCOc2c1;1;0;0;;;;; +675;Pemoline;NC1=NC(=O)C(O1)c1ccccc1;1;0;0;;;;; +676;Penciclovir;NC1=NC(=O)c2ncn(CCC(CO)CO)c2N1;1;0;0;;;;; +677;Penicillamine;CC(C)(S)C(N)C(O)=O;1;1;1;;;;; +678;Penicillin;CC1(C)SC2C(NC(=O)Cc3ccccc3)C(=O)N2C1C(O)=O;1;1;1;;;;; +679;Pentagastrin;CSCCC(NC(=O)C(Cc1c[nH]c2ccccc12)NC(=O)CCNC(=O)OCC(C)C)C(=O)NC(CC(O)=O)C(=O)NC(Cc1ccccc1)C(N)=O;1;1;0;;;;; +680;Pentazocine;CC1C2Cc3ccc(O)cc3C1(C)CCN2C\C=C(\C)C;0;1;0;;;;; +681;Pentobarbital;CCCC(C)C1(CC)C(=O)NC(=O)NC1=O;1;1;1;;;;; +682;Pentoxifylline;CN1C(=O)N(CCCCC(C)=O)C(=O)c2c1ncn2C;1;1;1;;;;; +683;Perazine;CN1CCN(CCCN2c3ccccc3Sc3ccccc23)CC1;1;0;0;;;;; +684;Perfluorooctylbromide;FC(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)Br;1;0;1;;;;; +685;Perindopril;CCCC(NC(C)C(=O)N1C2CCCCC2CC1C(O)=O)C(=O)OCC;1;1;0;;;;; +686;Permethrin;CC1(C)C(\C=C(\Cl)Cl)C1C(=O)OCc1cccc(Oc2ccccc2)c1;0;1;0;;;;; +687;Perphenazine;OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc23)CC1;0;1;0;;;;; +688;Phenacetin;CCOc1ccc(NC(C)=O)cc1;1;1;0;;;;; +689;Phenelzine;NNCCc1ccccc1;1;1;0;;;;; +690;Phenformin;NC(=N)NC(=N)NCCc1ccccc1;0;1;0;;;;; +691;Phenobarbital;CCC1(C(=O)NC(=O)NC1=O)c1ccccc1;1;1;1;;;;; +692;Phenol;Oc1ccccc1;1;1;0;;;;; +693;Phenolphthalein;Oc1ccc(cc1)C1(OC(=O)c2ccccc12)c1ccc(O)cc1;0;1;0;;;;; +694;Phenoxybenzamine;CC(COc1ccccc1)N(CCCl)Cc1ccccc1;0;1;0;;;;; +695;Phenprocoumon;CCC(c1ccccc1)C1=C(O)Oc2ccccc2C1=O;1;0;0;;;;; +696;Phentolamine;Cc1ccc(cc1)N(CC1=NCCN1)c1cccc(O)c1;0;1;1;;;;; +697;phenylacetate;OC(=O)Cc1ccccc1;0;1;0;;;;; +698;Phenylbutazone;CCCCC1C(=O)N(N(C1=O)c1ccccc1)c1ccccc1;1;1;0;;;;; +699;Phenylephrine;CNCC(O)c1cccc(O)c1;1;1;1;;;;; +700;Phenylpropanolamine;CC(N)C(O)c1ccccc1;0;1;0;;;;; +701;Phenyramidol;OC(CNc1ccccn1)c1ccccc1;1;0;0;;;;; +702;Phenytoin;O=C1NC(=O)C(N1)(c1ccccc1)c1ccccc1;1;1;1;;;;; +703;Physostigmine;CNC(=O)Oc1ccc2N(C)C3N(C)CCC3(C)c2c1;0;1;0;;;;; +704;Picosulfate sodium;OS(=O)(=O)Oc1ccc(cc1)C(c1ccc(OS(O)(=O)=O)cc1)c1ccccn1;1;0;0;;;;; +705;Pilocarpine;CCC1C(COC1=O)Cc1cncn1C;0;1;0;;;;; +706;Pimozide;Fc1ccc(cc1)C(CCCN1CCC(CC1)N1C(=O)Nc2ccccc12)c1ccc(F)cc1;1;0;0;;;;; +707;Pinacidil;CC(NC(Nc1cc[nH]cc1)=NC#N)C(C)(C)C;1;1;0;;;;; +708;Pipemidic Acid;CCN1C=C(C(O)=O)C(=O)c2cnc(nc12)N1CCNCC1;1;0;0;;;;; +709;Piperacillin;CCN1CCN(C(=O)NC(C(=O)NC2C3SC(C)(C)C(N3C2=O)C(O)=O)c2ccccc2)C(=O)C1=O;0;1;1;;;;; +710;Piperazine;C1CNCCN1;0;1;0;;;;; +711;Piperonyl butoxide;CCCCOCCOCCOCc1cc2OCOc2cc1CCC;0;1;0;;;;; +712;Pirfenidone;CC1=CN(C(=O)C=C1)c1ccccc1;0;1;1;;;;; +713;Piritrexim;COc1ccc(OC)c(Cc2cnc3[nH]c(N)nc(N)c3c2C)c1;1;0;0;;;;; +714;Piroxicam;CN1C(C(=O)c2ccccc2S1(=O)=O)=C(O)Nc1ccccn1;1;1;0;;;;; +715;Pirprofen;CC(C(O)=O)c1ccc(N2CC=CC2)c(Cl)c1;1;1;0;;;;; +716;Pitavastatin;OC(CC(O)C=Cc1c(nc2ccccc2c1-c1ccc(F)cc1)C1CC1)CC(O)=O;1;1;0;;;;; +717;Pizotyline;CN1CC\C(CC1)=C1/c2ccccc2CCc2sccc12;1;0;0;;;;; +718;Podophyllotoxin;COc1cc(cc(OC)c1OC)C1C2C(COC2=O)C(O)c2cc3OCOc3cc12;0;1;0;;;;; +719;Polyethylene glycol;OCCOCCOCCOCCOCCOCCOCCOCCOCCO;1;1;0;;;;; +720;Polymyxin B;CCC(C)CCCCC(=O)NC(CCN)C(=O)NC(C(C)O)C(=O)NC(CCN)C(=O)NC1CCNC(=O)C(NC(=O)C(CCN)NC(=O)C(CCN)NC(=O)C(CC(C)C)NC(=O)C(Cc2ccccc2)NC(=O)C(CCN)NC1=O)C(C)O;1;1;0;;;;; +721;Polyvinyl alcohol;OC=C;0;0;1;;;;; +722;Porfimer sodium;CCc1c(C)c2cc3nc(cc4nc(cc5[nH]c(cc1[nH]2)c(C)c5C(C)O)c(C)c4CCC(O)=O)c(CCC(O)=O)c3C;0;1;0;;;;; +723;Prasterone;CC12CCC3C(CC=C4CC(O)CCC34C)C1CCC2=O;1;1;0;;;;; +724;Pravastatin;CCC(C)C(=O)OC1CC(O)C=C2C=CC(C)C(CCC(O)CC(O)CC(O)=O)C12;1;1;1;;;;; +725;Praziquantel;O=C1CN(CC2N1CCc1ccccc21)C(=O)C1CCCCC1;0;1;1;;;;; +726;Prazosin;COc1cc2nc(nc(N)c2cc1OC)N1CCN(CC1)C(=O)c1ccco1;1;1;0;;;;; +727;Prednisolone;CC12CC(O)C3C(CCC4=CC(=O)C=CC34C)C1CCC2(O)C(=O)CO;1;1;0;;;;; +728;Prednisone;CC12CC(=O)C3C(CCC4=CC(=O)C=CC34C)C1CCC2(O)C(=O)CO;1;0;1;;;;; +729;Primaquine;COc1cc(NC(C)CCCN)c2ncccc2c1;1;1;0;;;;; +730;Primidone;CCC1(C(=O)NCNC1=O)c1ccccc1;1;0;1;;;;; +731;Probenecid;CCCN(CCC)S(=O)(=O)c1ccc(cc1)C(O)=O;1;1;0;;;;; +732;Probucol;CC(C)(Sc1cc(c(O)c(c1)C(C)(C)C)C(C)(C)C)Sc1cc(c(O)c(c1)C(C)(C)C)C(C)(C)C;1;1;1;;;;; +733;Procainamide;CCN(CC)CCNC(=O)c1ccc(N)cc1;1;1;0;;;;; +734;Procarbazine;CNNCc1ccc(cc1)C(=O)NC(C)C;0;1;0;;;;; +735;Prochlorperazine;CN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc23)CC1;1;0;0;;;;; +736;Progesterone;CC(=O)C1CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C;1;1;1;;;;; +737;Progestin;CC(=O)C1CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C;1;0;0;;;;; +738;Promethazine;CC(CN1c2ccccc2Sc2ccccc12)N(C)C;0;1;1;;;;; +739;Propan-2-ol;CC(C)O;0;1;0;;;;; +740;Propofol;CC(C)c1cccc(C(C)C)c1O;1;1;1;;;;; +741;Propoxyphene;CCC(=O)OC(Cc1ccccc1)(C(C)CN(C)C)c1ccccc1;1;1;0;;;;; +742;Propranolol;CC(C)NCC(O)COc1cccc2ccccc12;1;1;1;;;;; +743;Propylthiouracil;CCCC1=CC(=O)NC(=S)N1;1;1;0;;;;; +744;Prostaglandin E1;CCCCCC(O)C=CC1C(O)CC(=O)C1CCCCCCC(O)=O;1;1;1;;;;; +745;Prostaglandin E2;CCCCCC(O)C=CC1C(O)CC(=O)C1CC=CCCCC(O)=O;1;1;0;;;;; +746;Prostaglandin F2a;CCCCCC(O)C=CC1C(O)CC(O)C1CC=CCCCC(O)=O;1;1;1;;;;; +747;Protionamide;CCCc1cc(ccn1)C(N)=S;1;0;0;;;;; +748;Pyrazinamide;NC(=O)c1cnccn1;1;1;0;;;;; +749;Pyridinol Carbamate;CNC(=O)OCc1cccc(COC(=O)NC)n1;1;1;0;;;;; +750;Pyridoxal 5-Phosphate;Cc1ncc(COP(O)(O)=O)c(C=O)c1O;0;1;0;;;;; +751;Pyridoxine;Cc1ncc(CO)c(CO)c1O;0;1;0;;;;; +752;Pyrimethamine;CCc1nc(N)nc(N)c1-c1ccc(Cl)cc1;1;1;0;;;;; +753;Quinacrine;CCN(CC)CCCC(C)Nc1c2ccc(Cl)cc2[nH]c2ccc(OC)cc12;1;1;1;;;;; +754;Quinapril;CCOC(=O)C(CCc1ccccc1)NC(C)C(=O)N1Cc2ccccc2CC1C(O)=O;1;0;0;;;;; +755;Quinestrol;CC12CCC3C(CCc4cc(OC5CCCC5)ccc34)C1CCC2(O)C#C;0;1;0;;;;; +756;Quinidine;COc1ccc2nccc(C(O)C3CC4CCN3CC4C=C)c2c1;1;1;0;;;;; +757;ragaglitazar;CCOC(Cc1ccc(OCCN2c3ccccc3Oc3ccccc23)cc1)C(O)=O;0;1;0;;;;; +758;Raltitrexed;CN(Cc1ccc2NC(C)=NC(=O)c2c1)c1ccc(s1)C(=O)NC(CCC(O)=O)C(O)=O;1;0;0;;;;; +759;Ramipril;CCOC(=O)C(CCc1ccccc1)NC(C)C(=O)N1C2CCCC2CC1C(O)=O;1;1;0;;;;; +760;Ranitidine;CNC(NCCSCc1ccc(CN(C)C)o1)=CN(=O)=O;1;1;1;;;;; +761;Rapamycin;COC1CC(CCC1O)CC(C)C1CC(=O)C(C)C=C(C)C(O)C(OC)C(=O)C(C)CC(C)C=CC=CC=C(C)C(CC2CCC(C)C(O)(O2)C(=O)C(=O)N2CCCCC2C(=O)O1)OC;1;1;0;;;;; +762;Rebamipide;OC(=O)C(CC1=CC(=O)Nc2ccccc12)NC(=O)c1ccc(Cl)cc1;0;1;0;;;;; +763;Reserpine;COC1C(CC2CN3CCc4c([nH]c5cc(OC)ccc45)C3CC2C1C(=O)OC)OC(=O)c1cc(OC)c(OC)c(OC)c1;0;1;0;;;;; +764;Retinoic acid;CC(C=CC1=C(C)CCCC1(C)C)=CC=CC(C)=CC(O)=O;1;1;0;;;;; +765;Ribavirin;NC(=O)c1ncn(n1)C1OC(CO)C(O)C1O;1;1;0;;;;; +766;Riboflavin;Cc1cc2N=C3C(=O)NC(=O)N=C3N(CC(O)C(O)C(O)CO)c2cc1C;1;0;0;;;;; +767;Rifabutin;COC1C=COC2(C)Oc3c(C)c(O)c4C(=O)C(NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C)=C1NC5(CCN(CC5)CC(C)C)N=C1c4c3C2=O;1;1;0;;;;; +768;Rifampicin;COC1C=COC2(C)OC3=C(C2=O)C2=C(O)C(=CNN4CCN(C)CC4)C(=NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C)C(O)=C2C(O)=C3C;1;1;1;;;;; +769;Rifamycin SV;COC1C=COC2(C)Oc3c(C)c(O)c4c(O)c(NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C)cc(O)c4c3C2=O;1;1;0;;;;; +770;Riluzole;Nc1nc2ccc(OC(F)(F)F)cc2s1;1;0;0;;;;; +771;rimonabant;Cc1c(nn(-c2ccc(Cl)cc2Cl)c1-c1ccc(Cl)cc1)C(=O)NN1CCCCC1;0;1;0;;;;; +772;Risperidone;CC1=C(CCN2CCC(CC2)c2noc3cc(F)ccc23)C(=O)N2CCCCC2=N1;1;0;0;;;;; +773;Ritodrine hydrochloride;CC(NCCc1ccc(O)cc1)C(O)c1ccc(O)cc1;0;0;1;;;;; +774;Ritonavir;CC(C)C(NC(=O)N(C)Cc1csc(n1)C(C)C)C(=O)NC(CC(O)C(Cc1ccccc1)NC(=O)OCc1cncs1)Cc1ccccc1;1;1;0;;;;; +775;Rofecoxib;CS(=O)(=O)c1ccc(cc1)C1=C(C(=O)OC1)c1ccccc1;1;1;0;;;;; +776;Rolitetracycline;CN(C)C1C2CC3C(C(=O)c4c(O)cccc4C3(C)O)=C(O)C2(O)C(=O)C(C(=O)NCN2CCCC2)=C1O;0;1;0;;;;; +777;Rose Bengal;OC(=O)c1c(Cl)c(Cl)c(Cl)c(Cl)c1C1=C2C=C(I)C(=O)C(I)=C2Oc2c(I)c(O)c(I)cc12;0;1;0;;;;; +778;Rosiglitazone;CN(CCOc1ccc(CC2SC(=O)NC2=O)cc1)c1ccccn1;1;1;0;;;;; +779;Rosuvastatin;CC(C)c1[nH]c(nc(-c2ccc(F)cc2)c1C=CC(O)CC(O)CC(O)=O)N(C)S(C)(=O)=O;0;1;0;;;;; +780;Roxithromycin;CCC1OC(=O)C(C)C(OC2CC(C)(OC)C(O)C(C)O2)C(C)C(OC2OC(C)CC(C2O)N(C)C)C(C)(O)CC(C)C(=NOCOCCOC)C(C)C(O)C1(C)O;1;1;0;;;;; +781;Rubitecan;CCC1(O)C(=O)OCC2=C1C=C1N(Cc3cc4c(cccc4nc13)N(=O)=O)C2=O;1;0;0;;;;; +782;Salbutamol;CC(C)(C)NCC(O)c1ccc(O)c(CO)c1;0;1;0;;;;; +783;Salicylamide;NC(=O)c1ccccc1O;1;1;0;;;;; +784;Salicylic acid;OC(=O)c1ccccc1O;0;1;0;;;;; +785;Saquinavir;CC(C)(C)NC(=O)C1CC2CCCCC2CN1CC(O)C(Cc1ccccc1)NC(=O)C(CC(N)=O)NC(=O)c1ccc2ccccc2n1;1;0;0;;;;; +786;Scillaren;CC1OC(OC2CCC3(C)C4CCC5(C)C(CCC5(O)C4CCC3=C2)C2=CC(=O)OC=C2)C(O)C(O)C1OC1OC(CO)C(O)C(O)C1O;0;1;0;;;;; +787;Selegiline;CC(Cc1ccccc1)N(C)CC#C;1;0;0;;;;; +788;Selenomethionine;C[Se]CCC(N)C(O)=O;0;1;1;;;;; +789;Semaxanib;Cc1cc(C)c(C=C2C(=O)Nc3ccccc23)[nH]1;1;1;0;;;;; +790;Seocalcitol;CCC(O)(CC)C=CC=CC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C;1;0;0;;;;; +791;Sertraline;CNC1CCC(c2ccc(Cl)c(Cl)c2)c2ccccc12;1;1;0;;;;; +792;Sevoflurane;FCOC(C(F)(F)F)C(F)(F)F;1;1;0;;;;; +793;Sibutramine;CC(C)CC(N(C)C)C1(CCC1)c1ccc(Cl)cc1;1;0;0;;;;; +794;Sildenafil;CCCc1nn(C)c2C(=O)NC(=Nc12)c1cc(ccc1OCC)S(=O)(=O)N1CCN(C)CC1;1;0;0;;;;; +795;silybin;COc1cc(ccc1O)C1Oc2cc(ccc2OC1CO)C1Oc2cc(O)cc(O)c2C(=O)C1O;1;1;0;;;;; +796;Silymarin;COc1cc(ccc1O)C1Oc2cc(ccc2OC1CO)C1Oc2cc(O)cc(O)c2C(=O)C1O;1;1;0;;;;; +797;Simvastatin;CCC(C)(C)C(=O)OC1CC(C)C=C2C=CC(C)C(CCC3CC(O)CC(=O)O3)C12;1;1;1;;;;; +798;Sitaxsentan;Cc1cc2OCOc2cc1CC(=O)c1sccc1S(=O)(=O)Nc1onc(C)c1Cl;1;0;0;;;;; +799;Sodium acetate;CC(O)=O;0;1;0;;;;; +800;Sodium benzoate;OC(=O)c1ccccc1;0;1;0;;;;; +801;Sodium bicarbonate;OC(O)=O;0;1;1;;;;; +802;SODIUM PHENYLBUTYRATE;OC(=O)CCCc1ccccc1;1;0;0;;;;; +803;Sodium propionate;CCC(O)=O;0;1;0;;;;; +804;Sorafenib tosylate;CNC(=O)c1cc(Oc2ccc(NC(=O)Nc3ccc(Cl)c(c3)C(F)(F)F)cc2)ccn1;1;0;0;;;;; +805;Sorbitol;O=C([C@H](O)[C@@H](O)[C@H](O)CO)CO;1;1;0;;;;; +806;Sotalol;CC(C)NCC(O)c1ccc(NS(C)(=O)=O)cc1;0;1;0;;;;; +807;SP 600125;O=C1c2ccccc2-c2n[nH]c3cccc1c23;1;1;0;;;;; +808;Sparfloxacin;CC1CN(CC(C)N1)c1c(F)c(N)c2C(=O)C(=CN(C3CC3)c2c1F)C(O)=O;1;0;0;;;;; +809;Spiramycin;COC1C(CC(=O)OC(C)CCCCCC(OC2CCC(C(C)O2)N(C)C)C(C)CC(CC=O)C1OC1OC(C)C(OC2CC(C)(O)C(O)C(O)O2)C(C1O)N(C)C)OC(C)=O;1;0;0;;;;; +810;Spironolactone;CC(=O)SC1CC2=CC(=O)CCC2(C)C2CCC3(C)C(CCC33CCC(=O)O3)C12;1;1;0;;;;; +811;Stanozolol;CC1(O)CCC2C3CCC4Cc5[nH]ncc5CC4(C)C3CCC12C;1;1;0;;;;; +812;Stavudine;CC1=CN(C2OC(CO)C=C2)C(=O)NC1=O;1;1;0;;;;; +813;Streptomycin;CNC1C(O)C(O)C(CO)OC1OC1C(OC(C)C1(O)C=O)OC1C(O)C(O)C(NC(N)=N)C(O)C1NC(N)=N;1;1;1;;;;; +814;Streptozotocin;CN(N=O)C(=O)NC1C(O)OC(CO)C(O)C1O;0;1;1;;;;; +815;SU6668;Cc1[nH]c(C=C2C(=O)Nc3ccccc23)c(C)c1CCC(O)=O;1;0;0;;;;; +816;Suberoylanilide hydroxamic acid;ONC(=O)CCCCCCC(=O)Nc1ccccc1;1;1;0;;;;; +817;Sucrose;OCC1OC(OC2(CO)OC(CO)C(O)C2O)C(O)C(O)C1O;0;1;1;;;;; +818;Sulbactam;CC1(C)C(N2C(CC2=O)S1(=O)=O)C(O)=O;1;0;0;;;;; +819;Sulfadiazine;Nc1ccc(cc1)S(=O)(=O)Nc1ncccn1;1;0;0;;;;; +820;Sulfadimethoxine;COc1cc(NS(=O)(=O)c2ccc(N)cc2)nc(OC)n1;1;0;0;;;;; +821;Sulfadoxine;COc1ncnc(NS(=O)(=O)c2ccc(N)cc2)c1OC;0;0;1;;;;; +822;Sulfamerazine;Cc1ccnc(NS(=O)(=O)c2ccc(N)cc2)n1;0;1;0;;;;; +823;Sulfameter;COc1cnc(NS(=O)(=O)c2ccc(N)cc2)nc1;1;0;0;;;;; +824;Sulfamethazine;Cc1cc(C)nc(NS(=O)(=O)c2ccc(N)cc2)n1;1;1;0;;;;; +825;Sulfamethizole;Cc1nnc(NS(=O)(=O)c2ccc(N)cc2)s1;1;0;0;;;;; +826;Sulfamethoxazole;Cc1cc(NS(=O)(=O)c2ccc(N)cc2)no1;1;0;0;;;;; +827;Sulfanilamide;Nc1ccc(cc1)S(N)(=O)=O;1;0;0;;;;; +828;Sulfaphenazole;Nc1ccc(cc1)S(=O)(=O)Nc1ccnn1-c1ccccc1;1;1;0;;;;; +829;Sulfapyridine;Nc1ccc(cc1)S(=O)(=O)Nc1ccccn1;0;1;0;;;;; +830;Sulfasalazine;OC(=O)c1cc(ccc1O)N=Nc1ccc(cc1)S(=O)(=O)Nc1ccccn1;1;1;0;;;;; +831;Sulfinpyrazone;O=C1C(CCS(=O)c2ccccc2)C(=O)N(N1c1ccccc1)c1ccccc1;1;0;0;;;;; +832;Sulindac;CC1=C(CC(O)=O)c2cc(F)ccc2C1=Cc1ccc(cc1)S(C)=O;1;1;0;;;;; +833;Sulindac sulfone;CC1=C(CC(O)=O)c2cc(F)ccc2C1=Cc1ccc(cc1)S(C)(=O)=O;1;0;0;;;;; +834;Suloctidil;CCCCCCCCNC(C)C(O)c1ccc(SC(C)C)cc1;1;0;0;;;;; +835;Sulpiride;CCN1CCCC1CNC(=O)c1cc(ccc1OC)S(N)(=O)=O;1;0;1;;;;; +836;Suprofen;CC(C(O)=O)c1ccc(cc1)C(=O)c1cccs1;1;0;0;;;;; +837;Suramin;Cc1ccc(cc1NC(=O)c1cccc(NC(=O)Nc2cccc(c2)C(=O)Nc2cc(ccc2C)C(=O)Nc2ccc(c3cc(cc(c23)S(O)(=O)=O)S(O)(=O)=O)S(O)(=O)=O)c1)C(=O)Nc1ccc(c2cc(cc(c12)S(O)(=O)=O)S(O)(=O)=O)S(O)(=O)=O;1;1;1;;;;; +838;Synephrine;CNCC(O)c1ccc(O)cc1;0;1;0;;;;; +839;Tacrine hydrochloride;Nc1c2ccccc2nc2ccccc12;0;1;0;;;;; +840;Tamoxifen;CCC(c1ccccc1)=C(c1ccccc1)c1ccc(OCCN(C)C)cc1;1;1;1;;;;; +841;Tannic acid;OC1C(COC(=O)c2cc(O)c(O)c(O)c2)OC(OC(=O)c2cc(O)c(O)c(O)c2)C(O)C1OC(=O)c1cc(O)c(O)c(O)c1;0;1;1;;;;; +842;Tegafur;FC1=CN(C2CCCO2)C(=O)NC1=O;1;0;0;;;;; +843;Telithromycin;CCC1OC(=O)C(C)C(=O)C(C)C(OC2OC(C)CC(C2O)N(C)C)C(C)(CC(C)C(=O)C(C)C2N(CCCCn3cnc(c3)-c3cccnc3)C(=O)OC12C)OC;1;1;0;;;;; +844;Telmisartan;CCCc1[nH]c2c(C)cc(cc2n1Cc1ccc(cc1)-c1ccccc1C(O)=O)-c1nc2ccccc2n1C;1;1;0;;;;; +845;Temazepam;CN1C(=O)C(O)N=C(c2ccccc2)c2cc(Cl)ccc12;0;1;0;;;;; +846;Temozolomide;CN1N=Nc2c(ncn2C1=O)C(N)=O;1;0;0;;;;; +847;Teniposide;COc1cc(cc(OC)c1O)C1C2C(COC2=O)C(OC2OC(C)C(OC(O)c3cccs3)C(O)C2O)c2cc3OCOc3cc12;0;1;0;;;;; +848;Tenofovir;CC(Cn1cnc2c(N)ncnc12)OCP(O)(O)=O;1;0;0;;;;; +849;Tenoxicam;CN1C(C(=O)Nc2ccccn2)=C(O)c2sccc2S1(=O)=O;1;0;0;;;;; +850;Terbinafine;CN(CC=CC#CC(C)(C)C)Cc1cccc2ccccc12;1;1;0;;;;; +851;Terbutaline;CC(C)(C)NCC(O)c1cc(O)cc(O)c1;0;1;1;;;;; +852;Terfenadine;CC(C)(C)c1ccc(cc1)C(O)CCCN1CCC(CC1)C(O)(c1ccccc1)c1ccccc1;1;0;0;;;;; +853;Terlipressin;NCCCCC(NC(=O)C1CCCN1C(=O)C1CSSCC(NC(=O)CNC(=O)CNC(=O)CN)C(=O)NC(Cc2ccc(O)cc2)C(=O)NC(Cc2ccccc2)C(=O)NC(CCC(N)=O)C(=O)NC(CC(N)=O)C(=O)N1)C(=O)NCC(N)=O;1;0;1;;;;; +854;Testosterone;CC12CCC3C(CCC4=CC(=O)CCC34C)C1CCC2O;1;1;1;;;;; +855;Testosterone enanthate;CCCCCCC(=O)OC1CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C;0;1;0;;;;; +856;Testosterone propionate;CCC(=O)OC1CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C;0;1;0;;;;; +857;Tetrabenazine;COc1cc2CCN3CC(CC(C)C)C(=O)CC3c2cc1OC;1;0;0;;;;; +858;Tetracaine;CCCCNc1ccc(cc1)C(=O)OCCN(C)C;0;1;0;;;;; +859;Tetrachloroethylene;Cl\C(Cl)=C(\Cl)Cl;1;1;0;;;;; +860;Tetracycline;CN(C)C1C2CC3C(C(=O)c4c(O)cccc4C3(C)O)=C(O)C2(O)C(=O)C(C(N)=O)=C1O;1;1;1;;;;; +861;Tetrandrine;COc1ccc2CC3N(C)CCc4cc(OC)c(OC)c(Oc5cc6C(Cc7ccc(Oc1c2)cc7)N(C)CCc6cc5OC)c34;1;1;0;;;;; +862;Tezosentan;COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(cn2)C(C)C)nc(nc1OCCO)-c1ccnc(c1)-c1nn[nH]n1;0;1;0;;;;; +863;Thalidomide;O=C1CCC(N2C(=O)c3ccccc3C2=O)C(=O)N1;1;1;0;;;;; +864;Theophylline;CN1C(=O)N(C)c2[nH]c[nH]c2C1=O;1;1;1;;;;; +865;Thiabendazole;c1ccc2[nH]c(nc2c1)-c1cscn1;1;1;1;;;;; +866;Thiamine;Cc1ncc(C[n+]2csc(CCO)c2C)c(N)n1;1;1;0;;;;; +867;Thiamphenicol;CS(=O)(=O)c1ccc(cc1)C(O)C(CO)NC(=O)C(Cl)Cl;1;1;0;;;;; +868;Thiocoraline;CSCC1N(C)C(=O)C2CSSCC(N(C)C(=O)CNC(=O)C(CSC1=O)NC(=O)c1nc3ccccc3cc1O)C(=O)N(C)C(CSC)C(=O)SCC(NC(=O)c1nc3ccccc3cc1O)C(=O)NCC(=O)N2C;1;0;0;;;;; +869;Thioguanine;NC1=Nc2nc[nH]c2C(=S)N1;1;1;0;;;;; +870;Thioridazine;CSc1ccc2Sc3ccccc3N(CCC3CCCCN3C)c2c1;1;1;0;;;;; +871;Thyroxine;NC(Cc1cc(I)c(Oc2cc(I)c(O)c(I)c2)c(I)c1)C(O)=O;1;1;1;;;;; +872;Tiadenol;OCCSCCCCCCCCCCSCCO;0;1;0;;;;; +873;Tiaprofenic acid;CC(C(O)=O)c1ccc(s1)C(=O)c1ccccc1;0;1;0;;;;; +874;Tiazofurin;NC(=O)c1csc(n1)C1OC(CO)C(O)C1O;0;1;0;;;;; +875;Ticlopidine;Clc1ccccc1CN1CCc2sccc2C1;1;1;0;;;;; +876;Ticrynafen;OC(=O)COc1ccc(C(=O)c2cccs2)c(Cl)c1Cl;1;1;0;;;;; +877;Timolol;CC(C)(C)NCC(O)COc1nsnc1N1CCOCC1;1;0;0;;;;; +878;Tiopronin;CC(S)C(=O)NCC(O)=O;1;1;0;;;;; +879;Tirapazamine;Nc1n[n+](O)c2ccccc2[n+]1O;0;1;0;;;;; +880;Tizanidine;Clc1ccc2nsnc2c1NC1=NCCN1;1;0;0;;;;; +881;TNP-470;COC1C(CCC2(CO2)C1C1(C)OC1C\C=C(\C)C)OC(=O)NC(=O)CCl;0;1;1;;;;; +882;Tobramycin;NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)CC1O;0;1;0;;;;; +883;Tocopherol acetate;CC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(OC(C)=O)c(C)c(C)c2O1;0;1;0;;;;; +884;Tolazamide;Cc1ccc(cc1)S(=O)(=O)NC(=O)NN1CCCCCC1;1;1;0;;;;; +885;Tolbutamide;CCCCNC(=O)NS(=O)(=O)c1ccc(C)cc1;1;1;0;;;;; +886;Tolcapone;Cc1ccc(cc1)C(=O)c1cc(O)c(O)c(c1)N(=O)=O;1;1;0;;;;; +887;Tolperisone;CC(CN1CCCCC1)C(=O)c1ccc(C)cc1;1;0;0;;;;; +888;Tolterodine;CC(C)N(CCC(c1ccccc1)c1cc(C)ccc1O)C(C)C;1;0;0;;;;; +889;Topiramate;CC1(C)OC2COC3(COS(N)(=O)=O)OC(C)(C)OC3C2O1;1;0;0;;;;; +890;Toremifene;CN(C)CCOc1ccc(cc1)C(c1ccccc1)=C(CCCl)c1ccccc1;1;1;0;;;;; +891;Tramadol;COc1cccc(c1)C1(O)CCCCC1CN(C)C;1;1;0;;;;; +892;Trandolapril;CCOC(=O)C(CCc1ccccc1)NC(C)C(=O)N1C2CCCCC2CC1C(O)=O;1;0;0;;;;; +893;Tranexamic acid;NCC1CCC(CC1)C(O)=O;1;0;0;;;;; +894;Tranilast;COc1ccc(C=CC(=O)Nc2ccccc2C(O)=O)cc1OC;0;1;0;;;;; +895;Tranylcypromine;NC1CC1c1ccccc1;1;1;1;;;;; +896;Trazodone;Clc1cccc(c1)N1CCN(CCCN2N=C3C=CC=CN3C2=O)CC1;1;0;0;;;;; +897;Triac;OC(=O)Cc1cc(I)c(Oc2ccc(O)c(I)c2)c(I)c1;0;1;0;;;;; +898;Triamcinolone;CC12CC(O)C3(F)C(CCC4=CC(=O)C=CC34C)C1CC(O)C2(O)C(=O)CO;0;1;0;;;;; +899;Triamcinolone acetonide;CC1(C)OC2CC3C4CCC5=CC(=O)C=CC5(C)C4(F)C(O)CC3(C)C2(O1)C(=O)CO;0;1;0;;;;; +900;Trichlorfon;COP(=O)(OC)C(O)C(Cl)(Cl)Cl;0;1;0;;;;; +901;Trichloroacetic acid;OC(=O)C(Cl)(Cl)Cl;0;1;0;;;;; +902;Trichloroethylene;Cl\C=C(\Cl)Cl;1;1;0;;;;; +903;Triclosan;Oc1cc(Cl)ccc1Oc1ccc(Cl)cc1Cl;0;1;0;;;;; +904;Triflupromazine;CN(C)CCCN1c2ccccc2Sc2ccc(cc12)C(F)(F)F;0;1;0;;;;; +905;Triiodothyronine;NC(Cc1cc(I)c(Oc2ccc(O)c(I)c2)c(I)c1)C(O)=O;1;1;0;;;;; +906;Trimetazidine;COc1ccc(CN2CCNCC2)c(OC)c1OC;1;1;0;;;;; +907;Trimethadione;CN1C(=O)OC(C)(C)C1=O;1;1;0;;;;; +908;Trimethaphan camsylate;O=C1N(Cc2ccccc2)C2C[S]3CCCC3C2N1Cc1ccccc1;0;0;1;;;;; +909;Trimethoprim;COc1cc(Cc2cnc(N)nc2N)cc(OC)c1OC;1;1;0;;;;; +910;Troglitazone;Cc1c(C)c2OC(C)(CCc2c(C)c1O)COc1ccc(CC2SC(=O)NC2=O)cc1;1;1;1;;;;; +911;Troleandomycin;COC1CC(OC(C)C1OC(C)=O)OC1C(C)C(OC2OC(C)CC(C2OC(C)=O)N(C)C)C(C)CC2(CO2)C(=O)C(C)C(OC(C)=O)C(C)C(C)OC(=O)C1C;1;1;1;;;;; +912;Trypan Blue;Cc1cc(ccc1N=Nc1c(O)c2c(N)cc(cc2cc1S(O)(=O)=O)S(O)(=O)=O)-c1ccc(N=Nc2c(O)c3c(N)cc(cc3cc2S(O)(=O)=O)S(O)(=O)=O)c(C)c1;0;1;0;;;;; +913;Tryptophan;NC(Cc1c[nH]c2ccccc12)C(O)=O;0;1;0;;;;; +914;Tyloxapol;CC(C)(C)CC(C)(C)c1ccc(O)cc1;0;1;0;;;;; +915;Uracil;O=C1NC=CC(=O)N1;1;1;0;;;;; +916;Urea;NC(N)=O;0;1;0;;;;; +917;Uridine;OCC1OC(C(O)C1O)N1C=CC(=O)NC1=O;1;1;0;;;;; +918;Ursodiol;O=C(O)CC[C@H]([C@H]1CC[C@@H]2[C@]1(C)CC[C@H]4[C@H]2[C@@H](O)C[C@@H]3C[C@H](O)CC[C@@]34C)C;1;1;1;;;;; +919;Valproic acid;CCCC(CCC)C(O)=O;1;1;0;;;;; +920;Valsartan;CCCCC(=O)N(Cc1ccc(cc1)-c1ccccc1-c1nn[nH]n1)C(C(C)C)C(O)=O;1;1;0;;;;; +921;Valspodar;CC=CCC(C)C(=O)C1N(C)C(=O)C(C(C)C)N(C)C(=O)C(CC(C)C)N(C)C(=O)C(CC(C)C)N(C)C(=O)C(C)NC(=O)C(C)NC(=O)C(CC(C)C)N(C)C(=O)C(NC(=O)C(CC(C)C)N(C)C(=O)CN(C)C(=O)C(NC1=O)C(C)C)C(C)C;1;1;0;;;;; +922;Vancomycin;CNC(CC(C)C)C(=O)NC1C(O)c2ccc(Oc3cc4cc(Oc5ccc(cc5Cl)C(O)C5NC(=O)C(NC(=O)C4NC(=O)C(CC(N)=O)NC1=O)c1ccc(O)c(c1)-c1c(O)cc(O)cc1C(NC5=O)C(O)=O)c3OC1OC(CO)C(O)C(O)C1OC1CC(C)(N)C(O)C(C)O1)c(Cl)c2;1;1;0;;;;; +923;vandetanib;COc1cc2c(Nc3ccc(Br)cc3F)ncnc2cc1OCC1CCN(C)CC1;1;0;0;;;;; +924;Venlafaxine;COc1ccc(cc1)C(CN(C)C)C1(O)CCCCC1;1;0;0;;;;; +925;Verapamil;COc1ccc(CCN(C)CCCC(C#N)(C(C)C)c2ccc(OC)c(OC)c2)cc1OC;1;1;1;;;;; +926;Vesnarinone;COc1ccc(cc1OC)C(=O)N1CCN(CC1)c1ccc2NC(=O)CCc2c1;1;1;0;;;;; +927;Vidarabine;n2c1c(ncnc1n(c2)[C@@H]3O[C@@H]([C@@H](O)[C@@H]3O)CO)N;1;1;0;;;;; +928;Vigabatrin;NC(CCC(O)=O)C=C;0;1;0;;;;; +929;Vinblastine;CCC1(O)CC2CN(CCc3c([nH]c4ccccc34)C(C2)(C(=O)OC)c2cc3c(cc2OC)N(C)C2C(O)(C(OC(C)=O)C4(CC)C=CCN5CCC32C45)C(=O)OC)C1;1;1;0;;;;; +930;Vincristine;CCC1(O)CC2CN(CCc3c([nH]c4ccccc34)C(C2)(C(=O)OC)c2cc3c(cc2OC)N(C=O)C2C(O)(C(OC(C)=O)C4(CC)C=CCN5CCC32C45)C(=O)OC)C1;1;1;1;;;;; +931;vinflunine;CCC12C=CCN3CCC4(C13)C(N(C)c1cc(OC)c(cc41)C1(CC3CC(CN(C3)Cc3c1[nH]c1ccccc31)C(C)(F)F)C(=O)OC)C(O)(C2OC(C)=O)C(=O)OC;0;1;0;;;;; +932;Vinorelbine;CCC1=CC2CN(C1)Cc1c([nH]c3ccccc13)C(C2)(C(=O)OC)c1cc2c(cc1OC)N(C)C1C(O)(C(OC(C)=O)C3(CC)C=CCN4CCC21C34)C(=O)OC;1;1;0;;;;; +933;Vitamin A;CC(C=CC=C(C)C=CC1=C(C)CCCC1(C)C)=CCO;1;1;1;;;;; +934;Vitamin B12;CC(CNC(=O)CCC1(C)C(CC(N)=O)C2=NC1=C(C)C1=NC(=CC3=NC(=C(C)C4=NC2(C)C(C)(CC(N)=O)C4CCC(N)=O)C(C)(CC(N)=O)C3CCC(N)=O)C(C)(C)C1CCC(N)=O)OP(O)(=O)OC1C(CO)OC(C1O)n1cnc2cc(C)c(C)cc12;1;0;0;;;;; +935;Vitamin B6;Cc1ncc(CO)c(CO)c1O;1;1;0;;;;; +936;Vitamin D3;CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CCC1=C;0;1;0;;;;; +937;Vitamin E;CC(C)CCCC(C)CCCC(C)CCCC1(C)CCc2c(C)c(O)c(C)c(C)c2O1;1;1;1;;;;; +938;Vitamin K;CC(C)CCCC(C)CCCC(C)CCCC(C)=CCC1=C(C)C(=O)c2ccccc2C1=O;1;1;0;;;;; +939;Voglibose;OCC(CO)NC1CC(O)(CO)C(O)C(O)C1O;1;1;0;;;;; +940;Voriconazole;CC(c1ncncc1F)C(O)(Cn1cncn1)c1ccc(F)cc1F;1;0;0;;;;; +941;VX-950;CCCC(NC(=O)C1C2CCCC2CN1C(=O)C(NC(=O)C(NC(=O)c1cnccn1)C1CCCCC1)C(C)(C)C)C(=O)C(=O)NC1CC1;1;0;0;;;;; +942;Warfarin;CC(=O)CC(c1ccccc1)C1=C(O)Oc2ccccc2C1=O;1;1;0;;;;; +943;Ximelagatran;CCOC(=O)CNC(C1CCCCC1)C(=O)N1CCC1C(=O)NCc1ccc(cc1)C(N)=NO;1;0;0;;;;; +944;Xipamide;Cc1cccc(C)c1NC(=O)c1cc(c(Cl)cc1O)S(N)(=O)=O;0;1;0;;;;; +945;Yohimbine;COC(=O)C1C(O)CCC2CN3CCc4c([nH]c5ccccc45)C3CC12;0;1;0;;;;; +946;Zafirlukast;COc1cc(ccc1Cc1cn(C)c2ccc(NC(=O)OC3CCCC3)cc12)C(=O)NS(=O)(=O)c1ccccc1C;1;0;0;;;;; +947;Zalcitabine;NC1=NC(=O)N(C=C1)C1CCC(CO)O1;1;1;0;;;;; +948;Zidovudine;CC1=CN(C2CC(NN=N)C(CO)O2)C(=O)NC1=O;1;1;0;;;;; +949;Zileuton;CC(N(O)C(N)=O)c1cc2ccccc2s1;1;1;0;;;;; +950;Zinc acetate;CC(O)=O;0;1;0;;;;; +951;Zolpidem;CN(C)C(=O)Cc1c(nc2ccc(C)cn12)-c1ccc(C)cc1;1;0;0;;;;; +952;zirconium;CCO[Zr](OCC)(OCC)OCC;0;0;0CC1=C(C2=CC3=NC(= +953;hemoglobin;CC4=C(C(=C([N-]4)C=C5C(=C(C(=N5)C=C1N2)C=C)C)C)CCC(=O)[O-])C(=C3C)CCC(=O)O)C=C.[Fe+2];0;0;0 +954;test_salt;[Al].N.[Ba].[Bi].Br.[Ca].Cl.F.I.[K].[Li].[Mg].[Na].[Ag].[Sr].S.O.[Zn];0;0;0 +955;no_smiles_test;;0;0;0 +956;covalent_metal;CCC(=O)O[Na];0;0;0 +957;test_charge_recombination; CC([O-])=[N+](C)C; 0;0;0 +958;Chloroquine; CCN(CC)CCCC(C)NC1=C2C=CC(=CC2=NC=C1)Cl;0;0;0 +959;Water;O;0;0;0 +960;1,4-Dioxane;c1ccccc1O.O1CCOCC1;0;0;0 \ No newline at end of file diff --git a/docs/tutorials/standardization.ipynb b/docs/tutorials/standardization.ipynb index d94af4fb..59e4ae8a 100644 --- a/docs/tutorials/standardization.ipynb +++ b/docs/tutorials/standardization.ipynb @@ -22,7 +22,7 @@ "\n", "We are following the recommended standardization steps of [\"Trust, But Verify\" (Fourches et al., 2010)](https://pubmed.ncbi.nlm.nih.gov/20572635/), and using a modified¹ version of the dataset from the following paper: [Cheminformatics Analysis of Assertions Mined from Literature That Describe Drug-Induced Liver Injury in Different Species](https://pubs.acs.org/doi/10.1021/tx900326k).\n", "\n", - "¹ We trim the dataset at 200 entries and added some entries to trigger curation steps not covered by the original data." + "¹ We added some entries to trigger curation steps not covered by the original data." ] }, { @@ -187,7 +187,7 @@ " 0\n", " 1\n", " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", " 0\n", " 0\n", " 0\n", @@ -241,7 +241,7 @@ "4 5 2,4,6-Trinitrotoluene \n", "\n", " SMILES Filtered_at Cleaned_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 0 \n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 0 \n", "1 CC1(O)CCC2C3CCC4=CC(=O)CCC4(C)C3CCC12C 0 0 \n", "2 CC(C)CCCC(C)C1CCC2C(CCCC12C)=CC=C1CC(O)CC(O)C1=C 0 0 \n", "3 OC(=O)C(S)C(S)C(O)=O 0 0 \n", @@ -264,7 +264,7 @@ "task_number = 0\n", "\n", "# Import test-dataset\n", - "dataset = pd.read_csv(HERE / \"data\" / \"standardization_test_data.csv\")\n", + "dataset = pd.read_csv(HERE / \"data\" / \"standardization_test_data.csv\", delimiter=\";\")\n", "\n", "# Filter columns\n", "dataset = dataset[[\"IDs\", \"Names\", \"SMILEs\"]]\n", @@ -386,241 +386,241 @@ " \n", " \n", " \n", - " 0\n", - " 1\n", - " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " 943\n", + " 944\n", + " Xipamide\n", + " Cc1cccc(C)c1NC(=O)c1cc(S(N)(=O)=O)c(Cl)cc1O\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 1\n", - " 2\n", - " 17-Methyltestosterone\n", - " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " 944\n", + " 945\n", + " Yohimbine\n", + " COC(=O)C1C(O)CCC2CN3CCc4c([nH]c5ccccc45)C3CC21\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 2\n", - " 3\n", - " 1-alpha-Hydroxycholecalciferol\n", - " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " 945\n", + " 946\n", + " Zafirlukast\n", + " COc1cc(C(=O)NS(=O)(=O)c2ccccc2C)ccc1Cc1cn(C)c2...\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 3\n", - " 4\n", - " 2,3-Dimercaptosuccinic acid\n", - " O=C(O)C(S)C(S)C(=O)O\n", + " 946\n", + " 947\n", + " Zalcitabine\n", + " Nc1ccn(C2CCC(CO)O2)c(=O)n1\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 4\n", - " 5\n", - " 2,4,6-Trinitrotoluene\n", - " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " 947\n", + " 948\n", + " Zidovudine\n", + " Cc1cn(C2CC(NN=N)C(CO)O2)c(=O)[nH]c1=O\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 5\n", - " 6\n", - " 2-Deoxy-D-glucose\n", - " C1COCCO1.OCC1OC(O)CC(O)C1O\n", + " 948\n", + " 949\n", + " Zileuton\n", + " CC(c1cc2ccccc2s1)N(O)C(N)=O\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 6\n", - " 7\n", - " 2'-fluoro-5-methylarabinosyluracil\n", - " Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O\n", + " 949\n", + " 950\n", + " Zinc acetate\n", + " CC(=O)O\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 7\n", - " 8\n", - " 2-Methoxyestradiol\n", - " COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12\n", + " 950\n", + " 951\n", + " Zolpidem\n", + " Cc1ccc(-c2nc3ccc(C)cn3c2CC(=O)N(C)C)cc1\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 8\n", - " 9\n", - " 4-aminobenzoic acid\n", - " Nc1ccc(C(=O)O)cc1\n", + " 951\n", + " 952\n", + " zirconium\n", + " CCO[Zr](OCC)(OCC)OCC\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 9\n", - " 10\n", - " 4-Hydroxytamoxifen\n", - " CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1\n", + " 952\n", + " 953\n", + " hemoglobin\n", + " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 10\n", - " 11\n", - " 5 fluorouracil\n", - " O=c1[nH]cc(F)c(=O)[nH]1\n", + " 953\n", + " 954\n", + " test_salt\n", + " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 11\n", - " 12\n", - " 5-Azacitidine\n", - " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", + " 954\n", + " 956\n", + " covalent_metal\n", + " CCC(=O)O[Na]\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 12\n", - " 13\n", - " 5-Bromouracil\n", - " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br\n", + " 955\n", + " 957\n", + " test_charge_recombination\n", + " CC([O-])=[N+](C)C\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 13\n", - " 14\n", - " 5-fluoro-2'-deoxyuridine\n", - " O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F\n", + " 956\n", + " 958\n", + " Chloroquine\n", + " CCN(CC)CCCC(C)Nc1ccnc2cc(Cl)ccc12\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 14\n", - " 15\n", - " 6-Mercaptopurine\n", - " Sc1ncnc2[nH]c[nH]c12\n", - " 1\n", + " 957\n", + " 959\n", + " Water\n", + " O\n", " 0\n", " 0\n", - " None\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", - " 15\n", - " 16\n", - " Acadesine\n", - " NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N\n", + " 958\n", + " 960\n", + " 1,4-Dioxane\n", + " C1COCCO1.Oc1ccccc1\n", " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " IDs Names \\\n", - "0 1 (R)-Roscovitine \n", - "1 2 17-Methyltestosterone \n", - "2 3 1-alpha-Hydroxycholecalciferol \n", - "3 4 2,3-Dimercaptosuccinic acid \n", - "4 5 2,4,6-Trinitrotoluene \n", - "5 6 2-Deoxy-D-glucose \n", - "6 7 2'-fluoro-5-methylarabinosyluracil \n", - "7 8 2-Methoxyestradiol \n", - "8 9 4-aminobenzoic acid \n", - "9 10 4-Hydroxytamoxifen \n", - "10 11 5 fluorouracil \n", - "11 12 5-Azacitidine \n", - "12 13 5-Bromouracil \n", - "13 14 5-fluoro-2'-deoxyuridine \n", - "14 15 6-Mercaptopurine \n", - "15 16 Acadesine \n", + " IDs Names \\\n", + "943 944 Xipamide \n", + "944 945 Yohimbine \n", + "945 946 Zafirlukast \n", + "946 947 Zalcitabine \n", + "947 948 Zidovudine \n", + "948 949 Zileuton \n", + "949 950 Zinc acetate \n", + "950 951 Zolpidem \n", + "951 952 zirconium \n", + "952 953 hemoglobin \n", + "953 954 test_salt \n", + "954 956 covalent_metal \n", + "955 957 test_charge_recombination \n", + "956 958 Chloroquine \n", + "957 959 Water \n", + "958 960 1,4-Dioxane \n", "\n", - " SMILES Filtered_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 0 \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 \n", - "3 O=C(O)C(S)C(S)C(=O)O 0 \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 \n", - "5 C1COCCO1.OCC1OC(O)CC(O)C1O 0 \n", - "6 Cc1cn(C2OC(CO)C(O)C2F)c(=O)[nH]c1=O 0 \n", - "7 COc1cc2c(cc1O)CCC1C2CCC2(C)C(O)CCC12 0 \n", - "8 Nc1ccc(C(=O)O)cc1 0 \n", - "9 CCC(=C(c1ccc(O)cc1)c1ccc(OCCN(C)C)cc1)c1ccccc1 0 \n", - "10 O=c1[nH]cc(F)c(=O)[nH]1 0 \n", - "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 0 \n", - "12 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1Br 0 \n", - "13 O=c1[nH]c(=O)n(C2CC(O)C(CO)O2)cc1F 0 \n", - "14 Sc1ncnc2[nH]c[nH]c12 1 \n", - "15 NC(=O)c1ncn(C2OC(CO)C(O)C2O)c1N 0 \n", - "\n", - " Cleaned_at Normalized_at \\\n", - "0 0 0 \n", - "1 0 0 \n", - "2 0 0 \n", - "3 0 0 \n", - "4 0 0 \n", - "5 0 0 \n", - "6 0 0 \n", - "7 0 0 \n", - "8 0 0 \n", - "9 0 0 \n", - "10 0 0 \n", - "11 0 0 \n", - "12 0 0 \n", - "13 0 0 \n", - "14 0 0 \n", - "15 0 0 \n", - "\n", - " mol \n", - "0 \n", " \n", " \n", - " 202\n", - " 203\n", + " 953\n", + " 954\n", " test_salt\n", " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", " 2\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " False\n", " \n", " \n", - " 203\n", - " 204\n", - " test_duplicate\n", - " Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[...\n", + " 957\n", + " 959\n", + " Water\n", + " O\n", " 2\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " False\n", " \n", " \n", @@ -772,17 +772,17 @@ "" ], "text/plain": [ - " IDs Names SMILES \\\n", - "202 203 test_salt Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", - "203 204 test_duplicate Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", + " IDs Names SMILES \\\n", + "953 954 test_salt Br.Cl.F.I.N.O.S.[Ag].[Al].[Ba].[Bi].[Ca].[K].[... \n", + "957 959 Water O \n", "\n", " Filtered_at Cleaned_at Normalized_at \\\n", - "202 2 0 0 \n", - "203 2 0 0 \n", + "953 2 0 0 \n", + "957 2 0 0 \n", "\n", " mol Carbon_present \n", - "202 \n", " \n", " \n", - " 0\n", - " 1\n", - " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", + " 114\n", + " 115\n", + " Bortezomib\n", + " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " True\n", " \n", " \n", - " 114\n", - " 115\n", - " Bortezomib\n", - " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", + " 407\n", + " 408\n", + " Gold Sodium Thiomalate\n", + " O=C(O)CC(S[Au])C(=O)O\n", + " 3\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " True\n", + " \n", + " \n", + " 533\n", + " 534\n", + " Mersalyl\n", + " COC(CNC(=O)c1ccccc1OCC(=O)O)C[Hg]O\n", " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " True\n", " \n", " \n", - " 200\n", - " 201\n", + " 951\n", + " 952\n", " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " True\n", " \n", " \n", - " 201\n", - " 202\n", + " 952\n", + " 953\n", " hemoglobin\n", " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " True\n", " \n", " \n", - " 204\n", - " 206\n", + " 954\n", + " 956\n", " covalent_metal\n", " CCC(=O)O[Na]\n", " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " True\n", " \n", @@ -949,33 +961,45 @@ "" ], "text/plain": [ - " IDs Names SMILES \\\n", - "0 1 (R)-Roscovitine CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] \n", - "114 115 Bortezomib CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O \n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC \n", - "201 202 hemoglobin C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... \n", - "204 206 covalent_metal CCC(=O)O[Na] \n", + " IDs Names \\\n", + "114 115 Bortezomib \n", + "407 408 Gold Sodium Thiomalate \n", + "533 534 Mersalyl \n", + "951 952 zirconium \n", + "952 953 hemoglobin \n", + "954 956 covalent_metal \n", "\n", - " Filtered_at Cleaned_at Normalized_at \\\n", - "0 3 0 0 \n", - "114 3 0 0 \n", - "200 3 0 0 \n", - "201 3 0 0 \n", - "204 3 0 0 \n", + " SMILES Filtered_at \\\n", + "114 CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O 3 \n", + "407 O=C(O)CC(S[Au])C(=O)O 3 \n", + "533 COC(CNC(=O)c1ccccc1OCC(=O)O)C[Hg]O 3 \n", + "951 CCO[Zr](OCC)(OCC)OCC 3 \n", + "952 C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... 3 \n", + "954 CCC(=O)O[Na] 3 \n", + "\n", + " Cleaned_at Normalized_at \\\n", + "114 0 0 \n", + "407 0 0 \n", + "533 0 0 \n", + "951 0 0 \n", + "952 0 0 \n", + "954 0 0 \n", "\n", " mol Carbon_present \\\n", - "0 \n", " \n", " \n", - " 5\n", - " 6\n", - " 2-Deoxy-D-glucose\n", - " C1COCCO1.OCC1OC(O)CC(O)C1O\n", + " 958\n", + " 960\n", + " 1,4-Dioxane\n", + " C1COCCO1.Oc1ccccc1\n", " 4\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " False\n", " True\n", @@ -1079,17 +1103,14 @@ "" ], "text/plain": [ - " IDs Names SMILES Filtered_at \\\n", - "5 6 2-Deoxy-D-glucose C1COCCO1.OCC1OC(O)CC(O)C1O 4 \n", + " IDs Names SMILES Filtered_at Cleaned_at \\\n", + "958 960 1,4-Dioxane C1COCCO1.Oc1ccccc1 4 0 \n", "\n", - " Cleaned_at Normalized_at \\\n", - "5 0 0 \n", - "\n", - " mol Carbon_present \\\n", - "5 \n", " \n", " \n", - " 200\n", - " 201\n", + " 407\n", + " 408\n", + " Gold Sodium Thiomalate\n", + " O=C(O)CC(S[Au])C(=O)O\n", + " 3\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 533\n", + " 534\n", + " Mersalyl\n", + " COC(CNC(=O)c1ccccc1OCC(=O)O)C[Hg]O\n", + " 3\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 951\n", + " 952\n", " zirconium\n", " CCO[Zr](OCC)(OCC)OCC\n", " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " True\n", " None\n", " True\n", " \n", " \n", - " 204\n", - " 206\n", + " 954\n", + " 956\n", " covalent_metal\n", " CCC(=O)O[Na]\n", " 3\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " True\n", " None\n", @@ -1327,17 +1376,29 @@ "" ], "text/plain": [ - " IDs Names SMILES Filtered_at Cleaned_at \\\n", - "200 201 zirconium CCO[Zr](OCC)(OCC)OCC 3 0 \n", - "204 206 covalent_metal CCC(=O)O[Na] 3 0 \n", + " IDs Names SMILES \\\n", + "407 408 Gold Sodium Thiomalate O=C(O)CC(S[Au])C(=O)O \n", + "533 534 Mersalyl COC(CNC(=O)c1ccccc1OCC(=O)O)C[Hg]O \n", + "951 952 zirconium CCO[Zr](OCC)(OCC)OCC \n", + "954 956 covalent_metal CCC(=O)O[Na] \n", "\n", - " Normalized_at mol \\\n", - "200 0 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA53...\n", " True\n", " False\n", " False\n", @@ -1476,247 +1537,378 @@ " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", " True\n", " False\n", " False\n", " False\n", " True\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " IDs Names SMILES Filtered_at Cleaned_at \\\n", - "22 23 Acetic acid CC(=O)O 6 0 \n", - "199 200 Citric acid O=C(O)CC(O)(CC(=O)O)C(=O)O 6 0 \n", - "\n", - " Normalized_at mol \\\n", - "22 0 \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", - " \n", - "
IDsNamesSMILESFiltered_atCleaned_atNormalized_atmolCarbon_presentInorganicsmixturemetalssalts
01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]3275276Dimethyl sulfoxideCS(C)=O600<rdkit.Chem.rdchem.Mol object at 0x0000027338C...<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrueNoneNoneNone
1217-MethyltestosteroneCC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O0335336EthanolCCO600<rdkit.Chem.rdchem.Mol object at 0x0000027338C...<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseFalseTrue
231-alpha-HydroxycholecalciferolC=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O356357Ferrous citrateO=C(O)CC(O)(CC(=O)O)C(=O)O600<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
400401Glutamic acidNC(CCC(=O)O)C(=O)O600<rdkit.Chem.rdchem.Mol object at 0x0000027338C...<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
405406GlycerolOCC(O)CO600<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
342,3-Dimercaptosuccinic acidO=C(O)C(S)C(S)C(=O)O481482Lactic acidCC(O)C(=O)O600<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
605606NiacinO=C(O)c1cccnc1600<rdkit.Chem.rdchem.Mol object at 0x0000027338C...<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
613614Nicotinic acidO=C(O)c1cccnc1600<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
452,4,6-TrinitrotolueneCc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]630631N-methylglucamineCNCC(O)C(O)C(O)C(O)CO600<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
696697phenylacetateO=C(O)Cc1ccccc1600<rdkit.Chem.rdchem.Mol object at 0x0000027338C...<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
709710PiperazineC1CNCCN1600<rdkit.Chem.rdchem.Mol object at 0x0000016DA54...TrueFalseFalseFalseTrue
\n", - "" + " \n", + " 783\n", + " 784\n", + " Salicylic acid\n", + " O=C(O)c1ccccc1O\n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 798\n", + " 799\n", + " Sodium acetate\n", + " CC(=O)O\n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 799\n", + " 800\n", + " Sodium benzoate\n", + " O=C(O)c1ccccc1\n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 800\n", + " 801\n", + " Sodium bicarbonate\n", + " O=C(O)O\n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 802\n", + " 803\n", + " Sodium propionate\n", + " CCC(=O)O\n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 949\n", + " 950\n", + " Zinc acetate\n", + " CC(=O)O\n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + "\n", + "" ], "text/plain": [ - " IDs Names \\\n", - "0 1 (R)-Roscovitine \n", - "1 2 17-Methyltestosterone \n", - "2 3 1-alpha-Hydroxycholecalciferol \n", - "3 4 2,3-Dimercaptosuccinic acid \n", - "4 5 2,4,6-Trinitrotoluene \n", + " IDs Names SMILES Filtered_at \\\n", + "22 23 Acetic acid CC(=O)O 6 \n", + "199 200 Citric acid O=C(O)CC(O)(CC(=O)O)C(=O)O 6 \n", + "275 276 Dimethyl sulfoxide CS(C)=O 6 \n", + "335 336 Ethanol CCO 6 \n", + "356 357 Ferrous citrate O=C(O)CC(O)(CC(=O)O)C(=O)O 6 \n", + "400 401 Glutamic acid NC(CCC(=O)O)C(=O)O 6 \n", + "405 406 Glycerol OCC(O)CO 6 \n", + "481 482 Lactic acid CC(O)C(=O)O 6 \n", + "605 606 Niacin O=C(O)c1cccnc1 6 \n", + "613 614 Nicotinic acid O=C(O)c1cccnc1 6 \n", + "630 631 N-methylglucamine CNCC(O)C(O)C(O)C(O)CO 6 \n", + "696 697 phenylacetate O=C(O)Cc1ccccc1 6 \n", + "709 710 Piperazine C1CNCCN1 6 \n", + "783 784 Salicylic acid O=C(O)c1ccccc1O 6 \n", + "798 799 Sodium acetate CC(=O)O 6 \n", + "799 800 Sodium benzoate O=C(O)c1ccccc1 6 \n", + "800 801 Sodium bicarbonate O=C(O)O 6 \n", + "802 803 Sodium propionate CCC(=O)O 6 \n", + "949 950 Zinc acetate CC(=O)O 6 \n", "\n", - " SMILES Filtered_at Cleaned_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 0 \n", - "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 0 \n", - "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 0 \n", - "3 O=C(O)C(S)C(S)C(=O)O 0 0 \n", - "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 0 \n", + " Cleaned_at Normalized_at \\\n", + "22 0 0 \n", + "199 0 0 \n", + "275 0 0 \n", + "335 0 0 \n", + "356 0 0 \n", + "400 0 0 \n", + "405 0 0 \n", + "481 0 0 \n", + "605 0 0 \n", + "613 0 0 \n", + "630 0 0 \n", + "696 0 0 \n", + "709 0 0 \n", + "783 0 0 \n", + "798 0 0 \n", + "799 0 0 \n", + "800 0 0 \n", + "802 0 0 \n", + "949 0 0 \n", "\n", - " Normalized_at mol \\\n", - "0 0 \n", " \n", " \n", - " 22\n", - " 23\n", - " Acetic acid\n", - " \n", - " 6\n", + " 0\n", + " 1\n", + " (R)-Roscovitine\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA53...\n", " True\n", " False\n", " False\n", " False\n", + " False\n", + " \n", + " \n", + " 1\n", + " 2\n", + " 17-Methyltestosterone\n", + " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", + " 0\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA53...\n", " True\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 199\n", - " 200\n", - " Citric acid\n", - " \n", - " 6\n", + " 2\n", + " 3\n", + " 1-alpha-Hydroxycholecalciferol\n", + " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", + " 0\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA53...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 3\n", + " 4\n", + " 2,3-Dimercaptosuccinic acid\n", + " O=C(O)C(S)C(S)C(=O)O\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA53...\n", " True\n", " False\n", " False\n", " False\n", + " False\n", + " \n", + " \n", + " 4\n", + " 5\n", + " 2,4,6-Trinitrotoluene\n", + " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", + " 0\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA53...\n", " True\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", "\n", "" ], "text/plain": [ - " IDs Names SMILES Filtered_at Cleaned_at Normalized_at \\\n", - "22 23 Acetic acid 6 0 0 \n", - "199 200 Citric acid 6 0 0 \n", + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "1 2 17-Methyltestosterone \n", + "2 3 1-alpha-Hydroxycholecalciferol \n", + "3 4 2,3-Dimercaptosuccinic acid \n", + "4 5 2,4,6-Trinitrotoluene \n", "\n", - " mol Carbon_present \\\n", - "22 \n", " \n", " \n", - " 0\n", - " 1\n", - " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", - " 3\n", + " 22\n", + " 23\n", + " Acetic acid\n", + " \n", + " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", + " False\n", + " False\n", + " False\n", " True\n", - " None\n", - " None\n", + " \n", + " \n", + " 199\n", + " 200\n", + " Citric acid\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", + " False\n", + " False\n", " True\n", " \n", " \n", - " 5\n", + " 275\n", + " 276\n", + " Dimethyl sulfoxide\n", + " \n", " 6\n", - " 2-Deoxy-D-glucose\n", - " C1COCCO1.OCC1OC(O)CC(O)C1O\n", - " 4\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", " False\n", + " False\n", + " False\n", " True\n", - " None\n", + " \n", + " \n", + " 335\n", + " 336\n", + " Ethanol\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", " False\n", + " False\n", + " True\n", " \n", " \n", - " 114\n", - " 115\n", - " Bortezomib\n", - " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", - " 3\n", + " 356\n", + " 357\n", + " Ferrous citrate\n", + " \n", + " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", + " False\n", + " False\n", + " False\n", " True\n", - " None\n", - " None\n", + " \n", + " \n", + " 400\n", + " 401\n", + " Glutamic acid\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", " False\n", + " False\n", + " True\n", " \n", " \n", - " 200\n", - " 201\n", - " zirconium\n", - " CCO[Zr](OCC)(OCC)OCC\n", - " 3\n", + " 405\n", + " 406\n", + " Glycerol\n", + " \n", + " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", + " False\n", + " False\n", + " False\n", " True\n", - " None\n", - " None\n", + " \n", + " \n", + " 481\n", + " 482\n", + " Lactic acid\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", " False\n", + " False\n", + " True\n", " \n", " \n", - " 201\n", - " 202\n", - " hemoglobin\n", - " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", - " 3\n", + " 605\n", + " 606\n", + " Niacin\n", + " \n", + " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", + " False\n", + " False\n", + " False\n", " True\n", - " None\n", - " None\n", + " \n", + " \n", + " 613\n", + " 614\n", + " Nicotinic acid\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", " False\n", + " False\n", + " True\n", " \n", " \n", - " 204\n", - " 206\n", - " covalent_metal\n", - " CCC(=O)O[Na]\n", - " 3\n", + " 630\n", + " 631\n", + " N-methylglucamine\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 696\n", + " 697\n", + " phenylacetate\n", + " \n", + " 6\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 709\n", + " 710\n", + " Piperazine\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 783\n", + " 784\n", + " Salicylic acid\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 798\n", + " 799\n", + " Sodium acetate\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 799\n", + " 800\n", + " Sodium benzoate\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 800\n", + " 801\n", + " Sodium bicarbonate\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 802\n", + " 803\n", + " Sodium propionate\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", + " True\n", + " False\n", + " False\n", + " False\n", + " True\n", + " \n", + " \n", + " 949\n", + " 950\n", + " Zinc acetate\n", + " \n", + " 6\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", - " None\n", - " None\n", " False\n", + " False\n", + " False\n", + " True\n", " \n", " \n", "\n", "" ], "text/plain": [ - " IDs Names \\\n", - "0 1 (R)-Roscovitine \n", - "5 6 2-Deoxy-D-glucose \n", - "114 115 Bortezomib \n", - "200 201 zirconium \n", - "201 202 hemoglobin \n", - "204 206 covalent_metal \n", - "\n", - " SMILES Filtered_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 \n", - "5 C1COCCO1.OCC1OC(O)CC(O)C1O 4 \n", - "114 CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O 3 \n", - "200 CCO[Zr](OCC)(OCC)OCC 3 \n", - "201 C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... 3 \n", - "204 CCC(=O)O[Na] 3 \n", - "\n", - " Cleaned_at Normalized_at \\\n", - "0 0 0 \n", - "5 0 0 \n", - "114 0 0 \n", - "200 0 0 \n", - "201 0 0 \n", - "204 0 0 \n", + " IDs Names SMILES Filtered_at Cleaned_at Normalized_at \\\n", + "22 23 Acetic acid 6 0 0 \n", + "199 200 Citric acid 6 0 0 \n", + "275 276 Dimethyl sulfoxide 6 0 0 \n", + "335 336 Ethanol 6 0 0 \n", + "356 357 Ferrous citrate 6 0 0 \n", + "400 401 Glutamic acid 6 0 0 \n", + "405 406 Glycerol 6 0 0 \n", + "481 482 Lactic acid 6 0 0 \n", + "605 606 Niacin 6 0 0 \n", + "613 614 Nicotinic acid 6 0 0 \n", + "630 631 N-methylglucamine 6 0 0 \n", + "696 697 phenylacetate 6 0 0 \n", + "709 710 Piperazine 6 0 0 \n", + "783 784 Salicylic acid 6 0 0 \n", + "798 799 Sodium acetate 6 0 0 \n", + "799 800 Sodium benzoate 6 0 0 \n", + "800 801 Sodium bicarbonate 6 0 0 \n", + "802 803 Sodium propionate 6 0 0 \n", + "949 950 Zinc acetate 6 0 0 \n", "\n", " mol Carbon_present \\\n", - "0 \n", - "\n", - "The steps would be:\n", - "\n", - "1. remove_salts\n", - "2. handle_charges.uncharge\n", - "3. normalize_molecule.normalize\n", - "4. handle_fragments.choose_largest_fragment" + "Next, we can filter for salts in the entries screened for inorganics and mixtures (as we did for the metals) to see if any inorganics or mixtures might have been salts." ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 22, "metadata": {}, + "outputs": [], "source": [ - "### Step 4: Normalization of Specific Chemotypes\n", - "\n", - "After we filtered all problematic entries in the previous steps and created subsets to curate entries containing metals and salts, the next task is to apply normalization transformations to the remaining entries to correct functional groups and recombine charges.
\n", - "The standardization API utilizes the Normalization transformations embedded in the rdMolStandardize-Package, which derives the rules described in the InChI technical manual.
\n", - "\n", - "*If available, custom conversions rules can be used and implemented but require modifying the `normalize_molecules.normalize` function to use them. (This might be covered in further development of this API.* " + "score = [3, 4]\n", + "failed_entries_copy = dataset[dataset[\"Filtered_at\"].isin(score)].copy()" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 23, "metadata": {}, + "outputs": [], "source": [ - "#### Task 7: Normalization" + "# Check for salts\n", + "failed_entries_copy[\"salts\"] = failed_entries_copy.apply(\n", + " lambda row: detect_salts(row.mol) if row.Filtered_at != 0 else None,\n", + " axis=1,\n", + ")" ] }, { "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "# Setting up the task_number\n", - "task_number = 7\n", - "\n", - "# Normalize the entries, overwrite the previous mol\n", - "dataset[\"mol\"] = dataset.apply(\n", - " lambda row: normalize_molecules.normalize(row.mol)\n", - " if row.Filtered_at == 0\n", - " else row.mol,\n", - " axis=1,\n", - ")\n", - "\n", - "# Calculate new SMILES for the entries to determine which entries needed to be normalized\n", - "dataset[\"SMILES_after_normalization\"] = dataset.apply(\n", - " lambda row: convert_format.convert_mol_to_smiles(row.mol)\n", - " if row.Filtered_at == 0\n", - " else row.SMILES,\n", - " axis=1,\n", - ")\n", - "\n", - "\n", - "# Compare the SMILES for changes after the normalization --> save as Boolean Value\n", - "dataset[\"normalized\"] = dataset.apply(\n", - " lambda row: smiles_string_changed(row.SMILES, row.SMILES_after_normalization)\n", - " if row.Filtered_at == 0\n", - " else None,\n", - " axis=1,\n", - ")\n", - "\n", - "\n", - "# Add task_number to normalized entries\n", - "dataset.loc[dataset[\"normalized\"] == True, [\"Normalized_at\"]] = task_number" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Below you can see all entries where normalization steps took place." - ] - }, - { - "cell_type": "code", - "execution_count": 27, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -2145,135 +2574,259 @@ " mixture\n", " metals\n", " salts\n", - " SMILEs_after_normalization\n", - " SMILES_after_normalization\n", - " normalized\n", " \n", " \n", " \n", " \n", - " 205\n", - " 207\n", - " test_charge_recombination\n", - " CC([O-])=[N+](C)C\n", + " 114\n", + " 115\n", + " Bortezomib\n", + " CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O\n", + " 3\n", " 0\n", " 0\n", - " 7\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " True\n", + " None\n", + " None\n", + " False\n", + " \n", + " \n", + " 407\n", + " 408\n", + " Gold Sodium Thiomalate\n", + " O=C(O)CC(S[Au])C(=O)O\n", + " 3\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " True\n", + " None\n", + " None\n", + " False\n", + " \n", + " \n", + " 533\n", + " 534\n", + " Mersalyl\n", + " COC(CNC(=O)c1ccccc1OCC(=O)O)C[Hg]O\n", + " 3\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " True\n", + " None\n", + " None\n", + " False\n", + " \n", + " \n", + " 951\n", + " 952\n", + " zirconium\n", + " CCO[Zr](OCC)(OCC)OCC\n", + " 3\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", " True\n", + " None\n", + " None\n", " False\n", + " \n", + " \n", + " 952\n", + " 953\n", + " hemoglobin\n", + " C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)...\n", + " 3\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " True\n", + " None\n", + " None\n", " False\n", + " \n", + " \n", + " 954\n", + " 956\n", + " covalent_metal\n", + " CCC(=O)O[Na]\n", + " 3\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", + " True\n", + " None\n", + " None\n", " False\n", + " \n", + " \n", + " 958\n", + " 960\n", + " 1,4-Dioxane\n", + " C1COCCO1.Oc1ccccc1\n", + " 4\n", + " 0\n", + " 0\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA54...\n", + " True\n", " False\n", - " CC(=O)N(C)C\n", - " CC(=O)N(C)C\n", " True\n", + " None\n", + " False\n", " \n", " \n", "\n", "" ], "text/plain": [ - " IDs Names SMILES Filtered_at \\\n", - "205 207 test_charge_recombination CC([O-])=[N+](C)C 0 \n", + " IDs Names \\\n", + "114 115 Bortezomib \n", + "407 408 Gold Sodium Thiomalate \n", + "533 534 Mersalyl \n", + "951 952 zirconium \n", + "952 953 hemoglobin \n", + "954 956 covalent_metal \n", + "958 960 1,4-Dioxane \n", + "\n", + " SMILES Filtered_at \\\n", + "114 CC(C)CC(NC(=O)C(Cc1ccccc1)NC(=O)c1cnccn1)B(O)O 3 \n", + "407 O=C(O)CC(S[Au])C(=O)O 3 \n", + "533 COC(CNC(=O)c1ccccc1OCC(=O)O)C[Hg]O 3 \n", + "951 CCO[Zr](OCC)(OCC)OCC 3 \n", + "952 C=CC1=C(C)c2cc3[n-]c(cc4nc(cc5[nH]c(cc1n2)c(C)... 3 \n", + "954 CCC(=O)O[Na] 3 \n", + "958 C1COCCO1.Oc1ccccc1 4 \n", "\n", " Cleaned_at Normalized_at \\\n", - "205 0 7 \n", + "114 0 0 \n", + "407 0 0 \n", + "533 0 0 \n", + "951 0 0 \n", + "952 0 0 \n", + "954 0 0 \n", + "958 0 0 \n", "\n", " mol Carbon_present \\\n", - "205 \n", "\n", - "Since we have finished all our actions taken on the mol-files, we can render new SMILES strings generated by our final mol-files" + "The steps would be:\n", + "\n", + "1. remove_salts\n", + "2. handle_charges.uncharge\n", + "3. normalize_molecule.normalize\n", + "4. handle_fragments.choose_largest_fragment" ] }, { - "cell_type": "code", - "execution_count": 29, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "dataset[\"SMILES\"] = dataset.apply(\n", - " lambda row: convert_format.convert_mol_to_smiles(row.mol)\n", - " if row.Filtered_at == 0\n", - " else row.SMILES,\n", - " axis=1,\n", - ")" + "### Step 4: Normalization of Specific Chemotypes\n", + "\n", + "After we filtered all problematic entries in the previous steps and created subsets to curate entries containing metals and salts, the next task is to apply normalization transformations to the remaining entries to correct functional groups and recombine charges.
\n", + "The standardization API utilizes the Normalization transformations embedded in the rdMolStandardize-Package, which derives the rules described in the InChI technical manual.
\n", + "\n", + "*If available, custom conversions rules can be used and implemented but require modifying the `normalize_molecules.normalize` function to use them. (This might be covered in further development of this API.* " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### (Task 8): Tautomers\n", - "\n", - "Considering compounds can exist in various tautomeric forms, it can be advantageous to calculate those forms. Due to tautomerism being a broad and specific field, this notebook will not allow a deeper focus on interpreting the problems related to tautomers. We will only provide the tools to generate a canonicalized tautomer and enumerate all possible tautomers of the final SMILES. " + "#### Task 7: Normalization" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 25, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n", - "WARNING:rdkit.Chem.MolStandardize.tautomer:Tautomer enumeration stopped at maximum 1000\n" - ] - } - ], + "outputs": [], "source": [ - "# Generate a canonicalized tautomer\n", - "dataset[\"canonicalized_tautomer_smiles\"] = dataset.apply(\n", - " lambda row: handle_tautomers.canonicalize_tautomer(row.SMILES)\n", - " if row.Filtered_at != 1\n", - " else None,\n", + "# Setting up the task_number\n", + "task_number = 7\n", + "\n", + "# Normalize the entries, overwrite the previous mol\n", + "dataset[\"mol\"] = dataset.apply(\n", + " lambda row: normalize_molecules.normalize(row.mol)\n", + " if row.Filtered_at == 0\n", + " else row.mol,\n", " axis=1,\n", ")\n", "\n", - "# Compare the SMILES for changes after the generation of a canonicalized SMILES --> save as Boolean Value\n", - "dataset[\"new_canonical_tautomer\"] = dataset.apply(\n", - " lambda row: smiles_string_changed(row.SMILES, row.canonicalized_tautomer_smiles)\n", + "# Calculate new SMILES for the entries to determine which entries needed to be normalized\n", + "dataset[\"SMILES_after_normalization\"] = dataset.apply(\n", + " lambda row: convert_format.convert_mol_to_smiles(row.mol)\n", + " if row.Filtered_at == 0\n", + " else row.SMILES,\n", + " axis=1,\n", + ")\n", + "\n", + "\n", + "# Compare the SMILES for changes after the normalization --> save as Boolean Value\n", + "dataset[\"normalized\"] = dataset.apply(\n", + " lambda row: smiles_string_changed(row.SMILES, row.SMILES_after_normalization)\n", " if row.Filtered_at == 0\n", " else None,\n", " axis=1,\n", - ")" + ")\n", + "\n", + "\n", + "# Add task_number to normalized entries\n", + "dataset.loc[dataset[\"normalized\"] == True, [\"Normalized_at\"]] = task_number" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Below you can see all entries where the canonicalized tautomer differs to the SMILES, that resulted from the curation process." + "Below you can see all entries where normalization steps took place." ] }, { "cell_type": "code", - "execution_count": 32, - "metadata": {}, + "execution_count": 26, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { @@ -2308,1325 +2861,585 @@ " mixture\n", " metals\n", " salts\n", - " SMILEs_after_normalization\n", - " SMILES_after_normalization\n", - " normalized\n", - " canonicalized_tautomer_smiles\n", - " new_canonical_tautomer\n", - " \n", - " \n", - " \n", - " \n", - " 11\n", - " 12\n", - " 5-Azacitidine\n", - " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", - " Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1\n", - " False\n", - " N=c1ncn(C2OC(CO)C(O)C2O)c(=O)[nH]1\n", - " True\n", - " \n", - " \n", - " 18\n", - " 19\n", - " Acenocoumarol\n", - " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", - " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...\n", - " False\n", - " CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)c2ccccc2...\n", - " True\n", - " \n", - " \n", - " 21\n", - " 22\n", - " Acetazolamide\n", - " CC(=O)Nc1nnc(S(N)(=O)=O)s1\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC(=O)Nc1nnc(S(N)(=O)=O)s1\n", - " CC(=O)Nc1nnc(S(N)(=O)=O)s1\n", - " False\n", - " CC(=O)N=c1[nH]nc(S(N)(=O)=O)s1\n", - " True\n", - " \n", - " \n", - " 24\n", - " 25\n", - " Acetohydroxamic acid\n", - " CC(=O)NO\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC(=O)NO\n", - " CC(=O)NO\n", - " False\n", - " CC(O)=NO\n", - " True\n", - " \n", - " \n", - " 31\n", - " 32\n", - " Acyclovir\n", - " Nc1nc(=O)c2ncn(COCCO)c2[nH]1\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " Nc1nc(=O)c2ncn(COCCO)c2[nH]1\n", - " Nc1nc(=O)c2ncn(COCCO)c2[nH]1\n", - " False\n", - " N=c1[nH]c(=O)c2ncn(COCCO)c2[nH]1\n", - " True\n", - " \n", - " \n", - " 32\n", - " 33\n", - " Adefovir dipivoxil\n", - " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...\n", - " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO...\n", - " False\n", - " CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(=N)[nH]cnc21...\n", - " True\n", - " \n", - " \n", - " 33\n", - " 34\n", - " Adenine\n", - " Nc1ncnc2[nH]cnc12\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " Nc1ncnc2[nH]cnc12\n", - " Nc1ncnc2[nH]cnc12\n", - " False\n", - " N=c1[nH]cnc2[nH]cnc12\n", - " True\n", - " \n", - " \n", - " 34\n", - " 35\n", - " Adenosine\n", - " Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O\n", - " Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O\n", - " False\n", - " N=c1[nH]cnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C...\n", - " True\n", - " \n", - " \n", - " 35\n", - " 36\n", - " Adenosine triphosphate\n", - " Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...\n", - " Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O...\n", - " False\n", - " N=c1[nH]cnc2c1ncn2C1OC(CO[PH](=O)(=O)O[PH](=O)...\n", - " True\n", - " \n", - " \n", - " 40\n", - " 41\n", - " Albendazole\n", - " CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1\n", - " CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1\n", - " False\n", - " CCCSc1ccc2[nH]c(=NC(=O)OC)[nH]c2c1\n", - " True\n", - " \n", - " \n", - " 43\n", - " 44\n", - " Allantoin\n", - " NC(=O)NC1NC(=O)NC1=O\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " NC(=O)NC1NC(=O)NC1=O\n", - " NC(=O)NC1NC(=O)NC1=O\n", - " False\n", - " NC(=O)Nc1[nH]c(=O)[nH]c1O\n", - " True\n", - " \n", - " \n", - " 45\n", - " 46\n", - " Allopurinol\n", - " O=c1nc[nH]c2cn[nH]c12\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " O=c1nc[nH]c2cn[nH]c12\n", - " O=c1nc[nH]c2cn[nH]c12\n", - " False\n", - " O=c1[nH]cnc2c[nH]nc12\n", - " True\n", - " \n", - " \n", - " 51\n", - " 52\n", - " Amikacin\n", - " NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", - " NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", - " False\n", - " NCCC(=O)C(O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O...\n", - " True\n", - " \n", - " \n", - " 52\n", - " 53\n", - " Amiloride\n", - " N=C(N)NC(=O)c1nc(Cl)c(N)nc1N\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " N=C(N)NC(=O)c1nc(Cl)c(N)nc1N\n", - " N=C(N)NC(=O)c1nc(Cl)c(N)nc1N\n", - " False\n", - " N=C(N)NC(=O)c1nc(Cl)c(=N)[nH]c1N\n", - " True\n", - " \n", - " \n", - " 56\n", - " 57\n", - " Aminoguanidine\n", - " NN=C(N)N\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " NN=C(N)N\n", - " NN=C(N)N\n", - " False\n", - " N=C(N)NN\n", - " True\n", - " \n", - " \n", - " 61\n", - " 62\n", - " Amlodipine\n", - " CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl\n", - " CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl\n", - " False\n", - " CCOC(=O)C1=C(COCCN)N=C(C)C(C(=O)OC)C1c1ccccc1Cl\n", - " True\n", - " \n", - " \n", - " 63\n", - " 64\n", - " Amodiaquin\n", - " CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O\n", - " CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O\n", - " False\n", - " CCN(CC)Cc1cc(N=c2cc[nH]c3cc(Cl)ccc23)ccc1O\n", - " True\n", - " \n", - " \n", - " 70\n", - " 71\n", - " Amsacrine\n", - " COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12\n", - " COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12\n", - " False\n", - " COc1cc(NS(C)(=O)=O)ccc1N=c1c2ccccc2[nH]c2ccccc12\n", - " True\n", - " \n", - " \n", - " 76\n", - " 77\n", - " Ascorbic acid\n", - " O=C1C(O)=C(O)OC1C(O)CO\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " O=C1C(O)=C(O)OC1C(O)CO\n", - " O=C1C(O)=C(O)OC1C(O)CO\n", - " False\n", - " OCC(O)c1oc(O)c(O)c1O\n", - " True\n", - " \n", - " \n", - " 77\n", - " 78\n", - " Astaxanthin\n", - " CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=...\n", - " CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=...\n", - " False\n", - " CC(C=CC=C(C)C=CC1C(C)C(=O)C(=O)CC1(C)C)=CC=CC=...\n", - " True\n", - " \n", - " \n", - " 89\n", - " 90\n", - " Aztreonam\n", - " CC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338B...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)...\n", - " CC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)...\n", - " False\n", - " CC1C(=NC(=O)C(NOC(C)(C)C(=O)O)c2csc(=N)[nH]2)C...\n", - " True\n", - " \n", - " \n", - " 105\n", - " 106\n", - " Betamethasone\n", - " CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...\n", - " CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...\n", - " False\n", - " CC1CC2C3CC=C4CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O...\n", - " True\n", - " \n", - " \n", - " 113\n", - " 114\n", - " Bleomycin\n", - " Cc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " Cc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(...\n", - " Cc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(...\n", - " False\n", - " Cc1c(C(=O)NC(C(=O)NC(C)C(O)C(C)C(=O)NC(C(=O)NC...\n", - " True\n", - " \n", - " \n", - " 115\n", - " 116\n", - " Bosentan\n", - " COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc...\n", - " COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc...\n", - " False\n", - " COc1ccccc1Oc1c(OCCO)[nH]c(-c2ncccn2)nc1=NS(=O)...\n", - " True\n", - " \n", - " \n", - " 118\n", - " 119\n", - " Bromocriptine\n", - " CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc...\n", - " CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc...\n", - " False\n", - " CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3=CC4c5cccc...\n", - " True\n", - " \n", - " \n", - " 120\n", - " 121\n", - " Bucladesine\n", - " CCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=...\n", - " CCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=...\n", - " False\n", - " CCCC(=O)N=c1[nH]cnc2c1ncn2C1OC2CO[PH](=O)(=O)O...\n", - " True\n", - " \n", - " \n", - " 121\n", - " 122\n", - " Budesonide\n", - " CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2...\n", - " CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2...\n", - " False\n", - " CCCC1OC2CC3C4CC=C5CC(=O)C=CC5(C)C4C(O)CC3(C)C2...\n", - " True\n", - " \n", - " \n", - " 136\n", - " 137\n", - " Capecitabine\n", - " CCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F\n", - " CCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F\n", - " False\n", - " CCCCCOC(=O)N=c1[nH]c(=O)n(C2OC(C)C(O)C2O)cc1F\n", - " True\n", - " \n", - " \n", - " 143\n", - " 144\n", - " Carbenoxolone\n", - " CC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O...\n", - " CC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O...\n", - " False\n", - " CC1(C(=O)O)CCC2(C)CCC3(C)C(=C2C1)CC(=O)C1C2(C)...\n", - " True\n", - " \n", - " \n", - " 147\n", - " 148\n", - " Cariporide\n", - " CC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O\n", - " CC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O\n", - " False\n", - " CC(C)c1ccc(C(=O)N=C(N)N)cc1S(C)(=O)=O\n", - " True\n", + " SMILES_after_normalization\n", + " normalized\n", " \n", + " \n", + " \n", " \n", - " 156\n", - " 157\n", - " Cefazolin\n", - " Cc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C...\n", + " 574\n", + " 575\n", + " Modafinil\n", + " NC(=O)CS(=O)C(c1ccccc1)c1ccccc1\n", " 0\n", " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " 7\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", " False\n", " False\n", " False\n", " False\n", - " Cc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C...\n", - " Cc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C...\n", - " False\n", - " Cc1nnc(SC=C2CSC3C(NC(=O)Cn4cnnn4)C(=O)N3C2C(=O...\n", + " NC(=O)C[S+]([O-])C(c1ccccc1)c1ccccc1\n", " True\n", " \n", " \n", - " 157\n", - " 158\n", - " Cefixime\n", - " C=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c...\n", - " 0\n", + " 830\n", + " 831\n", + " Sulfinpyrazone\n", + " O=C1C(CCS(=O)c2ccccc2)C(=O)N(c2ccccc2)N1c1ccccc1\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " 7\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", " False\n", " False\n", " False\n", " False\n", - " C=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c...\n", - " C=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c...\n", - " False\n", - " C=CC1=C(C(=O)O)N2C(=O)C(=NC(=O)C(NOCC(=O)O)c3c...\n", + " O=C1C(CC[S+]([O-])c2ccccc2)C(=O)N(c2ccccc2)N1c...\n", " True\n", " \n", " \n", - " 159\n", - " 160\n", - " Cefotaxime\n", - " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...\n", + " 831\n", + " 832\n", + " Sulindac\n", + " CC1=C(CC(=O)O)c2cc(F)ccc2C1=Cc1ccc(S(C)=O)cc1\n", " 0\n", " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " 7\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", " False\n", " False\n", " False\n", " False\n", - " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...\n", - " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...\n", - " False\n", - " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1...\n", + " CC1=C(CC(=O)O)c2cc(F)ccc2C1=Cc1ccc([S+](C)[O-]...\n", " True\n", " \n", " \n", - " 160\n", - " 161\n", - " Cefotetan\n", - " COC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C...\n", - " 0\n", + " 955\n", + " 957\n", + " test_charge_recombination\n", + " CC([O-])=[N+](C)C\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " 7\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA65...\n", " True\n", " False\n", " False\n", " False\n", " False\n", - " COC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C...\n", - " COC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C...\n", - " False\n", - " COC1(NC(O)=c2sc(=C(C(N)=O)C(=O)O)s2)C(=O)N2C(C...\n", + " CC(=O)N(C)C\n", " True\n", " \n", - " \n", - " 162\n", - " 163\n", - " Ceftriaxone\n", - " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...\n", - " 0\n", - " 0\n", - " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", - " True\n", - " False\n", - " False\n", - " False\n", - " False\n", - " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...\n", - " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...\n", - " False\n", - " CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=...\n", - " True\n", + " \n", + "\n", + "" + ], + "text/plain": [ + " IDs Names \\\n", + "574 575 Modafinil \n", + "830 831 Sulfinpyrazone \n", + "831 832 Sulindac \n", + "955 957 test_charge_recombination \n", + "\n", + " SMILES Filtered_at \\\n", + "574 NC(=O)CS(=O)C(c1ccccc1)c1ccccc1 0 \n", + "830 O=C1C(CCS(=O)c2ccccc2)C(=O)N(c2ccccc2)N1c1ccccc1 0 \n", + "831 CC1=C(CC(=O)O)c2cc(F)ccc2C1=Cc1ccc(S(C)=O)cc1 0 \n", + "955 CC([O-])=[N+](C)C 0 \n", + "\n", + " Cleaned_at Normalized_at \\\n", + "574 0 7 \n", + "830 0 7 \n", + "831 0 7 \n", + "955 0 7 \n", + "\n", + " mol Carbon_present \\\n", + "574 save as Boolean Value\n", + "dataset[\"new_canonical_tautomer\"] = dataset.apply(\n", + " lambda row: smiles_string_changed(row.SMILES, row.canonicalized_tautomer_smiles)\n", + " if row.Filtered_at == 0\n", + " else None,\n", + " axis=1,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below you can see all entries where the canonicalized tautomer differs to the SMILES, that resulted from the curation process." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", "
IDsNamesSMILESFiltered_atCleaned_atNormalized_atmolCarbon_presentInorganicsmixturemetalssaltsSMILES_after_normalizationnormalizedcanonicalized_tautomer_smilesnew_canonical_tautomer
165166CephalosporinCC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O...01(R)-RoscovitineCCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA64...TrueFalseFalseFalseFalseCC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O...CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O...CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1FalseCC(=O)OC=C1CSC2C(NC(=O)CCCC(N)C(=O)O)C(=O)N2C1...CCC(CO)N=c1[nH]c(=NCc2ccccc2)c2ncn(C(C)C)c2[nH]1True
166167CephalothinCC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC111125-AzacitidineNc1ncn(C2OC(CO)C(O)C2O)c(=O)n1000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA64...TrueFalseFalseFalseFalseCC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1FalseCC(=O)OC=C1CSC2C(NC(=O)Cc3cccs3)C(=O)N2C1C(=O)ON=c1ncn(C2OC(CO)C(O)C2O)c(=O)[nH]1True
167168CerivastatinCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...1819AcenocoumarolCC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA64...TrueFalseFalseFalseFalseCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc...FalseCOCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)c2ccccc2...True
168169Cerivastatin sodiumCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...2122AcetazolamideCC(=O)Nc1nnc(S(N)(=O)=O)s1000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA64...TrueFalseFalseFalseFalseCOCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1...CC(=O)Nc1nnc(S(N)(=O)=O)s1FalseCOCc1c(-c2ccc(F)cc2)c(=CCC(O)CC(O)CC(=O)O)c(C(...CC(=O)N=c1[nH]nc(S(N)(=O)=O)s1True
171172CF101CNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1O2425Acetohydroxamic acidCC(=O)NO000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA64...TrueFalseFalseFalseFalseCNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1OCNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1OCC(=O)NOFalseCNC(=O)C1OC(n2cnc3c(=NCc4cccc(I)c4)[nH]cnc32)C...CC(O)=NOTrue
178179ChlorguanideCC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...TrueFalseFalseFalseFalseCC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1FalseCC(C)N=C(N)N=C(N)Nc1ccc(Cl)cc1True...................................................
179180Chlormadinone acetateCC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)...937938Vitamin KCC(=CCC1=C(C)C(=O)c2ccccc2C1=O)CCCC(C)CCCC(C)C...000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA65...TrueFalseFalseFalseFalseCC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)...CC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)...CC(=CCC1=C(C)C(=O)c2ccccc2C1=O)CCCC(C)CCCC(C)C...FalseCC(=O)OC1(C(C)=O)CCC2C3=CC(Cl)=C4CC(=O)CCC4(C)...CC(C=Cc1c(C)c(O)c2ccccc2c1O)=CCCC(C)CCCC(C)CCC...True
187188ChlortetracyclineCN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c...941942WarfarinCC(=O)CC(c1ccccc1)c1c(O)oc2ccccc2c1=O000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA65...TrueFalseFalseFalseFalseCN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c...CN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c...CC(=O)CC(c1ccccc1)c1c(O)oc2ccccc2c1=OFalseCN(C)C1C(=O)C(C(N)=O)C(=O)C2(O)C(=O)C3C(=O)c4c...CC(=O)CC(c1ccccc1)c1c(O)c2ccccc2oc1=OTrue
188189ChlorzoxazoneOc1nc2cc(Cl)ccc2o1946947ZalcitabineNc1ccn(C2CCC(CO)O2)c(=O)n1000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA65...TrueFalseFalseFalseFalseOc1nc2cc(Cl)ccc2o1Oc1nc2cc(Cl)ccc2o1Nc1ccn(C2CCC(CO)O2)c(=O)n1FalseO=c1[nH]c2cc(Cl)ccc2o1N=c1ccn(C2CCC(CO)O2)c(=O)[nH]1True
191192CidofovirNc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1947948ZidovudineCc1cn(C2CC(NN=N)C(CO)O2)c(=O)[nH]c1=O000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA65...TrueFalseFalseFalseFalseNc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1Nc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1Cc1cn(C2CC(NN=N)C(CO)O2)c(=O)[nH]c1=OFalseN=c1ccn(CC(CO)OC[PH](=O)(=O)O)c(=O)[nH]1Cc1cn(C2CC(N=NN)C(CO)O2)c(=O)[nH]c1=OTrue
192193CimetidineCN=C(NC#N)NCCSCc1nc[nH]c1C956958ChloroquineCCN(CC)CCCC(C)Nc1ccnc2cc(Cl)ccc12000<rdkit.Chem.rdchem.Mol object at 0x0000027339F...<rdkit.Chem.rdchem.Mol object at 0x0000016DA65...TrueFalseFalseFalseFalseCN=C(NC#N)NCCSCc1nc[nH]c1CCN=C(NC#N)NCCSCc1nc[nH]c1CCCN(CC)CCCC(C)Nc1ccnc2cc(Cl)ccc12FalseCN=C(NC#N)NCCSCc1[nH]cnc1CCCN(CC)CCCC(C)N=c1cc[nH]c2cc(Cl)ccc12True
\n", + "

237 rows × 16 columns

\n", "
" ], "text/plain": [ - " IDs Names \\\n", - "11 12 5-Azacitidine \n", - "18 19 Acenocoumarol \n", - "21 22 Acetazolamide \n", - "24 25 Acetohydroxamic acid \n", - "31 32 Acyclovir \n", - "32 33 Adefovir dipivoxil \n", - "33 34 Adenine \n", - "34 35 Adenosine \n", - "35 36 Adenosine triphosphate \n", - "40 41 Albendazole \n", - "43 44 Allantoin \n", - "45 46 Allopurinol \n", - "51 52 Amikacin \n", - "52 53 Amiloride \n", - "56 57 Aminoguanidine \n", - "61 62 Amlodipine \n", - "63 64 Amodiaquin \n", - "70 71 Amsacrine \n", - "76 77 Ascorbic acid \n", - "77 78 Astaxanthin \n", - "89 90 Aztreonam \n", - "105 106 Betamethasone \n", - "113 114 Bleomycin \n", - "115 116 Bosentan \n", - "118 119 Bromocriptine \n", - "120 121 Bucladesine \n", - "121 122 Budesonide \n", - "136 137 Capecitabine \n", - "143 144 Carbenoxolone \n", - "147 148 Cariporide \n", - "156 157 Cefazolin \n", - "157 158 Cefixime \n", - "159 160 Cefotaxime \n", - "160 161 Cefotetan \n", - "162 163 Ceftriaxone \n", - "165 166 Cephalosporin \n", - "166 167 Cephalothin \n", - "167 168 Cerivastatin \n", - "168 169 Cerivastatin sodium \n", - "171 172 CF101 \n", - "178 179 Chlorguanide \n", - "179 180 Chlormadinone acetate \n", - "187 188 Chlortetracycline \n", - "188 189 Chlorzoxazone \n", - "191 192 Cidofovir \n", - "192 193 Cimetidine \n", + " IDs Names \\\n", + "0 1 (R)-Roscovitine \n", + "11 12 5-Azacitidine \n", + "18 19 Acenocoumarol \n", + "21 22 Acetazolamide \n", + "24 25 Acetohydroxamic acid \n", + ".. ... ... \n", + "937 938 Vitamin K \n", + "941 942 Warfarin \n", + "946 947 Zalcitabine \n", + "947 948 Zidovudine \n", + "956 958 Chloroquine \n", "\n", " SMILES Filtered_at \\\n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 \n", "11 Nc1ncn(C2OC(CO)C(O)C2O)c(=O)n1 0 \n", "18 CC(=O)CC(c1ccc([N+](=O)[O-])cc1)c1c(O)oc2ccccc... 0 \n", "21 CC(=O)Nc1nnc(S(N)(=O)=O)s1 0 \n", "24 CC(=O)NO 0 \n", - "31 Nc1nc(=O)c2ncn(COCCO)c2[nH]1 0 \n", - "32 CC(C)(C)C(=O)OCOP(=O)(COCCn1cnc2c(N)ncnc21)OCO... 0 \n", - "33 Nc1ncnc2[nH]cnc12 0 \n", - "34 Nc1ncnc2c1ncn2[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O 0 \n", - "35 Nc1ncnc2c1ncn2C1OC(COP(=O)(O)OP(=O)(O)OP(=O)(O... 0 \n", - "40 CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1 0 \n", - "43 NC(=O)NC1NC(=O)NC1=O 0 \n", - "45 O=c1nc[nH]c2cn[nH]c12 0 \n", - "51 NCCC(O)C(=O)NC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O... 0 \n", - "52 N=C(N)NC(=O)c1nc(Cl)c(N)nc1N 0 \n", - "56 NN=C(N)N 0 \n", - "61 CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl 0 \n", - "63 CCN(CC)Cc1cc(Nc2ccnc3cc(Cl)ccc23)ccc1O 0 \n", - "70 COc1cc(NS(C)(=O)=O)ccc1Nc1c2ccccc2nc2ccccc12 0 \n", - "76 O=C1C(O)=C(O)OC1C(O)CO 0 \n", - "77 CC(C=CC=C(C)C=CC1=C(C)C(=O)C(O)CC1(C)C)=CC=CC=... 0 \n", - "89 CC1C(NC(=O)C(=NOC(C)(C)C(=O)O)c2csc(N)n2)C(=O)... 0 \n", - "105 CC1CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O... 0 \n", - "113 Cc1c(N)nc(C(CC(N)=O)NCC(N)C(N)=O)nc1C(=O)NC(C(... 0 \n", - "115 COc1ccccc1Oc1c(NS(=O)(=O)c2ccc(C(C)(C)C)cc2)nc... 0 \n", - "118 CC(C)CC1C(=O)N2CCCC2C2(O)OC(NC(=O)C3C=C4c5cccc... 0 \n", - "120 CCCC(=O)Nc1ncnc2c1ncn2C1OC2COP(=O)(O)OC2C1OC(=... 0 \n", - "121 CCCC1OC2CC3C4CCC5=CC(=O)C=CC5(C)C4C(O)CC3(C)C2... 0 \n", - "136 CCCCCOC(=O)Nc1nc(=O)n(C2OC(C)C(O)C2O)cc1F 0 \n", - "143 CC1(C(=O)O)CCC2(C)CCC3(C)C(=CC(=O)C4C5(C)CCC(O... 0 \n", - "147 CC(C)c1ccc(C(=O)NC(=N)N)cc1S(C)(=O)=O 0 \n", - "156 Cc1nnc(SCC2=C(C(=O)O)N3C(=O)C(NC(=O)Cn4cnnn4)C... 0 \n", - "157 C=CC1=C(C(=O)O)N2C(=O)C(NC(=O)C(=NOCC(=O)O)c3c... 0 \n", - "159 CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(COC(C)=O)CSC1... 0 \n", - "160 COC1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C... 0 \n", - "162 CON=C(C(=O)NC1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=... 0 \n", - "165 CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)CCCC(N)C(=O... 0 \n", - "166 CC(=O)OCC1=C(C(=O)O)N2C(=O)C(NC(=O)Cc3cccs3)C2SC1 0 \n", - "167 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... 0 \n", - "168 COCc1c(C(C)C)nc(C(C)C)c(C=CC(O)CC(O)CC(=O)O)c1... 0 \n", - "171 CNC(=O)C1OC(n2cnc3c(NCc4cccc(I)c4)ncnc32)C(O)C1O 0 \n", - "178 CC(C)NC(=N)NC(=N)Nc1ccc(Cl)cc1 0 \n", - "179 CC(=O)OC1(C(C)=O)CCC2C3C=C(Cl)C4=CC(=O)CCC4(C)... 0 \n", - "187 CN(C)C1C(O)=C(C(N)=O)C(=O)C2(O)C(O)=C3C(=O)c4c... 0 \n", - "188 Oc1nc2cc(Cl)ccc2o1 0 \n", - "191 Nc1ccn(CC(CO)OCP(=O)(O)O)c(=O)n1 0 \n", - "192 CN=C(NC#N)NCCSCc1nc[nH]c1C 0 \n", + ".. ... ... \n", + "937 CC(=CCC1=C(C)C(=O)c2ccccc2C1=O)CCCC(C)CCCC(C)C... 0 \n", + "941 CC(=O)CC(c1ccccc1)c1c(O)oc2ccccc2c1=O 0 \n", + "946 Nc1ccn(C2CCC(CO)O2)c(=O)n1 0 \n", + "947 Cc1cn(C2CC(NN=N)C(CO)O2)c(=O)[nH]c1=O 0 \n", + "956 CCN(CC)CCCC(C)Nc1ccnc2cc(Cl)ccc12 0 \n", "\n", " Cleaned_at Normalized_at \\\n", + "0 0 0 \n", "11 0 0 \n", "18 0 0 \n", "21 0 0 \n", "24 0 0 \n", - "31 0 0 \n", - "32 0 0 \n", - "33 0 0 \n", - "34 0 0 \n", - "35 0 0 \n", - "40 0 0 \n", - "43 0 0 \n", - "45 0 0 \n", - "51 0 0 \n", - "52 0 0 \n", - "56 0 0 \n", - "61 0 0 \n", - "63 0 0 \n", - "70 0 0 \n", - "76 0 0 \n", - "77 0 0 \n", - "89 0 0 \n", - "105 0 0 \n", - "113 0 0 \n", - "115 0 0 \n", - "118 0 0 \n", - "120 0 0 \n", - "121 0 0 \n", - "136 0 0 \n", - "143 0 0 \n", - "147 0 0 \n", - "156 0 0 \n", - "157 0 0 \n", - "159 0 0 \n", - "160 0 0 \n", - "162 0 0 \n", - "165 0 0 \n", - "166 0 0 \n", - "167 0 0 \n", - "168 0 0 \n", - "171 0 0 \n", - "178 0 0 \n", - "179 0 0 \n", - "187 0 0 \n", - "188 0 0 \n", - "191 0 0 \n", - "192 0 0 \n", + ".. ... ... \n", + "937 0 0 \n", + "941 0 0 \n", + "946 0 0 \n", + "947 0 0 \n", + "956 0 0 \n", "\n", " mol Carbon_present \\\n", - "11 mixture\n", " metals\n", " salts\n", - " SMILEs_after_normalization\n", " SMILES_after_normalization\n", " normalized\n", " canonicalized_tautomer_smiles\n", @@ -3782,21 +3612,20 @@ " 0\n", " 1\n", " (R)-Roscovitine\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", - " 3\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027338C...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1\n", + " False\n", + " CCC(CO)N=c1[nH]c(=NCc2ccccc2)c2ncn(C(C)C)c2[nH]1\n", " True\n", - " None\n", - " None\n", - " None\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", - " CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca]\n", - " None\n", - " CCC(C[O-])N=c1[nH]c(=N[CH-]c2ccccc2)c2ncn(C(C)...\n", - " None\n", " \n", " \n", " 1\n", @@ -3806,14 +3635,13 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", - " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " False\n", " CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O\n", " False\n", @@ -3826,14 +3654,13 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", - " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " False\n", " C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O\n", " False\n", @@ -3846,14 +3673,13 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", - " O=C(O)C(S)C(S)C(=O)O\n", " False\n", " O=C(O)C(S)C(S)C(=O)O\n", " False\n", @@ -3866,14 +3692,13 @@ " 0\n", " 0\n", " 0\n", - " <rdkit.Chem.rdchem.Mol object at 0x0000027339F...\n", + " <rdkit.Chem.rdchem.Mol object at 0x0000016DA64...\n", " True\n", " False\n", " False\n", " False\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", - " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " False\n", " Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-]\n", " False\n", @@ -3891,49 +3716,42 @@ "4 5 2,4,6-Trinitrotoluene \n", "\n", " SMILES Filtered_at Cleaned_at \\\n", - "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1.[Ca] 3 0 \n", + "0 CCC(CO)Nc1nc(NCc2ccccc2)c2ncn(C(C)C)c2n1 0 0 \n", "1 CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(C)O 0 0 \n", "2 C=C1C(=CC=C2CCCC3(C)C2CCC3C(C)CCCC(C)C)CC(O)CC1O 0 0 \n", "3 O=C(O)C(S)C(S)C(=O)O 0 0 \n", "4 Cc1c([N+](=O)[O-])cc([N+](=O)[O-])cc1[N+](=O)[O-] 0 0 \n", "\n", " Normalized_at mol \\\n", - "0 0