Skip to content

Commit f3b3282

Browse files
committed
bin/molenc_panascan.py: added --rand-one
1 parent e21175e commit f3b3282

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

bin/molenc_panascan.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import argparse
1818
import rdkit
1919
import time
20+
import random
2021
from rdkit import Chem
2122
from rdkit.Chem import AllChem
2223
import sys
@@ -49,22 +50,33 @@ def positional_analog_scan(mol, smarts_patt = '[cH]',
4950
help = "molecules input file")
5051
parser.add_argument("-o", metavar = "output.smi", dest = "output_fn",
5152
help = "analogs output file")
53+
parser.add_argument("--rand-one", dest = "rand_one", action = "store_true",
54+
default = False,
55+
help = "output only one randomly-chosen analog \
56+
per input molecule")
5257
# parse CLI ----------------------------------------------
5358
if len(sys.argv) == 1:
5459
# user has no clue of what to do -> usage
5560
parser.print_help(sys.stderr)
5661
sys.exit(1)
5762
args = parser.parse_args()
5863
input_fn = args.input_fn
64+
rand_one = args.rand_one
5965
output = open(args.output_fn, 'w')
6066
count = 0
6167
# work ----------------------------------------------
6268
mol_supplier = RobustSmilesMolSupplier(input_fn)
6369
for name, mol in mol_supplier:
6470
analogs = positional_analog_scan(mol)
65-
for i, ana_smi in enumerate(analogs):
66-
print("%s\t%s_ANA%03d" % (ana_smi, name, i),
71+
if rand_one:
72+
l = list(analogs)
73+
ana_smi = random.choice(l)
74+
print("%s\t%s_ANA%03d" % (ana_smi, name, 0),
6775
file=output)
76+
else: # print them all
77+
for i, ana_smi in enumerate(analogs):
78+
print("%s\t%s_ANA%03d" % (ana_smi, name, i),
79+
file=output)
6880
count += 1
6981
after = time.time()
7082
dt = after - before

0 commit comments

Comments
 (0)