rdkit.Chem.Fraggle.FraggleSim module — The RDKit 2016.09.1 documentation

# rdkit.Chem.Fraggle.FraggleSim module

## Fragmentation algorithm

identify acyclic bonds enumerate all single cuts make sure you chop off more that 1 atom keeps bits which are >60% query mol enumerate all double cuts keeps bits with 1 attachment point (i.e throw middle bit away) need to be >60% query mol

identify exocyclic bonds enumerate all single “ring” cuts Check if it results in more that one component keep correct bit if >40% query mol

enumerate successful “rings” cuts with an acyclic cut Check if it results in more that one component keep correct if >60% query mol

`rdkit.Chem.Fraggle.FraggleSim.` `GetFraggleSimilarity`(queryMol, refMol, tverskyThresh=0.8)

  return the Fraggle similarity between two molecules

      >>> q = Chem.MolFromSmiles('COc1cc(CN2CCC(NC(=O)c3cncc(C)c3)CC2)c(OC)c2ccccc12')
      >>> m = Chem.MolFromSmiles('COc1cc(CN2CCC(NC(=O)c3ccccc3)CC2)c(OC)c2ccccc12')
      >>> sim,match = GetFraggleSimilarity(q,m)
      >>> sim
      0.980...
      >>> match
      '[*]C1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1'

      >>> m = Chem.MolFromSmiles('COc1cc(CN2CCC(Nc3nc4ccccc4s3)CC2)c(OC)c2ccccc12')
      >>> sim,match = GetFraggleSimilarity(q,m)
      >>> sim
      0.794...
      >>> match
      '[*]C1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1'

      >>> q = Chem.MolFromSmiles('COc1ccccc1')
      >>> sim,match = GetFraggleSimilarity(q,m)
      >>> sim
      0.347...
      >>> match
      '[*]c1ccccc1'

`rdkit.Chem.Fraggle.FraggleSim.` `atomContrib`(subs, mol, tverskyThresh=0.8)

  atomContrib algorithm generate fp of query_substructs (qfp)

  loop through atoms of smiles
    For each atom Generate partial fp of the atom (pfp) Find Tversky sim of pfp in qfp If Tversky < 0.8, mark atom in smiles
  Loop through marked atoms

    If marked atom in ring - turn all atoms in that ring to * (aromatic) or Sc (aliphatic) For each marked atom

    > If aromatic turn to a * If aliphatic turn to a Sc

  Return modified smiles

`rdkit.Chem.Fraggle.FraggleSim.` `compute_fraggle_similarity_for_subs`(inMol, qMol, qSmi, qSubs, tverskyThresh=0.8)

`rdkit.Chem.Fraggle.FraggleSim.` `delete_bonds`(mol, bonds, ftype, hac)

  Fragment molecule on bonds and reduce to fraggle fragmentation SMILES. If none exists, returns None

`rdkit.Chem.Fraggle.FraggleSim.` `generate_fraggle_fragmentation`(mol, verbose=False)

  Create all possible fragmentations for molecule >>> q = Chem.MolFromSmiles(‘COc1cc(CN2CCC(NC(=O)c3cncc(C)c3)CC2)c(OC)c2ccccc12’) >>> fragments = generate_fraggle_fragmentation(q) >>> fragments = sorted([‘.’.join(sorted(s.split(‘.’))) for s in fragments]) >>> fragments

  > [‘[*]C(=O)NC1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1’,
  >   ‘[*]C(=O)c1cncc(C)c1.[*]C1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1’, ‘[*]C(=O)c1cncc(C)c1.[*]Cc1cc(OC)c2ccccc2c1OC’, ‘[*]C(=O)c1cncc(C)c1.[*]c1cc(OC)c2ccccc2c1OC’, ‘[*]C1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1’, ‘[*]C1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1.[*]c1cncc(C)c1’, ‘[*]Cc1cc(OC)c2ccccc2c1OC.[*]NC(=O)c1cncc(C)c1’, ‘[*]Cc1cc(OC)c2ccccc2c1OC.[*]c1cncc(C)c1’, ‘[*]N1CCC(NC(=O)c2cncc(C)c2)CC1.[*]c1cc(OC)c2ccccc2c1OC’, ‘[*]NC(=O)c1cncc(C)c1.[*]c1cc(OC)c2ccccc2c1OC’, ‘[*]NC1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1’, ‘[*]NC1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1.[*]c1cncc(C)c1’, ‘[*]c1c(CN2CCC(NC(=O)c3cncc(C)c3)CC2)cc(OC)c2ccccc12’, ‘[*]c1c(OC)cc(CN2CCC(NC(=O)c3cncc(C)c3)CC2)c(OC)c1[*]’, ‘[*]c1cc(CN2CCC(NC(=O)c3cncc(C)c3)CC2)c(OC)c2ccccc12’, ‘[*]c1cc(OC)c2ccccc2c1OC.[*]c1cncc(C)c1’]

`rdkit.Chem.Fraggle.FraggleSim.` `isValidRingCut`(mol)

  to check is a fragment is a valid ring cut, it needs to match the SMARTS: [$([#0][r].[r][#0]),$([#0][r][#0])]

`rdkit.Chem.Fraggle.FraggleSim.` `select_fragments`(fragments, ftype, hac)