Coverage for chempropstereo/stereochemistry/all.py: 100%

6 statements  

« prev     ^ index     » next       coverage.py v7.7.1, created at 2025-03-22 21:04 +0000

1"""Module for tagging stereogenic groups in molecules. 

2 

3.. module:: stereochemistry.all 

4.. moduleauthor:: Charlles Abreu <craabreu@mit.edu> 

5""" 

6 

7from rdkit import Chem 

8 

9from .cistrans import tag_cis_trans_stereobonds 

10from .tetrahedral import tag_tetrahedral_stereocenters 

11 

12 

13def tag_stereogroups(mol: Chem.Mol, force: bool = False) -> None: 

14 r"""Add canonical stereochemistry information to stereogenic groups in a molecule. 

15 

16 The currently supported stereogenic groups are: 

17 

18 - tetrahedral stereocenters 

19 - cis/trans stereobonds 

20 

21 Parameters 

22 ---------- 

23 mol 

24 The molecule whose stereogenic groups are to be tagged. 

25 force 

26 Whether to overwrite existing chiral tags (default is False). 

27 

28 Examples 

29 -------- 

30 >>> from rdkit import Chem 

31 >>> from chempropstereo import stereochemistry 

32 >>> mol = Chem.MolFromSmiles("C\C(=C(O)/C=C(/N)O)[C@@H]([C@H](N)O)O") 

33 >>> stereochemistry.tag_stereogroups(mol) 

34 >>> for atom in mol.GetAtoms(): 

35 ... direction = stereochemistry.ScanDirection.get_from(atom) 

36 ... if direction != stereochemistry.ScanDirection.NONE: 

37 ... print(stereochemistry.describe_stereocenter(atom)) 

38 C8 (CCW) O12 C9 C1 

39 C9 (CW) O11 N10 C8 

40 >>> for bond in mol.GetBonds(): 

41 ... arrangement = stereochemistry.StemArrangement.get_from(bond) 

42 ... if arrangement != stereochemistry.StemArrangement.NONE: 

43 ... print(stereochemistry.describe_stereobond(bond)) 

44 C0 C8 C1 (CIS) C2 C4 O3 

45 C2 C4 (TRANS) C5 N6 O7 

46 

47 """ 

48 tag_tetrahedral_stereocenters(mol, force) 

49 tag_cis_trans_stereobonds(mol, force)