Skip to content

Commit a03c51f

Browse files
author
Oliver Scott
committed
Add pre-processing options to CLI
1 parent 1a5e2b4 commit a03c51f

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

scaffoldgraph/scripts/generate.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,17 @@
1818
Input file: {input}
1919
Output file: {output}
2020
Maximum rings: {max_r}
21+
Flatten isotopes: {isotope}
22+
Keep largest Fragment: {fragment}
23+
Discharge & Deradicalize: {discharge}
2124
"""
2225

2326
stop_message = """
2427
ScaffoldGraph Generation Complete:
2528
Molecules written: {molecules}
2629
Scaffolds written: {scaffolds}
30+
Molecules filtered: {filtered}
31+
Linear molecules: {linear}
2732
Time elapsed: {time}
2833
2934
Output saved @ {output}
@@ -64,7 +69,10 @@ def generate_cli(args):
6469
command=graph_name,
6570
input=args.input,
6671
output=args.output,
67-
max_r=args.max_rings
72+
max_r=args.max_rings,
73+
isotope=args.flatten_isotopes,
74+
fragment=args.keep_largest_fragment,
75+
discharge=args.discharge_and_deradicalize,
6876
)
6977
)
7078

@@ -78,13 +86,19 @@ def generate_cli(args):
7886
ring_cutoff=args.max_rings,
7987
progress=args.silent is False,
8088
zipped=zipped,
89+
flatten_isotopes=args.flatten_isotopes,
90+
keep_largest_fragment=args.keep_largest_fragment,
91+
discharge_and_deradicalize=args.discharge_and_deradicalize,
8192
prioritization_rules=ruleset,
8293
)
8394
elif fmt == 'SMI':
8495
sg = graph_cls.from_smiles_file(
8596
args.input,
8697
ring_cutoff=args.max_rings,
8798
progress=args.silent is False,
99+
flatten_isotopes=args.flatten_isotopes,
100+
keep_largest_fragment=args.keep_largest_fragment,
101+
discharge_and_deradicalize=args.discharge_and_deradicalize,
88102
prioritization_rules=ruleset,
89103
)
90104
else:
@@ -93,12 +107,16 @@ def generate_cli(args):
93107
tsv.write_tsv(sg, args.output, write_ids=False)
94108
logger.info(f'{graph_name} Graph Generation Complete...')
95109
elapsed = datetime.timedelta(seconds=round(time.time() - start))
110+
filtered = sg.graph['num_filtered']
111+
linear = sg.graph['num_linear']
96112

97113
if not args.silent:
98114
print(
99115
stop_message.format(
100116
molecules=sg.num_molecule_nodes,
101117
scaffolds=sg.num_scaffold_nodes,
118+
filtered=filtered,
119+
linear=linear,
102120
time=elapsed,
103121
output=args.output
104122
)

scaffoldgraph/scripts/run.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,19 @@ def parent_parser():
8080

8181

8282
def generate_parent_parser():
83-
"""Creates a parent parser for generate commands (Network, Tree)."""
83+
"""Creates a parent parser for generate commands (Network, Tree, HierS)."""
8484
parser = argparse.ArgumentParser(add_help=False)
8585
parser.add_argument('input', help='input file (SDF, SMILES)')
8686
parser.add_argument('output', help='output file path')
8787
parser.add_argument('--max-rings', '-m', type=int, default=10, metavar='',
8888
help='ignore molecules with # rings > (default: 10)')
89+
parser.add_argument('--flatten-isotopes', '-i', action='store_true',
90+
help='remove remove specific isotopes when initializing the scaffold')
91+
parser.add_argument('--keep_largest_fragment', '-f', action='store_true',
92+
help='when encountering molecules containing disconnected fragments initialize'
93+
' the scaffold from only the largest disconnected fragment')
94+
parser.add_argument('--discharge-and-deradicalize', '-d', action='store_true',
95+
help='remove charges and radicals when initializing the scaffold')
8996
return parser
9097

9198

0 commit comments

Comments
 (0)