That seems to be it - SWIG was burying what was what into a collection of
Vect objects, so I got confused. It seems to work now.


On Thu, 29 Nov 2018 at 16:34, Paolo Tosco <paolo.tosco.m...@gmail.com>
wrote:

> Hi James,
>
> I think the problem here is that you are interpreting the index pairs in
> each match returned by getSubstructMatches() as if they were the atom
> indices that form a bond. Instead, each pair corresponds to a
> (queryAtomIdx, molAtomIdx) pair, and has nothing to do with bonds:
>
>
> http://rdkit.org/docs/cppapi/namespaceRDKit.html#a254b4d13317dfb319a09a8c2c8fbd435
>
> Furthermore, your molecule only has implicit hydrogen atoms, so you
> should not expect any bonds involving H unless you add explicit hydrogen
> atoms.
>
> HTH, cheers
> p.
>
> On 11/29/18 12:01, James Wallace wrote:
> > I'm trying to use the Java wrapper to do a basic molecule
> > fragmentation, greedily matching against anything that fits the SMARTS
> > "[*;R]-;!@[*]" (effectively any regular bond that isn't part of a ring
> > system)
> >
> > As a test case, I'm using a structure with a few obvious bonds that
> > can be broken, namely (in SMILES)
> > OC1CCC2CCC(OCCCCC3CCC(C4CCCC(Cl)C4Cl)CC3)CC2C1 .
> > As the Java Wrapper uses some slightly unusual functions for the
> > regular runtimes, I have included a toy example:
> >
> >                  Set<String> output = new HashSet<String>();
> >
> >                  RWMol mol2 = RWMol.MolFromSmiles(input, 0, true);
> >                  ROMol patt = RWMol.MolFromSmarts("[*;R]-;!@[*]");
> >
> >                  Match_Vect_Vect matches =
> mol2.getSubstructMatches(patt);
> >
> >                  for (int i = 0; i < matches.size(); i++)
> >                  {
> >                          Match_Vect match = matches.get(i);
> >                          for (int j = 0; j < match.size(); j++)
> >                          {
> >                                  //lazy cloning
> >                                  RWMol mol_to_manipulate =
> > RWMol.MolFromSmiles(input, 0, true);
> >                                  Int_Pair pair = match.get(j);
> >
> >                                  // Find bond and remove
> >
> > mol_to_manipulate.removeBond(pair.getFirst(), pair.getSecond());
> >
> > System.out.println(mol_to_manipulate.MolToSmiles());
> >                                  mol_to_manipulate.canonicalizeMol();
> >                                  String[] temp =
> > mol_to_manipulate.MolToSmiles().split("\\.");
> >
> >                                  for (String tmp : temp)
> >                                  {
> >                                          if (tmp.length() > 1)
> >                                          {
> >                                                  if (!tmp.equals(input))
> >                                                  {
> >                                                          output.add(tmp);
> >                                                  }
> >                                          }
> >                                  }
> >                          }
> >                  }
> >
> >                  return output;
> >          }
> >
> > When I run the selection on this molecule, I see the bond between atom
> > 0 and 1 (the terminal OH) from both directions (0,1 and 1,0). However,
> > as the iteration continues, the matches seem to no longer relate to
> > meaningful bonds (0,7 , 1,8 , 0, 13 , 1,12 , 0,16 ,1,17 etc), and an
> > attempt to remove them doesn't work as there is no bond to link them.
> > Am I making some mistake in my handling of the query, or is there
> > something going on with the matches (I'm making sure to load in a new
> > molecule each time for the bond removal, but I'm struggling to see how
> > the mapping follows).
> >
> >
> > _______________________________________________
> > Rdkit-discuss mailing list
> > Rdkit-discuss@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
>
>
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to