def _getDescriptors(data, ds, loadMol=True, useRDKitChemistry=True): if ds: ds = ds.split(',') return _apply( _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry), _desc_list, ds)
def _removeHs(data): mols = _parseMolData(data, loadMol=False, useRDKitChemistry=False) ms = [] for molblock in mols: mol = parse_molblock(molblock, useRDKitChemistry=False) props = molblock.split("M END")[1].strip() props = props if len(props) > 1 else None Chem.FastFindRings(mol) mol.UpdatePropertyCache(strict=False) Chem.AssignAtomChiralTagsFromStructure(mol) Chem.AssignStereochemistry(mol, cleanIt=True, force=True) ms.append((remove_hs_from_mol(mol), props)) return _getSDFString(ms)
def _mcs(data, asSmiles, atomCompare, bondCompare, threshold, ringMatchesRingOnly, completeRingsOnly, loadMol=False, useRDKitChemistry=False, isomericSmiles=False, canonical=True, kekuleSmiles=False): ms = _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry) if not ms: return if len(ms) == 1: if asSmiles: return Chem.MolToSmiles(ms[0]) else: return Chem.MolToSmarts(ms[0]) if threshold: threshold = float(threshold) try: mcs = MCS.FindMCS(ms, atomCompare=atomCompare, bondCompare=bondCompare, ringMatchesRingOnly=ringMatchesRingOnly, completeRingsOnly=completeRingsOnly, threshold=threshold) except TypeError: ac = MCS.AtomCompare.CompareAny if hasattr(MCS.AtomCompare, atomCompare): ac = getattr(MCS.AtomCompare, atomCompare) bc = MCS.BondCompare.CompareOrder if hasattr(MCS.BondCompare, bondCompare): bc = getattr(MCS.BondCompare, bondCompare) th = 1.0 if threshold: th = threshold mcs = MCS.FindMCS(ms, atomCompare=ac, bondCompare=bc, ringMatchesRingOnly=ringMatchesRingOnly, completeRingsOnly=completeRingsOnly, threshold=th ) if hasattr(mcs, 'smarts'): res = mcs.smarts else: res = mcs.smartsString if asSmiles: p = Chem.MolFromSmarts(res) for m in ms: if m.HasSubstructMatch(p): match = m.GetSubstructMatch(p) res = Chem.MolFragmentToSmiles(m, atomsToUse=match, isomericSmiles=isomericSmiles, canonical=canonical, kekuleSmiles=kekuleSmiles) break return res
def _ctab2svg(data, size, loadMol=True, useRDKitChemistry=False, kekulize=False, atomMapNumber=False, computeCoords=False): return _mols2svg(_parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry), size, kekulize=kekulize, atomMapNumber=atomMapNumber, computeCoords=computeCoords)
def _sdf2SimilarityMapSVG(data, width=500, height=500, radius=2, fingerprint='morgan', loadMol=True, useRDKitChemistry=True, format='svg'): return _similarityMapSVG(_parseMolData( data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry), width=width, height=height, radius=radius, fingerprint=fingerprint, format=format)
def _highlightCtabFragmentSVG(data, smarts, size, loadMol=True, useRDKitChemistry=False, kekulize=False, atomMapNumber=False, computeCoords=False, force=False): mols = _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry) matches = _getMatches(mols, smarts, force) return _mols2svg(mols, size, kekulize=kekulize, atomMapNumber=atomMapNumber, computeCoords=computeCoords, highlightAtomLists=matches)
def _ctab22D(data, loadMol=True, useRDKitChemistry=False): mols = _parseMolData(data, loadMol=True, useRDKitChemistry=False) optimisedMols = _apply(mols, _2D22D) return _getSDFString(optimisedMols)
def _get_alerts(data, loadMol=True, useRDKitChemistry=False): mols = _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry) res = _apply(mols, get_matches) return json.dumps(res)
def _ctab2inchi(data, loadMol=False, useRDKitChemistry=False): return '\n'.join(_apply(_parseMolData(data, loadMol=False, useRDKitChemistry=False), Chem.MolBlockToInchi))
def _ctab2smiles(data, loadMol=True, useRDKitChemistry=True, delimiter=' ', nameHeader='Name', includeHeader=True): return _getSMILESString(_parseMolData(data, loadMol=True, useRDKitChemistry=True), delimiter=delimiter, nameHeader=nameHeader, includeHeader=includeHeader)
def _ctab2smarts(data, loadMol=True, useRDKitChemistry=True): return _getSMARTSString(_parseMolData(data, loadMol=True, useRDKitChemistry=True))
def _is3D(data, loadMol=True, useRDKitChemistry=True): mols = _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry) flags = _apply(mols, _check3Dcoords) return json.dumps(flags)
def _getChemblDescriptors(data, loadMol=True, useRDKitChemistry=True): return _apply( _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry), _chembl_desc_list)
def _check(data, loadMol=False, useRDKitChemistry=False): mols = _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry) res = _apply(mols, checker.check_molblock) return json.dumps(res)
def _exclude(data, loadMol=True, useRDKitChemistry=False): mols = _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry) res = _apply(mols, exclude_flag, False) return json.dumps(res)
def _standardize(data, loadMol=False, useRDKitChemistry=False): mols = _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry) res = _apply(mols, standardizer.standardize_molblock) res_list = [{'standard_molblock': m} for m in res] return json.dumps(res_list)
def _get_parent(data, loadMol=False, useRDKitChemistry=False): mols = _parseMolData(data, loadMol=loadMol, useRDKitChemistry=useRDKitChemistry) res = _apply(mols, standardizer.get_parent_molblock) res_dict = [{k: v for e in m for k, v in zip(('parent_molblock', 'exclude'), m)} for m in res] return json.dumps(res_dict)