Repository 'enumerate_charges'
hg clone https://toolshed.g2.bx.psu.edu/repos/bgruening/enumerate_charges

Changeset 0:0f3e5c69251e (2020-03-10)
Next changeset 1:3d96dc99698f (2020-03-21)
Commit message:
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/rdkit commit 20df7e562341cd30e89a14d6bde9054956fadc06"
added:
dimorphite_dl.py
enumerate_charges.xml
rdkit_descriptors.py
sdf_to_tab.py
site_substructures.smarts
test-data/CID_3037.sdf
test-data/CID_3037.tab
test-data/ligand.sdf
test-data/ligand.tab
test-data/mols.smi
test-data/rdkit_descriptors_result1.csv
test-data/rdkit_descriptors_result1.tab
test-data/sucos_cluster.sdf
b
diff -r 000000000000 -r 0f3e5c69251e dimorphite_dl.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dimorphite_dl.py Tue Mar 10 12:57:24 2020 -0400
[
b'@@ -0,0 +1,1084 @@\n+# Copyright 2018 Jacob D. Durrant\n+#\n+# Licensed under the Apache License, Version 2.0 (the "License");\n+# you may not use this file except in compliance with the License.\n+# You may obtain a copy of the License at\n+#\n+#     http://www.apache.org/licenses/LICENSE-2.0\n+#\n+# Unless required by applicable law or agreed to in writing, software\n+# distributed under the License is distributed on an "AS IS" BASIS,\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+# See the License for the specific language governing permissions and\n+# limitations under the License.\n+\n+"""\n+This script identifies and enumerates the possible protonation sites of SMILES\n+strings.\n+"""\n+\n+from __future__ import print_function\n+import copy\n+import os\n+import argparse\n+import sys\n+\n+try:\n+    # Python2\n+    from StringIO import StringIO\n+except ImportError:\n+    # Python3\n+    from io import StringIO\n+\n+# Always let the user know a help file is available.\n+print("\\nFor help, use: python dimorphite_dl.py --help")\n+\n+# And always report citation information.\n+print("\\nIf you use Dimorphite-DL in your research, please cite:")\n+print("Ropp PJ, Kaminsky JC, Yablonski S, Durrant JD (2019) Dimorphite-DL: An")\n+print("open-source program for enumerating the ionization states of drug-like small")\n+print("molecules. J Cheminform 11:14. doi:10.1186/s13321-019-0336-9.\\n")\n+\n+try:\n+    import rdkit\n+    from rdkit import Chem\n+    from rdkit.Chem import AllChem\n+except:\n+    msg = "Dimorphite-DL requires RDKit. See https://www.rdkit.org/"\n+    print(msg)\n+    raise Exception(msg)\n+\n+def main(params=None):\n+    """The main definition run when you call the script from the commandline.\n+\n+    :param params: The parameters to use. Entirely optional. If absent,\n+                   defaults to None, in which case argments will be taken from\n+                   those given at the command line.\n+    :param params: dict, optional\n+    :return: Returns a list of the SMILES strings return_as_list parameter is\n+             True. Otherwise, returns None.\n+    """\n+\n+    parser = ArgParseFuncs.get_args()\n+    args = vars(parser.parse_args())\n+\n+    # Add in any parameters in params.\n+    if params is not None:\n+        for k, v in params.items():\n+            args[k] = v\n+\n+    # If being run from the command line, print out all parameters.\n+    if __name__ == "__main__":\n+        print("\\nPARAMETERS:\\n")\n+        for k in sorted(args.keys()):\n+            print(k.rjust(13) + ": " + str(args[k]))\n+        print("")\n+\n+    if args["test"]:\n+        # Run tests.\n+        TestFuncs.test()\n+    else:\n+        # Run protonation\n+        if "output_file" in args and args["output_file"] is not None:\n+            # An output file was specified, so write to that.\n+            with open(args["output_file"], "w") as file:\n+                for protonated_smi in Protonate(args):\n+                    file.write(protonated_smi + "\\n")\n+        elif "return_as_list" in args and args["return_as_list"] == True:\n+            return list(Protonate(args))\n+        else:\n+            # No output file specified. Just print it to the screen.\n+            for protonated_smi in Protonate(args):\n+                print(protonated_smi)\n+\n+class MyParser(argparse.ArgumentParser):\n+    """Overwrite default parse so it displays help file on error. See\n+    https://stackoverflow.com/questions/4042452/display-help-message-with-python-argparse-when-script-is-called-without-any-argu"""\n+\n+    def error(self, message):\n+        """Overwrites the default error message.\n+\n+        :param message: The default error message.\n+        """\n+\n+        self.print_help()\n+        msg = "ERROR: %s\\n\\n" % message\n+        print(msg)\n+        raise Exception(msg)\n+\n+    def print_help(self, file=None):\n+        """Overwrite the default print_help function\n+\n+        :param file: Output file, defaults to None\n+        """\n+\n+        print("")\n+\n+        if file is None:\n+            '..b'          raise Exception(msg)\n+\n+        if (len(set([l[1] for l in output]) - set(labels)) != 0):\n+            msg = args["smiles"] + " not labeled as " + " AND ".join(labels) + \\\n+                "; it is " + " AND ".join([l[1] for l in output])\n+            print(msg)\n+            raise Exception(msg)\n+\n+        ph_range = sorted(list(set([args["min_ph"], args["max_ph"]])))\n+        ph_range_str = "(" + " - ".join("{0:.2f}".format(n) for n in ph_range) + ")"\n+        print("(CORRECT) " + ph_range_str.ljust(10) + " " + args["smiles"] + " => " + " AND ".join([l[0] for l in output]))\n+\n+def run(**kwargs):\n+    """A helpful, importable function for those who want to call Dimorphite-DL\n+    from another Python script rather than the command line. Note that this\n+    function accepts keyword arguments that match the command-line parameters\n+    exactly. If you want to pass and return a list of RDKit Mol objects, import\n+    run_with_mol_list() instead.\n+\n+    :param **kwargs: For a complete description, run dimorphite_dl.py from the\n+        command line with the -h option.\n+    :type kwargs: dict\n+    """\n+\n+    # Run the main function with the specified arguments.\n+    main(kwargs)\n+\n+def run_with_mol_list(mol_lst, **kwargs):\n+    """A helpful, importable function for those who want to call Dimorphite-DL\n+    from another Python script rather than the command line. Note that this\n+    function is for passing Dimorphite-DL a list of RDKit Mol objects, together\n+    with command-line parameters. If you want to use only the same parameters\n+    that you would use from the command line, import run() instead.\n+\n+    :param mol_lst: A list of rdkit.Chem.rdchem.Mol objects.\n+    :type mol_lst: list\n+    :raises Exception: If the **kwargs includes "smiles", "smiles_file",\n+                       "output_file", or "test" parameters.\n+    :return: A list of properly protonated rdkit.Chem.rdchem.Mol objects.\n+    :rtype: list\n+    """\n+\n+    # Do a quick check to make sure the user input makes sense.\n+    for bad_arg in ["smiles", "smiles_file", "output_file", "test"]:\n+        if bad_arg in kwargs:\n+            msg = "You\'re using Dimorphite-DL\'s run_with_mol_list(mol_lst, " + \\\n+                   "**kwargs) function, but you also passed the \\"" + \\\n+                   bad_arg + "\\" argument. Did you mean to use the " + \\\n+                   "run(**kwargs) function instead?"\n+            print(msg)\n+            raise Exception(msg)\n+\n+    # Set the return_as_list flag so main() will return the protonated smiles\n+    # as a list.\n+    kwargs["return_as_list"] = True\n+\n+    # Having reviewed the code, it will be very difficult to rewrite it so\n+    # that a list of Mol objects can be used directly. Intead, convert this\n+    # list of mols to smiles and pass that. Not efficient, but it will work.\n+    protonated_smiles_and_props = []\n+    for m in mol_lst:\n+        props = m.GetPropsAsDict()\n+        kwargs["smiles"] = Chem.MolToSmiles(m, isomericSmiles=True)\n+        protonated_smiles_and_props.extend(\n+            [(s.split("\\t")[0], props) for s in main(kwargs)]\n+        )\n+\n+    # Now convert the list of protonated smiles strings back to RDKit Mol\n+    # objects. Also, add back in the properties from the original mol objects.\n+    mols = []\n+    for s, props in protonated_smiles_and_props:\n+        m = Chem.MolFromSmiles(s)\n+        if m:\n+            for prop, val in props.items():\n+                if type(val) is int:\n+                    m.SetIntProp(prop, val)\n+                elif type(val) is float:\n+                    m.SetDoubleProp(prop, val)\n+                elif type(val) is bool:\n+                    m.SetBoolProp(prop, val)\n+                else:\n+                    m.SetProp(prop, str(val))\n+            mols.append(m)\n+        else:\n+            UtilFuncs.eprint("WARNING: Could not process molecule with SMILES string " + s + " and properties " + str(props))\n+\n+    return mols\n+\n+if __name__ == "__main__":\n+    main()\n'
b
diff -r 000000000000 -r 0f3e5c69251e enumerate_charges.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/enumerate_charges.xml Tue Mar 10 12:57:24 2020 -0400
[
@@ -0,0 +1,98 @@
+<tool id="enumerate_charges" name="Enumerate changes" version="0.1">
+    <description>calculated with Dimorphite DL and RDKit</description>
+      <requirements>
+        <requirement type="package" version="2019.09.2">rdkit</requirement>
+    </requirements>
+    <command detect_errors="exit_code">
+<![CDATA[
+        python '$__tool_directory__/dimorphite_dl.py'
+            --smiles_file '$input'
+            --output_file '$output'
+            --min_ph $min_ph
+            --max_ph $max_ph
+]]>
+    </command>
+    <inputs>
+        <param name="input" format="smi" type="data" label="Input molecule data"
+            help="In SMILES format"/>
+        <param name="min_ph" type="float" label="Minimum pH" value="6.4" min="0" max="14"/>
+        <param name="max_ph" type="float" label="Maximum pH" value="8.4" min="0" max="14"/>
+    </inputs>
+    <outputs>
+        <data format="smi" name="output" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="input" ftype='smi' value="mols.smi" />
+            <param name="min_ph"  value="6.4" />
+            <param name="max_ph"  value="8.4" />
+            <output name="output" ftype='smi'>
+                <!-- there are problems comparing the output to the expected due to whitespace differences
+                so we just check that the number of lines is as expected -->
+                <assert_contents>
+                    <has_n_lines n="7" />
+                    <has_text text="NC(CCCC[NH3+])C(=O)[O-]" />
+                    <has_text text="NCCCCC(N)C(=O)[O-]" />
+                    <has_text text="NCCCCC([NH3+])C(=O)[O-]" />
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="input" ftype='smi' value="mols.smi" />
+            <param name="min_ph"  value="4.4" />
+            <param name="max_ph"  value="10.4" />
+            <output name="output" ftype='smi'>
+                <assert_contents>
+                    <has_n_lines n="14" />
+                    <has_text text="NC(CCCC[NH3+])C(=O)O" />
+                    <has_text text="NCCCCC([NH3+])C(=O)[O-]" />
+                    <has_text text="NC(CCCC[NH3+])C(=O)[O-]" />
+                    <has_text text="NCCCCC([NH3+])C(=O)O" />
+                    <has_text text="NC(CCCC[NH3+])C(=O)O" />
+                    <has_text text="NCCCCC(N)C(=O)O" />
+                </assert_contents>
+            </output>
+        </test>
+    </tests>
+    <help>
+<![CDATA[
+
+.. class:: infomark
+
+**What this tool does**
+
+Dimorphite DL provides rules on how to enumerate the different charge forms of molecules using RDKit.
+Source code can be found here: https://git.durrantlab.pitt.edu/jdurrant/dimorphite_dl
+
+
+-----
+
+.. class:: infomark
+
+**Input**
+
+- `SMILES Format`_
+
+.. _SMILES Format: http://en.wikipedia.org/wiki/Simplified_molecular_input_line_entry_specification
+
+-----
+
+.. class:: infomark
+
+ **Output**
+
+SMILES format with the enumerated molecules. If an ID was provided in the input this is retained in the output.
+
+
+]]>
+    </help>
+    <citations>
+        <citation type="doi">10.1186/s13321-019-0336-9</citation>
+        <citation type="bibtex">
+            @article{rdkit,
+            author = {Greg Landrum and others},
+            title = {RDKit: Open-source cheminformatics},
+            url ={http://www.rdkit.org}
+            }</citation>
+    </citations>
+</tool>
b
diff -r 000000000000 -r 0f3e5c69251e rdkit_descriptors.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rdkit_descriptors.py Tue Mar 10 12:57:24 2020 -0400
[
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+from rdkit.Chem import Descriptors
+from rdkit import Chem
+import sys, os, re
+import argparse
+import inspect
+
+def get_supplier( infile, format = 'smiles' ):
+    """
+    Returns a generator over a SMILES or InChI file. Every element is of RDKit 
+    molecule and has its original string as _Name property.
+    """
+    with open(infile) as handle:
+        for line in handle:
+            line = line.strip()
+            if format == 'smiles':
+                mol = Chem.MolFromSmiles( line, sanitize=True )
+            elif format == 'inchi':
+                mol = Chem.inchi.MolFromInchi( line, sanitize=True, removeHs=True, logLevel=None, treatWarningAsError=False )
+            if mol is None:
+                yield False
+            else:
+                mol.SetProp( '_Name', line.split('\t')[0] )
+                yield mol
+
+def get_rdkit_descriptor_functions():
+    """
+    Returns all descriptor functions under the Chem.Descriptors Module as tuple of (name, function)
+    """
+    ret = [ (name, f) for name, f in inspect.getmembers( Descriptors ) if inspect.isfunction( f ) and not name.startswith( '_' ) ]
+    ret.sort()
+    return ret
+
+
+def descriptors( mol, functions ):
+    """
+    Calculates the descriptors of a given molecule.
+    """
+    for name, function in functions:
+        yield (name, function( mol ))
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument('-i', '--infile', required=True, help='Path to the input file.')
+    parser.add_argument("--iformat", help="Specify the input file format.")
+
+    parser.add_argument('-o', '--outfile', type=argparse.FileType('w+'), 
+        default=sys.stdout, help="path to the result file, default it sdtout")
+
+    parser.add_argument("--header", dest="header", action="store_true",
+                    default=False,
+                    help="Write header line.")
+
+    args = parser.parse_args()
+
+    if args.iformat == 'sdf':
+        supplier = Chem.SDMolSupplier( args.infile )
+    elif args.iformat =='smi':
+        supplier = get_supplier( args.infile, format = 'smiles' )
+    elif args.iformat == 'inchi':
+        supplier = get_supplier( args.infile, format = 'inchi' )
+
+    functions = get_rdkit_descriptor_functions()
+
+    if args.header:
+        args.outfile.write( '%s\n' % '\t'.join( ['MoleculeID'] + [name for name, f in functions] ) )
+
+    for mol in supplier:
+        if not mol:
+            continue
+        descs = descriptors( mol, functions )
+        molecule_id = mol.GetProp("_Name")
+        args.outfile.write( "%s\n" % '\t'.join( [molecule_id]+ [str(round(res, 6)) for name, res in descs] ) )
+
b
diff -r 000000000000 -r 0f3e5c69251e sdf_to_tab.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sdf_to_tab.py Tue Mar 10 12:57:24 2020 -0400
[
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+import argparse
+import pandas as pd
+from rdkit import Chem
+
+def sdf_to_tab(vars):
+    mols = Chem.SDMolSupplier(vars.inp, sanitize=False)
+    df = pd.DataFrame()  # for output
+
+    for n in range(len(mols)):
+        if mols[n]:
+            d = mols[n].GetPropsAsDict()
+            # filter dict for desired props
+            if vars.props.strip() == '':  # none specified, return all
+                d = {prop: val for (prop, val) in d.items() if not any(x in str(val) for x in ['\n', '\t'])}  # remove items containing newlines or tabs
+            else:
+                d = {prop: val for (prop, val) in d.items() if prop in vars.props.replace(' ', '').split(',')}  # remove items not requested via CLI
+            if vars.name:
+                d['Name'] = mols[n].GetProp('_Name')
+            if vars.smiles:
+                d['SMILES'] = Chem.MolToSmiles(mols[n], isomericSmiles=False)
+            d['Index'] = int(n)
+
+            df = df.append(d, ignore_index=True)
+        else:
+            print("Molecule could not be read - skipped.")
+
+    df = df.astype({'Index': int}).set_index('Index')
+    df.to_csv(vars.out, sep='\t', header=vars.header)
+
+def main():
+    parser = argparse.ArgumentParser(description="Convert SDF to tabular")
+    parser.add_argument('--inp', '-i', help="The input file", required=True)
+    parser.add_argument('--out', '-o', help="The output file", required=True)
+    parser.add_argument('--props', '-p', help="Properties to filter (leave blank for all)", required=True)
+    parser.add_argument('--header', '-t', action='store_true',
+                        help="Write property name as the first row.")
+    parser.add_argument('--smiles', '-s', action='store_true',
+                        help="Include SMILES in output.")
+    parser.add_argument('--name', '-n', action='store_true',
+                        help="Include molecule name in output.")
+    sdf_to_tab(parser.parse_args())
+    
+
+if __name__ == "__main__":
+    main()
b
diff -r 000000000000 -r 0f3e5c69251e site_substructures.smarts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/site_substructures.smarts Tue Mar 10 12:57:24 2020 -0400
[
@@ -0,0 +1,39 @@
+*Azide [N+0:1]=[N+:2]=[N+0:3]-[H] 2 4.65 0.07071067811865513
+Nitro [C,c,N,n,O,o:1]-[NX3:2](=[O:3])-[O:4]-[H] 3 -1000.0 0
+AmidineGuanidine1 [N:1]-[C:2](-[N:3])=[NX2:4]-[H:5] 3 12.025333333333334 1.5941046150769165
+AmidineGuanidine2 [C:1](-[N:2])=[NX2+0:3] 2 10.035538461538462 2.1312826469414716
+Sulfate [SX4:1](=[O:2])(=[O:3])([O:4]-[C,c,N,n:5])-[OX2:6]-[H] 5 -2.36 1.3048043093561141
+Sulfonate [SX4:1](=[O:2])(=[O:3])(-[C,c,N,n:4])-[OX2:5]-[H] 4 -1.8184615384615386 1.4086213481855594
+Sulfinic_acid [SX3:1](=[O:2])-[O:3]-[H] 2 1.7933333333333332 0.4372070447739835
+Phenyl_carboxyl [c,n,o:1]-[C:2](=[O:3])-[O:4]-[H] 3 3.463441968255319 1.2518054407928614
+Carboxyl [C:1](=[O:2])-[O:3]-[H] 2 3.456652971502591 1.2871420886834017
+Thioic_acid [C,c,N,n:1](=[O,S:2])-[SX2,OX2:3]-[H] 2 0.678267 1.497048763660801
+Phenyl_Thiol [c,n:1]-[SX2:2]-[H] 1 4.978235294117647 2.6137000480499806
+Thiol [C,N:1]-[SX2:2]-[H] 1 9.12448275862069 1.3317968158171463
+Phosphate [PX4:1](=[O:2])(-[OX2:3]-[H])(-[O+0:4])-[OX2:5]-[H] 2 2.4182608695652172 1.1091177991945305 5 6.5055 0.9512787792174668
+Phosphonate [PX4:1](=[O:2])(-[OX2:3]-[H])(-[C,c,N,n:4])-[OX2:5]-[H] 2 1.8835714285714287 0.5925999820080644 5 7.247254901960784 0.8511476450801531
+Phenol [c,n,o:1]-[O:2]-[H] 1 7.065359866910526 3.277356122295936
+Peroxide1 [O:1]([$(C=O),$(C[Cl]),$(CF),$(C[Br]),$(CC#N):2])-[O:3]-[H] 2 8.738888888888889 0.7562592839596507
+Peroxide2 [C:1]-[O:2]-[O:3]-[H] 2 11.978235294117647 0.8697645895163075
+O=C-C=C-OH [O:1]=[C;R:2]-[C;R:3]=[C;R:4]-[O:5]-[H] 4 3.554 0.803339458581667
+Vinyl_alcohol [C:1]=[C:2]-[O:3]-[H] 2 8.871850714285713 1.660200255394124
+Alcohol [C:1]-[O:2]-[H] 1 14.780384615384616 2.546464970533435
+N-hydroxyamide [C:1](=[O:2])-[N:3]-[O:4]-[H] 3 9.301904761904762 1.2181897185891002
+*Ringed_imide1 [O,S:1]=[C;R:2]([$([#8]),$([#7]),$([#16]),$([#6][Cl]),$([#6]F),$([#6][Br]):3])-[N;R:4]([C;R:5]=[O,S:6])-[H] 3 6.4525 0.5555627777308341
+*Ringed_imide2 [O,S:1]=[C;R:2]-[N;R:3]([C;R:4]=[O,S:5])-[H] 2 8.681666666666667 1.8657779975741713
+*Imide [F,Cl,Br,S,s,P,p:1][#6:2][CX3:3](=[O,S:4])-[NX3+0:5]([CX3:6]=[O,S:7])-[H] 4 2.466666666666667 1.4843629385474877
+*Imide2 [O,S:1]=[CX3:2]-[NX3+0:3]([CX3:4]=[O,S:5])-[H] 2 10.23 1.1198214143335534
+*Amide_electronegative [C:1](=[O:2])-[N:3](-[Br,Cl,I,F,S,O,N,P:4])-[H] 2 3.4896 2.688124315081677
+*Amide [C:1](=[O:2])-[N:3]-[H] 2 12.00611111111111 4.512491341218857
+*Sulfonamide [SX4:1](=[O:2])(=[O:3])-[NX3+0:4]-[H] 3 7.9160326086956525 1.9842121316708763
+Anilines_primary [c:1]-[NX3+0:2]([H:3])[H:4] 1 3.899298673194805 2.068768503987161
+Anilines_secondary [c:1]-[NX3+0:2]([H:3])[!H:4] 1 4.335408163265306 2.1768842022330843
+Anilines_tertiary [c:1]-[NX3+0:2]([!H:3])[!H:4] 1 4.16690685045614 2.005865735782679
+Aromatic_nitrogen_unprotonated [n+0&H0:1] 0 4.3535441240733945 2.0714072661859584
+Amines_primary_secondary_tertiary [C:1]-[NX3+0:2] 1 8.159107682388349 2.5183597445318147
+Phosphinic_acid [PX4:1](=[O:2])(-[C,c,N,n,F,Cl,Br,I:3])(-[C,c,N,n,F,Cl,Br,I:4])-[OX2:5]-[H] 4 2.9745 0.6867886750744557
+Phosphate_diester [PX4:1](=[O:2])(-[OX2:3]-[C,c,N,n,F,Cl,Br,I:4])(-[O+0:5]-[C,c,N,n,F,Cl,Br,I:4])-[OX2:6]-[H] 6 2.7280434782608696 2.5437448856908316
+Phosphonate_ester [PX4:1](=[O:2])(-[OX2:3]-[C,c,N,n,F,Cl,Br,I:4])(-[C,c,N,n,F,Cl,Br,I:5])-[OX2:6]-[H] 5 2.0868 0.4503028610465036
+Primary_hydroxyl_amine [C,c:1]-[O:2]-[NH2:3] 2 4.035714285714286 0.8463816543155368
+*Indole_pyrrole [c;R:1]1[c;R:2][c;R:3][c;R:4][n;R:5]1[H] 4 14.52875 4.06702491591416
+*Aromatic_nitrogen_protonated [n:1]-[H] 0 7.17 2.94602395490212
b
diff -r 000000000000 -r 0f3e5c69251e test-data/CID_3037.sdf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/CID_3037.sdf Tue Mar 10 12:57:24 2020 -0400
b
@@ -0,0 +1,220 @@
+3037
+  -OEChem-08231108593D
+
+ 27 28  0     0  0  0  0  0  0999 V2000
+   -4.8550    1.3401    0.2120 Cl  0  0  0  0  0  0  0  0  0  0  0  0
+    4.8529   -1.3406    0.2121 Cl  0  0  0  0  0  0  0  0  0  0  0  0
+   -0.1809   -2.1668   -0.3789 O   0  0  0  0  0  0  0  0  0  0  0  0
+    0.1788    2.1664   -0.3787 O   0  0  0  0  0  0  0  0  0  0  0  0
+   -0.0011   -0.0002    1.4744 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -1.2222   -0.2738    0.6597 C   0  0  0  0  0  0  0  0  0  0  0  0
+    1.2377    0.2772    0.6480 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -1.2586   -1.3462   -0.2316 C   0  0  0  0  0  0  0  0  0  0  0  0
+    1.2565    1.3457   -0.2314 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -2.3343    0.5568    0.7972 C   0  0  0  0  0  0  0  0  0  0  0  0
+    2.3322   -0.5574    0.7972 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -2.4069   -1.5879   -0.9855 C   0  0  0  0  0  0  0  0  0  0  0  0
+    2.4048    1.5875   -0.9852 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -3.4827    0.3152    0.0433 C   0  0  0  0  0  0  0  0  0  0  0  0
+    3.4807   -0.3156    0.0435 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -3.5190   -0.7571   -0.8481 C   0  0  0  0  0  0  0  0  0  0  0  0
+    3.5170    0.7568   -0.8478 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -0.1548    0.8649    2.1342 H   0  0  0  0  0  0  0  0  0  0  0  0
+    0.1601   -0.8435    2.1593 H   0  0  0  0  0  0  0  0  0  0  0  0
+   -2.3089    1.3938    1.4913 H   0  0  0  0  0  0  0  0  0  0  0  0
+    2.3053   -1.3909    1.4943 H   0  0  0  0  0  0  0  0  0  0  0  0
+   -2.4415   -2.4213   -1.6818 H   0  0  0  0  0  0  0  0  0  0  0  0
+    2.4469    2.4191   -1.6835 H   0  0  0  0  0  0  0  0  0  0  0  0
+   -4.4070   -0.9574   -1.4422 H   0  0  0  0  0  0  0  0  0  0  0  0
+    4.4050    0.9570   -1.4418 H   0  0  0  0  0  0  0  0  0  0  0  0
+    0.2961   -2.2262    0.4641 H   0  0  0  0  0  0  0  0  0  0  0  0
+    0.3872    2.8487   -1.0397 H   0  0  0  0  0  0  0  0  0  0  0  0
+  1 14  1  0  0  0  0
+  2 15  1  0  0  0  0
+  3  8  1  0  0  0  0
+  3 26  1  0  0  0  0
+  4  9  1  0  0  0  0
+  4 27  1  0  0  0  0
+  5  6  1  0  0  0  0
+  5  7  1  0  0  0  0
+  5 18  1  0  0  0  0
+  5 19  1  0  0  0  0
+  6  8  2  0  0  0  0
+  6 10  1  0  0  0  0
+  7  9  2  0  0  0  0
+  7 11  1  0  0  0  0
+  8 12  1  0  0  0  0
+  9 13  1  0  0  0  0
+ 10 14  2  0  0  0  0
+ 10 20  1  0  0  0  0
+ 11 15  2  0  0  0  0
+ 11 21  1  0  0  0  0
+ 12 16  2  0  0  0  0
+ 12 22  1  0  0  0  0
+ 13 17  2  0  0  0  0
+ 13 23  1  0  0  0  0
+ 14 16  1  0  0  0  0
+ 15 17  1  0  0  0  0
+ 16 24  1  0  0  0  0
+ 17 25  1  0  0  0  0
+M  END
+> <PUBCHEM_COMPOUND_CID>
+3037
+
+> <PUBCHEM_CONFORMER_RMSD>
+0.6
+
+> <PUBCHEM_CONFORMER_DIVERSEORDER>
+8
+10
+12
+1
+7
+5
+11
+3
+6
+9
+4
+2
+
+> <PUBCHEM_MMFF94_PARTIAL_CHARGES>
+25
+1 -0.18
+10 -0.15
+11 -0.15
+12 -0.15
+13 -0.15
+14 0.18
+15 0.18
+16 -0.15
+17 -0.15
+2 -0.18
+20 0.15
+21 0.15
+22 0.15
+23 0.15
+24 0.15
+25 0.15
+26 0.45
+27 0.45
+3 -0.53
+4 -0.53
+5 0.29
+6 -0.14
+7 -0.14
+8 0.08
+9 0.08
+
+> <PUBCHEM_EFFECTIVE_ROTOR_COUNT>
+2
+
+> <PUBCHEM_PHARMACOPHORE_FEATURES>
+4
+1 3 donor
+1 4 donor
+6 6 8 10 12 14 16 rings
+6 7 9 11 13 15 17 rings
+
+> <PUBCHEM_HEAVY_ATOM_COUNT>
+17
+
+> <PUBCHEM_ATOM_DEF_STEREO_COUNT>
+0
+
+> <PUBCHEM_ATOM_UDEF_STEREO_COUNT>
+0
+
+> <PUBCHEM_BOND_DEF_STEREO_COUNT>
+0
+
+> <PUBCHEM_BOND_UDEF_STEREO_COUNT>
+0
+
+> <PUBCHEM_ISOTOPIC_ATOM_COUNT>
+0
+
+> <PUBCHEM_COMPONENT_COUNT>
+1
+
+> <PUBCHEM_CACTVS_TAUTO_COUNT>
+5
+
+> <PUBCHEM_CONFORMER_ID>
+00000BDD00000008
+
+> <PUBCHEM_MMFF94_ENERGY>
+44.6858
+
+> <PUBCHEM_FEATURE_SELFOVERLAP>
+20.297
+
+> <PUBCHEM_SHAPE_FINGERPRINT>
+10062212 137 18261117369936506423
+104564 63 17986963035811110412
+11458722 120 18339359768245870841
+11471102 22 5472872458301843344
+11578080 2 18190204380446433792
+116883 192 18265608969609498196
+12236239 1 18410856576819659107
+12592029 89 18338223951597366363
+13549 16 18410575084668353682
+13693222 15 6555421915516066822
+13764800 53 14189033175566991199
+14115302 16 18186237320680093898
+14341114 328 10087642619424135543
+14787075 74 9511159855286719151
+14993402 34 18410855451538227223
+15099037 51 18340768233908588503
+15207287 21 15719111361650760302
+15375358 24 15647053767618106914
+15775835 57 18272650117329930317
+16945 1 17906452130063974618
+17834072 14 15936410035134206066
+18186145 218 17132117918276567720
+19422 9 18271525295227750719
+20279233 1 15719389529571237654
+20645476 183 18339080393619327415
+23402539 116 18186809105365620101
+23402655 69 18342736308283284156
+23559900 14 17603590712323212176
+25 1 17561083592297532664
+26918003 58 6266902359448424189
+296302 2 15213020427345972082
+3082319 5 18338798905472319583
+34934 24 18341891845236497020
+633830 44 17703790310130762689
+74978 22 18266740181857992718
+7832392 63 18340206284835898173
+81228 2 15720767252053392762
+9981440 41 17403743242177431832
+
+> <PUBCHEM_SHAPE_MULTIPOLES>
+341.85
+8.38
+1.9
+1.1
+0.02
+0
+-1.15
+1.94
+-0.01
+0
+-0.39
+-4.15
+0.01
+0
+
+> <PUBCHEM_SHAPE_SELFOVERLAP>
+722.787
+
+> <PUBCHEM_SHAPE_VOLUME>
+193
+
+> <PUBCHEM_COORDINATE_TYPE>
+2
+5
+255
+
+$$$$
+
b
diff -r 000000000000 -r 0f3e5c69251e test-data/CID_3037.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/CID_3037.tab Tue Mar 10 12:57:24 2020 -0400
b
@@ -0,0 +1,2 @@
+Index Name PUBCHEM_ATOM_DEF_STEREO_COUNT PUBCHEM_ATOM_UDEF_STEREO_COUNT PUBCHEM_BOND_DEF_STEREO_COUNT PUBCHEM_BOND_UDEF_STEREO_COUNT PUBCHEM_CACTVS_TAUTO_COUNT PUBCHEM_COMPONENT_COUNT PUBCHEM_COMPOUND_CID PUBCHEM_CONFORMER_ID PUBCHEM_CONFORMER_RMSD PUBCHEM_EFFECTIVE_ROTOR_COUNT PUBCHEM_FEATURE_SELFOVERLAP PUBCHEM_HEAVY_ATOM_COUNT PUBCHEM_ISOTOPIC_ATOM_COUNT PUBCHEM_MMFF94_ENERGY PUBCHEM_SHAPE_SELFOVERLAP PUBCHEM_SHAPE_VOLUME
+0 3037 0.0 0.0 0.0 0.0 5.0 1.0 3037.0 00000BDD00000008 0.6 2.0 20.297 17.0 0.0 44.6858 722.787 193.0
b
diff -r 000000000000 -r 0f3e5c69251e test-data/ligand.sdf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ligand.sdf Tue Mar 10 12:57:24 2020 -0400
b
b"@@ -0,0 +1,612 @@\n+pose1\n+ OpenBabel09021916093D\n+\n+ 16 16  0  0  0  0  0  0  0  0999 V2000\n+   30.7270  -43.7450   76.1540 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.2320  -43.8770   76.1820 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.9030  -44.5770   75.1900 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.2880  -44.7130   75.1870 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.9550  -45.4820   74.0800 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   35.0120  -44.1090   76.2270 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.3700  -43.3850   77.2450 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   35.1200  -42.7180   78.3740 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.9820  -43.2890   77.1920 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   36.4390  -44.2310   76.2340 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   36.8300  -44.9440   76.7890 H   0  0  0  0  0  0  0  0  0  0  0  0\n+   37.2890  -43.4500   75.5420 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   37.0090  -42.3660   75.0480 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   38.6760  -43.9990   75.3480 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   38.7980  -44.7930   74.1950 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   38.6010  -46.1780   74.4680 C   0  0  0  0  0  0  0  0  0  0  0  0\n+  1  2  1  0  0  0  0\n+  2  9  2  0  0  0  0\n+  3  2  1  0  0  0  0\n+  4  3  2  0  0  0  0\n+  4  6  1  0  0  0  0\n+  5  4  1  0  0  0  0\n+  6 10  1  0  0  0  0\n+  6  7  2  0  0  0  0\n+  7  8  1  0  0  0  0\n+  9  7  1  0  0  0  0\n+ 10 11  1  0  0  0  0\n+ 12 10  1  0  0  0  0\n+ 13 12  2  0  0  0  0\n+ 14 12  1  0  0  0  0\n+ 15 16  1  0  0  0  0\n+ 15 14  1  0  0  0  0\n+M  END\n+>  <MODEL>\n+1\n+\n+>  <REMARK>\n+ VINA RESULT:      -4.9      0.000      0.000\n+  Name = \n+  7 active torsions:\n+  status: ('A' for Active; 'I' for Inactive)\n+    1  A    between atoms: C_1  and  C_5\n+    2  A    between atoms: C_2  and  C_12\n+    3  A    between atoms: C_2  and  O_15\n+    4  A    between atoms: C_3  and  O_15\n+    5  A    between atoms: C_4  and  C_7\n+    6  A    between atoms: C_8  and  N_13\n+    7  A    between atoms: C_9  and  C_11\n+                            x       y       z     vdW  Elec       q    Type\n+                         _______ _______ _______ _____ _____    ______ ____\n+\n+>  <TORSDO>\n+F 3\n+\n+>  <SCORE>\n+-4.9\n+\n+>  <RMSD_LB>\n+0.000\n+\n+>  <RMSD_UB>\n+0.000\n+\n+$$$$\n+pose2\n+ OpenBabel09021916093D\n+\n+ 16 16  0  0  0  0  0  0  0  0999 V2000\n+   30.7330  -43.6060   76.3350 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.2340  -43.7750   76.2880 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   33.0410  -43.2270   77.2740 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.4260  -43.3690   77.2600 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   35.2450  -42.7520   78.3610 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   35.0040  -44.0990   76.2100 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.2200  -44.6770   75.1980 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.8090  -45.4740   74.0590 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.8400  -44.4960   75.2690 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   36.4270  -44.2630   76.1860 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   36.8070  -45.0000   76.7160 H   0  0  0  0  0  0  0  0  0  0  0  0\n+   37.2860  -43.4900   75.4970 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   37.0290  -42.3860   75.0350 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   38.6520  -44.0730   75.2620 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   38.7120  -44.8940   74.1230 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   38.5590  -46.2750   74.4420 C   0  0  0  0  0  0  0  0  0  0  0  0\n+  2  1  1  0  0  0  0\n+  2  3  2  0  0  0  0\n+  4  3  1  0  0  0  0\n+  4  5  1  0  0  0  0\n+  6  4  2  0  0  0  0\n+  7  9  2  0  0  0  0\n+  7  6  1  0  0  0  0\n+  8  7  1  0  0  0  0\n+  9  2  1  0  0  0  0\n+ 10  6  1  0  0  0  0\n+ 10 11  1  0  0  0  0\n+ 12 10  1  0  0  0  0\n+ 13 12  2  0  0  0  0\n+ 14 12  1  0  0  0  0\n+ 15 16  1  0  0  0  0\n+ 15 14  1  0  0  0  0\n+M  END\n+>  <MODEL>\n+2\n+\n+>  <REMARK>\n+ VINA RESULT:      -4.9      0.118      2.246\n+  Name = \n+  7 active torsio"..b"330  -42.9960   74.1500 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   29.4010  -44.8100   72.4170 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.0440  -43.8770   74.8450 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.6940  -43.1840   74.5860 H   0  0  0  0  0  0  0  0  0  0  0  0\n+   31.8900  -44.1170   76.1600 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   31.3600  -45.1120   76.6390 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.3840  -43.0420   77.0880 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.0560  -41.7460   76.6550 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.0630  -40.8000   77.7210 C   0  0  0  0  0  0  0  0  0  0  0  0\n+  1  2  1  0  0  0  0\n+  2  3  2  0  0  0  0\n+  2  9  1  0  0  0  0\n+  3  4  1  0  0  0  0\n+  4  5  1  0  0  0  0\n+  4  6  2  0  0  0  0\n+  6 10  1  0  0  0  0\n+  7  6  1  0  0  0  0\n+  7  8  1  0  0  0  0\n+  9  7  2  0  0  0  0\n+ 10 12  1  0  0  0  0\n+ 11 10  1  0  0  0  0\n+ 12 13  2  0  0  0  0\n+ 12 14  1  0  0  0  0\n+ 15 14  1  0  0  0  0\n+ 15 16  1  0  0  0  0\n+M  END\n+>  <MODEL>\n+8\n+\n+>  <REMARK>\n+ VINA RESULT:      -4.3      3.964      5.892\n+  Name = \n+  7 active torsions:\n+  status: ('A' for Active; 'I' for Inactive)\n+    1  A    between atoms: C_1  and  C_5\n+    2  A    between atoms: C_2  and  C_12\n+    3  A    between atoms: C_2  and  O_15\n+    4  A    between atoms: C_3  and  O_15\n+    5  A    between atoms: C_4  and  C_7\n+    6  A    between atoms: C_8  and  N_13\n+    7  A    between atoms: C_9  and  C_11\n+                            x       y       z     vdW  Elec       q    Type\n+                         _______ _______ _______ _____ _____    ______ ____\n+\n+>  <TORSDO>\n+F 3\n+\n+>  <SCORE>\n+-4.3\n+\n+>  <RMSD_LB>\n+3.964\n+\n+>  <RMSD_UB>\n+5.892\n+\n+$$$$\n+pose9\n+ OpenBabel09021916093D\n+\n+ 16 16  0  0  0  0  0  0  0  0999 V2000\n+   36.2810  -45.5880   74.7420 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.7970  -45.3090   74.6830 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.0060  -45.8780   73.6960 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.6360  -45.6430   73.6170 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   31.8340  -46.2940   72.5230 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.0540  -44.8050   74.5810 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.8200  -44.2170   75.6010 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   32.2240  -43.3170   76.6570 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   34.1850  -44.4900   75.6220 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   30.6450  -44.5600   74.5200 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   30.0630  -45.1230   75.0810 H   0  0  0  0  0  0  0  0  0  0  0  0\n+   30.0510  -43.6230   73.7590 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   30.5710  -43.0480   72.8120 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   28.6490  -43.2470   74.1530 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   27.7000  -44.2290   73.8180 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   27.2950  -44.1460   72.4540 C   0  0  0  0  0  0  0  0  0  0  0  0\n+  2  1  1  0  0  0  0\n+  2  9  2  0  0  0  0\n+  3  2  1  0  0  0  0\n+  4  3  2  0  0  0  0\n+  4  6  1  0  0  0  0\n+  5  4  1  0  0  0  0\n+  6  7  2  0  0  0  0\n+  7  9  1  0  0  0  0\n+  7  8  1  0  0  0  0\n+ 10  6  1  0  0  0  0\n+ 10 11  1  0  0  0  0\n+ 12 14  1  0  0  0  0\n+ 12 10  1  0  0  0  0\n+ 13 12  2  0  0  0  0\n+ 15 14  1  0  0  0  0\n+ 16 15  1  0  0  0  0\n+M  END\n+>  <MODEL>\n+9\n+\n+>  <REMARK>\n+ VINA RESULT:      -4.3      3.971      6.363\n+  Name = \n+  7 active torsions:\n+  status: ('A' for Active; 'I' for Inactive)\n+    1  A    between atoms: C_1  and  C_5\n+    2  A    between atoms: C_2  and  C_12\n+    3  A    between atoms: C_2  and  O_15\n+    4  A    between atoms: C_3  and  O_15\n+    5  A    between atoms: C_4  and  C_7\n+    6  A    between atoms: C_8  and  N_13\n+    7  A    between atoms: C_9  and  C_11\n+                            x       y       z     vdW  Elec       q    Type\n+                         _______ _______ _______ _____ _____    ______ ____\n+\n+>  <TORSDO>\n+F 3\n+\n+>  <SCORE>\n+-4.3\n+\n+>  <RMSD_LB>\n+3.971\n+\n+>  <RMSD_UB>\n+6.363\n+\n+$$$$\n"
b
diff -r 000000000000 -r 0f3e5c69251e test-data/ligand.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ligand.tab Tue Mar 10 12:57:24 2020 -0400
[
@@ -0,0 +1,10 @@
+Index RMSD_LB RMSD_UB SCORE SMILES
+0 0.0 0.0 -4.9 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
+1 0.118 2.246 -4.9 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
+2 2.96 5.795 -4.9 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
+3 2.958 5.379 -4.8 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
+4 2.763 5.379 -4.5 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
+5 3.106 4.85 -4.4 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
+6 2.847 5.816 -4.4 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
+7 3.964 5.892 -4.3 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
+8 3.971 6.363 -4.3 [H]N(C(=O)COC)C1C(C)=CC(C)=CC=1C
b
diff -r 000000000000 -r 0f3e5c69251e test-data/mols.smi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/mols.smi Tue Mar 10 12:57:24 2020 -0400
[
@@ -0,0 +1,3 @@
+NCCCCC(N)C(=O)O lysine
+O=C(O)C(N)C alanine
+N[C@@H](CC1=CC=CC=C1)C(O)=O phenylanaline
b
diff -r 000000000000 -r 0f3e5c69251e test-data/rdkit_descriptors_result1.csv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/rdkit_descriptors_result1.csv Tue Mar 10 12:57:24 2020 -0400
b
@@ -0,0 +1,2 @@
+BalabanJ BertzCT Chi0 Chi0n Chi0v Chi1 Chi1n Chi1v Chi2n Chi2v Chi3n Chi3v Chi4n Chi4v EState_VSA1 EState_VSA10 EState_VSA11 EState_VSA2 EState_VSA3 EState_VSA4 EState_VSA5 EState_VSA6 EState_VSA7 EState_VSA8 EState_VSA9 ExactMolWt FpDensityMorgan1 FpDensityMorgan2 FpDensityMorgan3 FractionCSP3 HallKierAlpha HeavyAtomCount HeavyAtomMolWt Ipc Kappa1 Kappa2 Kappa3 LabuteASA MaxAbsEStateIndex MaxAbsPartialCharge MaxEStateIndex MaxPartialCharge MinAbsEStateIndex MinAbsPartialCharge MinEStateIndex MinPartialCharge MolLogP MolMR MolWt NHOHCount NOCount NumAliphaticCarbocycles NumAliphaticHeterocycles NumAliphaticRings NumAromaticCarbocycles NumAromaticHeterocycles NumAromaticRings NumHAcceptors NumHDonors NumHeteroatoms NumRadicalElectrons NumRotatableBonds NumSaturatedCarbocycles NumSaturatedHeterocycles NumSaturatedRings NumValenceElectrons PEOE_VSA1 PEOE_VSA10 PEOE_VSA11 PEOE_VSA12 PEOE_VSA13 PEOE_VSA14 PEOE_VSA2 PEOE_VSA3 PEOE_VSA4 PEOE_VSA5 PEOE_VSA6 PEOE_VSA7 PEOE_VSA8 PEOE_VSA9 RingCount SMR_VSA1 SMR_VSA10 SMR_VSA2 SMR_VSA3 SMR_VSA4 SMR_VSA5 SMR_VSA6 SMR_VSA7 SMR_VSA8 SMR_VSA9 SlogP_VSA1 SlogP_VSA10 SlogP_VSA11 SlogP_VSA12 SlogP_VSA2 SlogP_VSA3 SlogP_VSA4 SlogP_VSA5 SlogP_VSA6 SlogP_VSA7 SlogP_VSA8 SlogP_VSA9 TPSA VSA_EState1 VSA_EState10 VSA_EState2 VSA_EState3 VSA_EState4 VSA_EState5 VSA_EState6 VSA_EState7 VSA_EState8 VSA_EState9 fr_Al_COO fr_Al_OH fr_Al_OH_noTert fr_ArN fr_Ar_COO fr_Ar_N fr_Ar_NH fr_Ar_OH fr_COO fr_COO2 fr_C_O fr_C_O_noCOO fr_C_S fr_HOCCN fr_Imine fr_NH0 fr_NH1 fr_NH2 fr_N_O fr_Ndealkylation1 fr_Ndealkylation2 fr_Nhpyrrole fr_SH fr_aldehyde fr_alkyl_carbamate fr_alkyl_halide fr_allylic_oxid fr_amide fr_amidine fr_aniline fr_aryl_methyl fr_azide fr_azo fr_barbitur fr_benzene fr_benzodiazepine fr_bicyclic fr_diazo fr_dihydropyridine fr_epoxide fr_ester fr_ether fr_furan fr_guanido fr_halogen fr_hdrzine fr_hdrzone fr_imidazole fr_imide fr_isocyan fr_isothiocyan fr_ketone fr_ketone_Topliss fr_lactam fr_lactone fr_methoxy fr_morpholine fr_nitrile fr_nitro fr_nitro_arom fr_nitro_arom_nonortho fr_nitroso fr_oxazole fr_oxime fr_para_hydroxylation fr_phenol fr_phenol_noOrthoHbond fr_phos_acid fr_phos_ester fr_piperdine fr_piperzine fr_priamide fr_prisulfonamd fr_pyridine fr_quatN fr_sulfide fr_sulfonamd fr_sulfone fr_term_acetylene fr_tetrazole fr_thiazole fr_thiocyan fr_thiophene fr_unbrch_alkane fr_urea qed
+3037 2.370227579270102 503.6108804181844 12.413849083443592 8.821564533342674 10.333422425379583 8.0585506480638 5.008352593120903 5.764281539139358 3.7228452481073373 4.595716809051308 2.463985083856104 2.934179289431582 1.5965258413271721 1.9859262940770028 0.0 10.213054789681411 0.0 11.49902366656781 27.592991233802653 0.0 12.13273413692322 24.26546827384644 0.0 0.0 23.20187978046503 268.00578492 0.7647058823529411 1.1764705882352942 1.588235294117647 0.07692307692307693 -1.38 17 259.04699999999997 6943.445199590422 12.08686679380967 4.861181105580097 2.8426724700782957 109.048439398113 9.68320845930965 0.5076617533400031 9.68320845930965 0.11870889965789788 0.14701436130007584 0.11870889965789788 0.14701436130007584 -0.5076617533400031 3.9954000000000027 69.03960000000004 269.127 2 2 0 0 0 2 0 2 2 2 4 0 2 0 0 0 88 10.213054789681411 11.49902366656781 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 23.20187978046503 47.52510539416365 16.466088250408664 0.0 2 10.213054789681411 23.20187978046503 0.0 0.0 0.0 6.4208216229260096 0.0 57.5703720216463 0.0 11.49902366656781 0.0 0.0 11.49902366656781 23.20187978046503 10.213054789681411 6.4208216229260096 0.0 11.126902983393991 36.39820241076966 10.045266627482652 0.0 0.0 40.46 0.0 11.70886971249405 0.0 0.0 0.0 0.0 0.0 0.0 0.0 32.01335250972817 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8647127178367139
b
diff -r 000000000000 -r 0f3e5c69251e test-data/rdkit_descriptors_result1.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/rdkit_descriptors_result1.tab Tue Mar 10 12:57:24 2020 -0400
b
@@ -0,0 +1,2 @@
+MoleculeID BalabanJ BertzCT Chi0 Chi0n Chi0v Chi1 Chi1n Chi1v Chi2n Chi2v Chi3n Chi3v Chi4n Chi4v EState_VSA1 EState_VSA10 EState_VSA11 EState_VSA2 EState_VSA3 EState_VSA4 EState_VSA5 EState_VSA6 EState_VSA7 EState_VSA8 EState_VSA9 ExactMolWt FpDensityMorgan1 FpDensityMorgan2 FpDensityMorgan3 FractionCSP3 HallKierAlpha HeavyAtomCount HeavyAtomMolWt Ipc Kappa1 Kappa2 Kappa3 LabuteASA MaxAbsEStateIndex MaxAbsPartialCharge MaxEStateIndex MaxPartialCharge MinAbsEStateIndex MinAbsPartialCharge MinEStateIndex MinPartialCharge MolLogP MolMR MolWt NHOHCount NOCount NumAliphaticCarbocycles NumAliphaticHeterocycles NumAliphaticRings NumAromaticCarbocycles NumAromaticHeterocycles NumAromaticRings NumHAcceptors NumHDonors NumHeteroatoms NumRadicalElectrons NumRotatableBonds NumSaturatedCarbocycles NumSaturatedHeterocycles NumSaturatedRings NumValenceElectrons PEOE_VSA1 PEOE_VSA10 PEOE_VSA11 PEOE_VSA12 PEOE_VSA13 PEOE_VSA14 PEOE_VSA2 PEOE_VSA3 PEOE_VSA4 PEOE_VSA5 PEOE_VSA6 PEOE_VSA7 PEOE_VSA8 PEOE_VSA9 RingCount SMR_VSA1 SMR_VSA10 SMR_VSA2 SMR_VSA3 SMR_VSA4 SMR_VSA5 SMR_VSA6 SMR_VSA7 SMR_VSA8 SMR_VSA9 SlogP_VSA1 SlogP_VSA10 SlogP_VSA11 SlogP_VSA12 SlogP_VSA2 SlogP_VSA3 SlogP_VSA4 SlogP_VSA5 SlogP_VSA6 SlogP_VSA7 SlogP_VSA8 SlogP_VSA9 TPSA VSA_EState1 VSA_EState10 VSA_EState2 VSA_EState3 VSA_EState4 VSA_EState5 VSA_EState6 VSA_EState7 VSA_EState8 VSA_EState9 fr_Al_COO fr_Al_OH fr_Al_OH_noTert fr_ArN fr_Ar_COO fr_Ar_N fr_Ar_NH fr_Ar_OH fr_COO fr_COO2 fr_C_O fr_C_O_noCOO fr_C_S fr_HOCCN fr_Imine fr_NH0 fr_NH1 fr_NH2 fr_N_O fr_Ndealkylation1 fr_Ndealkylation2 fr_Nhpyrrole fr_SH fr_aldehyde fr_alkyl_carbamate fr_alkyl_halide fr_allylic_oxid fr_amide fr_amidine fr_aniline fr_aryl_methyl fr_azide fr_azo fr_barbitur fr_benzene fr_benzodiazepine fr_bicyclic fr_diazo fr_dihydropyridine fr_epoxide fr_ester fr_ether fr_furan fr_guanido fr_halogen fr_hdrzine fr_hdrzone fr_imidazole fr_imide fr_isocyan fr_isothiocyan fr_ketone fr_ketone_Topliss fr_lactam fr_lactone fr_methoxy fr_morpholine fr_nitrile fr_nitro fr_nitro_arom fr_nitro_arom_nonortho fr_nitroso fr_oxazole fr_oxime fr_para_hydroxylation fr_phenol fr_phenol_noOrthoHbond fr_phos_acid fr_phos_ester fr_piperdine fr_piperzine fr_priamide fr_prisulfonamd fr_pyridine fr_quatN fr_sulfide fr_sulfonamd fr_sulfone fr_term_acetylene fr_tetrazole fr_thiazole fr_thiocyan fr_thiophene fr_unbrch_alkane fr_urea qed
+3037 2.370228 503.61088 12.413849 8.821565 10.333422 8.058551 5.008353 5.764282 3.722845 4.595717 2.463985 2.934179 1.596526 1.985926 0.0 10.213055 0.0 11.499024 27.592991 0.0 12.132734 24.265468 0.0 0.0 23.20188 268.005785 0.764706 1.176471 1.588235 0.076923 -1.38 17 259.047 6943.4452 12.086867 4.861181 2.842672 109.048439 9.683208 0.507662 9.683208 0.118709 0.147014 0.118709 0.147014 -0.507662 3.9954 69.0396 269.127 2 2 0 0 0 2 0 2 2 2 4 0 2 0 0 0 88 10.213055 11.499024 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 23.20188 47.525105 16.466088 0.0 2 10.213055 23.20188 0.0 0.0 0.0 6.420822 0.0 57.570372 0.0 11.499024 0.0 0.0 11.499024 23.20188 10.213055 6.420822 0.0 11.126903 36.398202 10.045267 0.0 0.0 40.46 0.0 11.70887 0.0 0.0 0.0 0.0 0.0 0.0 0.0 32.013353 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.864713
b
diff -r 000000000000 -r 0f3e5c69251e test-data/sucos_cluster.sdf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sucos_cluster.sdf Tue Mar 10 12:57:24 2020 -0400
b
b'@@ -0,0 +1,1384 @@\n+\n+     RDKit          3D\n+\n+ 19 20  0  0  0  0  0  0  0  0999 V2000\n+   25.8690   10.6750   17.9260 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   24.7660   11.4770   18.5500 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   24.1650   12.4880   17.8120 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.1480   13.2570   18.3640 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.7300   13.0010   19.6620 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.6190   13.8450   20.2480 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.3280   11.9670   20.4090 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.9000   11.7560   21.6900 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.1990   10.4520   22.2010 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.3800   10.3250   23.4930 C   0  0  1  0  0  0  0  0  0  0  0  0\n+   22.7510    9.1510   24.2170 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.5930   11.5910   24.3570 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.2540   11.3630   25.7760 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.5710   12.5910   26.5330 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.1760   12.4110   28.0100 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   20.7810   12.0710   28.1350 O   0  0  0  0  0  0  0  0  0  0  0  0\n+   20.5060   10.8660   27.4060 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   20.8170   11.0700   25.9210 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   24.3600   11.2090   19.8480 C   0  0  0  0  0  0  0  0  0  0  0  0\n+  2  1  1  0\n+  3  2  2  0\n+  4  3  1  0\n+  5  4  2  0\n+  6  5  1  0\n+  7  5  1  0\n+  8  7  1  0\n+  9  8  1  0\n+ 10  9  1  0\n+ 10 11  1  1\n+ 12 10  1  0\n+ 13 12  1  0\n+ 14 13  1  0\n+ 15 14  1  0\n+ 16 15  1  0\n+ 17 16  1  0\n+ 18 17  1  0\n+ 18 13  1  0\n+ 19  7  2  0\n+ 19  2  1  0\n+M  END\n+$$$$\n+\n+     RDKit          3D\n+\n+ 11 12  0  0  0  0  0  0  0  0999 V2000\n+   22.8090    9.2070   24.2800 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.4710   10.1080   23.3190 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.8900    9.6340   22.1960 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.5680   10.5170   21.2440 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.7580   11.8790   21.3690 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.3130   12.3920   22.5320 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.5210   13.7530   22.7260 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.0810   14.2110   23.9020 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.4470   13.3190   24.8860 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.2450   11.9700   24.7110 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.6750   11.4850   23.5440 C   0  0  0  0  0  0  0  0  0  0  0  0\n+  2  1  1  0\n+  3  2  2  0\n+  4  3  1  0\n+  5  4  2  0\n+  6  5  1  0\n+  7  6  2  0\n+  8  7  1  0\n+  9  8  2  0\n+ 10  9  1  0\n+ 11  2  1  0\n+ 11 10  2  0\n+ 11  6  1  0\n+M  END\n+$$$$\n+\n+     RDKit          3D\n+\n+ 11 12  0  0  0  0  0  0  0  0999 V2000\n+   22.7770    9.1670   24.9740 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.4280   10.0140   24.0880 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.6770   11.3690   24.2670 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.2930   12.2600   23.2950 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.6430   11.7880   22.1650 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.2220   12.6270   21.1460 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   20.5740   12.1120   20.0440 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   20.3400   10.7540   19.9450 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   20.7580    9.9010   20.9470 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.4090   10.3980   22.0610 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.7960    9.5320   23.0070 N   0  0  0  0  0  0  0  0  0  0  0  0\n+  2  1  1  0\n+  3  2  2  0\n+  4  3  1  0\n+  5  4  2  0\n+  6  5  1  0\n+  7  6  2  0\n+  8  7  1  0\n+  9  8  2  0\n+ 10  9  1  0\n+ 10  5  1  0\n+ 11 10  2  0\n+ 11  2  1  0\n+M  END\n+$$$$\n+\n+     RDKit          3D\n+\n+ 15 16  0  0  0  0  0  0  0  0999 V2000\n+   22.4510    9.0090   24.4670 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.5180   10.3550   24.1060 C   0  0  0  0  0  0  0  0  0  0'..b' 0  0  0\n+   22.2050    9.8930   22.6900 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.0060   12.0970   24.2220 S   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.8910   10.6980   21.5060 C   0  0  2  0  0  0  0  0  0  0  0  0\n+   22.8690    9.5480   24.8150 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.4800   12.1250   21.9040 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.5630   12.8770   22.6580 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.6270   10.3910   23.7940 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.1060   10.7640   20.5410 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   24.3720   10.2320   20.8590 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   25.4690   10.3640   20.0140 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   25.3420   11.0350   18.7800 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   24.1030   11.5640   18.3850 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.0130   11.4340   19.2760 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.8840   12.0230   18.8800 F   0  0  0  0  0  0  0  0  0  0  0  0\n+   26.4280   11.2380   18.0020 F   0  0  0  0  0  0  0  0  0  0  0  0\n+  4  1  1  6\n+  4  2  1  0\n+  6  4  1  0\n+  7  6  1  0\n+  7  3  1  0\n+  8  5  1  0\n+  8  2  2  0\n+  8  3  1  0\n+  9  4  1  0\n+ 10  9  2  0\n+ 11 10  1  0\n+ 12 11  2  0\n+ 13 12  1  0\n+ 14  9  1  0\n+ 14 13  2  0\n+ 15 14  1  0\n+ 16 12  1  0\n+M  END\n+$$$$\n+\n+     RDKit          3D\n+\n+ 11 12  0  0  0  0  0  0  0  0999 V2000\n+   23.8920   10.9750   19.7100 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.1430    9.6540   19.8400 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.7820   11.7530   20.9950 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.6770    9.8870   20.1680 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.1750   12.7870   22.6090 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.3660   10.1400   23.6660 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.3180   11.9530   21.3510 C   0  0  2  0  0  0  0  0  0  0  0  0\n+   21.5250   10.6490   21.4640 C   0  0  2  0  0  0  0  0  0  0  0  0\n+   22.7380    9.3100   24.6900 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   21.9210    9.6990   22.5310 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   22.5620   11.8400   24.1130 S   0  0  0  0  0  0  0  0  0  0  0  0\n+  2  1  1  0\n+  3  1  1  0\n+  4  2  1  0\n+  7  3  1  1\n+  7  5  1  0\n+  8  4  1  6\n+  8  7  1  0\n+  9  6  1  0\n+ 10  8  1  0\n+ 10  6  2  0\n+ 11  6  1  0\n+ 11  5  1  0\n+M  END\n+$$$$\n+\n+     RDKit          3D\n+\n+ 18 20  0  0  0  0  0  0  0  0999 V2000\n+   28.6970   10.5240   20.4750 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   27.9220   11.6800   20.9560 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   28.7880   12.6650   21.6350 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   27.0810   12.2010   19.9710 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   27.4190   13.2930   19.2740 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   26.6450   13.8320   18.3200 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   25.4810   13.2870   17.9980 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   25.0290   12.1840   18.6310 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.7860   11.6150   18.3040 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   23.3430   10.5040   18.9720 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   24.1080    9.9180   19.9810 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   25.3250   10.4360   20.3200 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   25.8200   11.5870   19.6640 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   27.1160   14.9710   17.6690 N   0  0  0  0  0  0  0  0  0  0  0  0\n+   27.3480   16.1150   18.5710 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   27.6660   17.2890   17.6050 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   26.8670   16.9430   16.3140 C   0  0  0  0  0  0  0  0  0  0  0  0\n+   26.3130   15.5200   16.5590 C   0  0  0  0  0  0  0  0  0  0  0  0\n+  2  1  1  0\n+  3  2  1  0\n+  4  2  1  0\n+  5  4  2  0\n+  6  5  1  0\n+  7  6  2  0\n+  8  7  1  0\n+  9  8  2  0\n+ 10  9  1  0\n+ 11 10  2  0\n+ 12 11  1  0\n+ 13 12  2  0\n+ 13  8  1  0\n+ 13  4  1  0\n+ 14  6  1  0\n+ 15 14  1  0\n+ 16 15  1  0\n+ 17 16  1  0\n+ 18 14  1  0\n+ 18 17  1  0\n+M  END\n+$$$$\n'