Re: [Open Babel] Submolecule from OBMol

2017-06-19 Thread Geoffrey Hutchison
> I was wrong, the "F" option retains bonds' order and it even works for 
> aromatic atoms.
> For future reference, to generate smiles of fragment by atom indices in 
> Python you can do:
> idxs = [1,2,3,4]
> mol.write('smi', opt={'F': ' '.join(map(str, idxs))}).strip()


Yes, this method was from Craig James for fragment-based fingerprints, IIRC. It 
would be nice to get it up into OBMol as well.

-Geoff--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss


Re: [Open Babel] Submolecule from OBMol

2017-06-19 Thread Maciek Wójcikowski
I was wrong, the "F" option retains bonds' order and it even works for
aromatic atoms.
For future reference, to generate smiles of fragment by atom indices in
Python you can do:

> idxs = [1,2,3,4]
> mol.write('smi', opt={'F': ' '.join(map(str, idxs))}).strip()



Pozdrawiam,  |  Best regards,
Maciek Wójcikowski
mac...@wojcikowski.pl

2017-06-19 17:19 GMT+02:00 Maciek Wójcikowski :

> No worries :) I planned to do Chem.FindAtomEnvironmentOfRadiusN() and
> Chem.PathToSubMol() in RDKit, but the function you've suggested is also
> feasible.
>
> @Geoff - the smiles fragment does not perserve any bond information from
> what I've tested so far.
>
> 
> Pozdrawiam,  |  Best regards,
> Maciek Wójcikowski
> mac...@wojcikowski.pl
>
> 2017-06-19 17:12 GMT+02:00 Andrew Dalke :
>
>> Me:
>> > Perhaps you want Chem.MolFragmentToSmiles(mol, atomsToUse=idxs)?
>> >
>> > http://www.rdkit.org/docs-beta/api/rdkit.Chem.rdmolfiles-
>> module.html#MolFragmentToSmiles
>>
>> Err, umm, *blush*. Forgot which list I was reading.
>>
>> [Andrew! It says it right in the subject line! :]
>>
>> Andrew
>> da...@dalkescientific.com
>>
>>
>> 
>> --
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> ___
>> OpenBabel-discuss mailing list
>> OpenBabel-discuss@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>>
>
>
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss


Re: [Open Babel] Submolecule from OBMol

2017-06-19 Thread Maciek Wójcikowski
No worries :) I planned to do Chem.FindAtomEnvironmentOfRadiusN() and
Chem.PathToSubMol() in RDKit, but the function you've suggested is also
feasible.

@Geoff - the smiles fragment does not perserve any bond information from
what I've tested so far.


Pozdrawiam,  |  Best regards,
Maciek Wójcikowski
mac...@wojcikowski.pl

2017-06-19 17:12 GMT+02:00 Andrew Dalke :

> Me:
> > Perhaps you want Chem.MolFragmentToSmiles(mol, atomsToUse=idxs)?
> >
> > http://www.rdkit.org/docs-beta/api/rdkit.Chem.rdmolfiles-module.html#
> MolFragmentToSmiles
>
> Err, umm, *blush*. Forgot which list I was reading.
>
> [Andrew! It says it right in the subject line! :]
>
> Andrew
> da...@dalkescientific.com
>
>
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> ___
> OpenBabel-discuss mailing list
> OpenBabel-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss


Re: [Open Babel] Submolecule from OBMol

2017-06-19 Thread Geoffrey Hutchison
> If it's a disconnected portion of the molecule, and you wanted to
> write a smiles, there is a fragment option for the smiles writer that
> you could use.

It doesn't have to be a disconnected portion. That feature to the SMILES writer 
will take a bit mask for the fragment -- it can be any combination of atoms as 
a mask onto the OBMol.

-Geoff
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss


Re: [Open Babel] Submolecule from OBMol

2017-06-19 Thread Andrew Dalke
On Jun 19, 2017, at 16:39, Maciek Wójcikowski  wrote:
> 
> I'm trying to get back the ECFP environments, most preferably as smiles. So 
> it's literally a list of connected atoms.
> 
> The dumb solution goes as follows:
> 
> def submol(mol, idxs):

Perhaps you want Chem.MolFragmentToSmiles(mol, atomsToUse=idxs)?

http://www.rdkit.org/docs-beta/api/rdkit.Chem.rdmolfiles-module.html#MolFragmentToSmiles




Andrew
da...@dalkescientific.com



--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss


Re: [Open Babel] Submolecule from OBMol

2017-06-19 Thread Maciek Wójcikowski
I'm trying to get back the ECFP environments, most preferably as smiles. So
it's literally a list of connected atoms.

The dumb solution goes as follows:

def submol(mol, idxs):
> mol_clone = mol.clone
> mol_clone.OBMol.BeginModify()
> delete_atoms = []
> for i in reversed(range(len(mol.atoms))):
> if i in idxs:
> continue
> delete_atoms.append(mol_clone.OBMol.GetAtomById(i))
> for atom in delete_atoms:
> mol_clone.OBMol.DeleteAtom(atom)
> mol_clone.OBMol.BeginModify()
> return mol_clone



Pozdrawiam,  |  Best regards,
Maciek Wójcikowski
mac...@wojcikowski.pl

2017-06-19 15:53 GMT+02:00 Noel O'Boyle :

> This would be a useful API function.
>
> If it's a disconnected portion of the molecule, and you wanted to
> write a smiles, there is a fragment option for the smiles writer that
> you could use.
>
> - Noel
>
> On 17 June 2017 at 21:44, Maciek Wójcikowski 
> wrote:
> > Hi all,
> >
> > Quick question: I have OBMol and want to create a sub-molecule from a
> subset
> > of atoms given by atom/bond indices. Is there a clever way to do it in
> > OpenBabel? I'm aware that I can make a copy and prune the unwanted atoms
> ;)
> >
> > 
> > Pozdrawiam,  |  Best regards,
> > Maciek Wójcikowski
> > mac...@wojcikowski.pl
> >
> > 
> --
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > ___
> > OpenBabel-discuss mailing list
> > OpenBabel-discuss@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
> >
>
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss


Re: [Open Babel] Submolecule from OBMol

2017-06-19 Thread Maciek Wójcikowski
The last BeginModify should be EndModify.


Pozdrawiam,  |  Best regards,
Maciek Wójcikowski
mac...@wojcikowski.pl

2017-06-19 16:39 GMT+02:00 Maciek Wójcikowski :

> I'm trying to get back the ECFP environments, most preferably as smiles.
> So it's literally a list of connected atoms.
>
> The dumb solution goes as follows:
>
> def submol(mol, idxs):
>> mol_clone = mol.clone
>> mol_clone.OBMol.BeginModify()
>> delete_atoms = []
>> for i in reversed(range(len(mol.atoms))):
>> if i in idxs:
>> continue
>> delete_atoms.append(mol_clone.OBMol.GetAtomById(i))
>> for atom in delete_atoms:
>> mol_clone.OBMol.DeleteAtom(atom)
>> mol_clone.OBMol.BeginModify()
>> return mol_clone
>
>
> 
> Pozdrawiam,  |  Best regards,
> Maciek Wójcikowski
> mac...@wojcikowski.pl
>
> 2017-06-19 15:53 GMT+02:00 Noel O'Boyle :
>
>> This would be a useful API function.
>>
>> If it's a disconnected portion of the molecule, and you wanted to
>> write a smiles, there is a fragment option for the smiles writer that
>> you could use.
>>
>> - Noel
>>
>> On 17 June 2017 at 21:44, Maciek Wójcikowski 
>> wrote:
>> > Hi all,
>> >
>> > Quick question: I have OBMol and want to create a sub-molecule from a
>> subset
>> > of atoms given by atom/bond indices. Is there a clever way to do it in
>> > OpenBabel? I'm aware that I can make a copy and prune the unwanted
>> atoms ;)
>> >
>> > 
>> > Pozdrawiam,  |  Best regards,
>> > Maciek Wójcikowski
>> > mac...@wojcikowski.pl
>> >
>> > 
>> --
>> > Check out the vibrant tech community on one of the world's most
>> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> > ___
>> > OpenBabel-discuss mailing list
>> > OpenBabel-discuss@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>> >
>>
>
>
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss


Re: [Open Babel] Submolecule from OBMol

2017-06-19 Thread Noel O'Boyle
This would be a useful API function.

If it's a disconnected portion of the molecule, and you wanted to
write a smiles, there is a fragment option for the smiles writer that
you could use.

- Noel

On 17 June 2017 at 21:44, Maciek Wójcikowski  wrote:
> Hi all,
>
> Quick question: I have OBMol and want to create a sub-molecule from a subset
> of atoms given by atom/bond indices. Is there a clever way to do it in
> OpenBabel? I'm aware that I can make a copy and prune the unwanted atoms ;)
>
> 
> Pozdrawiam,  |  Best regards,
> Maciek Wójcikowski
> mac...@wojcikowski.pl
>
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> ___
> OpenBabel-discuss mailing list
> OpenBabel-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss