Unify macrolactone detection, numbering, fragmentation, and splicing under the installable macro_lactone_toolkit package. - replace legacy src.* modules with the new package layout - add analyze/number/fragment CLI entrypoints and pixi tasks - migrate tests, README, and scripts to the new package API
35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
|
|
from rdkit import Chem
|
|
|
|
from macro_lactone_toolkit.splicing import (
|
|
activate_fragment,
|
|
prepare_macrolactone_scaffold,
|
|
splice_molecule,
|
|
)
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description="Splice a fragment onto a prepared macrolactone scaffold.")
|
|
parser.add_argument("--scaffold-smiles", required=True)
|
|
parser.add_argument("--fragment-smiles", required=True)
|
|
parser.add_argument("--position", required=True, type=int)
|
|
parser.add_argument("--ring-size", type=int, default=None)
|
|
parser.add_argument("--strategy", default="smart")
|
|
args = parser.parse_args()
|
|
|
|
scaffold, _ = prepare_macrolactone_scaffold(
|
|
args.scaffold_smiles,
|
|
positions=[args.position],
|
|
ring_size=args.ring_size,
|
|
)
|
|
fragment = activate_fragment(args.fragment_smiles, strategy=args.strategy)
|
|
product = splice_molecule(scaffold, fragment, position=args.position)
|
|
print(Chem.MolToSmiles(product, isomericSmiles=True))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|