nx_chem_descriptors.nx
buildroot/runtime/nx_chem_descriptors.nx
about
nx_chem_descriptors.nx -- C2.7 milestone: drug-likeness descriptors.
Counting primitives for Lipinski's Rule of Five + Veber-style drug-
likeness screening. All composable on the existing MolGraph + the
implicit-H valence inference (C2.3a).
Lipinski Ro5 (1997, Adv. Drug Deliv. Rev. 23:3-25):
- MW <= 500 Da
- logP <= 5 (DEFERRED to C2.8 -- Crippen-Wildman atom-type table)
- HBD <= 5 (count of N-H, O-H, S-H bonds)
- HBA <= 10 (count of N, O atoms)
Pass if at most 1 violation (Lipinski's original wording).
Veber 2002 (J. Med. Chem. 45:2615-2623):
- Rotatable bonds <= 10
- TPSA <= 140 Ų (DEFERRED to C2.8 -- Ertl-class atom-contribution table)
Honest gaps (DEFERRED):
- logP (Crippen-Wildman 1999): C2.8 ~70-atom-type lookup table
- TPSA (Ertl-Rohde-Selzer 2000): C2.8 ~40-pattern lookup table
- SSSR (Smallest Set of Smallest Rings): C2.7.1; current approx
aromatic-ring count assumes 6-membered rings
- PAINS / structural-alert SMARTS filters: C2.9 (composes on
substructure search which is also pending)
nx_safety_envelope:
intended_use: Lipinski/Veber drug-likeness screening for the
supplement-arc adulterant pre-filter; foundation
for nx_chem_label_claim evidence-checks
sil_target: SIL1
evidence: [C2.7 KAT in nx_chem_descriptors_test.nx with
reference molecules from Lipinski 1997 + Veber 2002]
verdict: BENCH-PENDING
dependencies 3 imports · 1 importers
imports: nx_chem.nxnx_chem_molecule.nxnx_chem_valence.nx
imported by: nx_chem_descriptors_test.nx
structs
| none |
consts
| 38 | const K_MAGIC_500000: i64 = 500000 |
functions
| 46 | func nx_chem_count_hbd(m: *MolGraph) -> nx_int |
| 71 | func nx_chem_count_hba(m: *MolGraph) -> nx_int |
| 100 | func nx_chem_descriptors_perceive_rings(m: *MolGraph) -> nx_int called by 1: parse_with_h |
| 246 | func nx_chem_descriptors_heavy_degree(m: *MolGraph, atom_idx: nx_int) -> nx_int called by 1: nx_chem_count_rotatable_bonds |
| 279 | func nx_chem_count_rotatable_bonds(m: *MolGraph) -> nx_int |
| 310 | func nx_chem_count_aromatic_atoms(m: *MolGraph) -> nx_int |
| 327 | func nx_chem_approx_aromatic_rings(m: *MolGraph) -> nx_int |
| 336 | func nx_chem_count_heavy_atoms(m: *MolGraph) -> nx_int |
| 355 | func nx_chem_lipinski_ro5_partial(m: *MolGraph, table: *Element) -> nx_int called by 2: i_lipinski_ethanol_passj_peroxide calls 3: nx_chem_mol_weight_q3nx_chem_count_hbdnx_chem_count_hba |
| 373 | func nx_chem_veber_partial(m: *MolGraph) -> nx_int |