Hi Markus,
Concatenating SMILES strings may not be the best way to solve this problem.
I would just create a bond between the two atoms from Python and set the
charges to zero, and adjust hydrogens (if necessary).
But since you asked...:-)
$ obabel -:"O=C1CCC(=O)[N-]1" -xf 7 -osmi
[N-]1C(=O)CCC1=O
$ obabel -:"C1=C2CCCN3CCC(=C23)C=C1[CH+]C1=CC2=C3C(=C1)CCCN3CC2" -xl 13
-osmi
c1c2CCCN3CCc(c23)cc1[C+](c1cc2c3c(c1)CCCN3CC2)
With Python's string replace(), replace [N-] with N, and [C+] with C
(assuming only a single instance of each in the strings), then concatenate:
c1c2CCCN3CCc(c23)cc1C(c1cc2c3c(c1)CCCN3CC2)N1C(=O)CCC1=O
You might be wondering where I got the numbers 7 and 13 from. Well, I just
counted atoms in the SMILES string from the left starting at 1. If using
Python, just get the Idx() of the atom that is a nitrogen and has a
positive charge (and similarly for the C+).
Regards,
- Noel
On Sun, 17 Nov 2019 at 16:58, Markus Grimm via OpenBabel-discuss <
openbabel-discuss@lists.sourceforge.net> wrote:
> Hello everyone,
>
> I'm trying to concatenate two smiles to get the product of some reactions.
> In general, it is mostly clear where the bond is formed. An example:
>
> Nucleophile: O=C1CCC(=O)[N-]1
> Substrate: C1=C2CCCN3CCC(=C23)C=C1[CH+]C1=CC2=C3C(=C1)CCCN3CC2
> I want to rearrange the smiles always under some conditions. In this
> example depending on where the charge is located respectively. So the bond
> is formed between the [N-] and the [CH+]. I know openbabel can reorder the
> smiles based on the atom number. But I'm clueless about how to use it. Is
> there any way how to implement my problem in pybel?
>
> Best regards,
> Markus
> ___
> OpenBabel-discuss mailing list
> OpenBabel-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>
___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss