Afegir el títol de la molècula a l’sdf amb pybel

Pybel és un conjunt de classes escrites en Python per treballar amb l’OpenBabel. És una eina molt potent que et permet fer ús de totes les utilitats de l’OpenBabel des de Python. Jo l’empro molt i a diari!

Per, per exemple, llegir un smile i escriure’n un sdf només cal fer el següent:

?View Code PYTHON
1
2
3
4
5
6
7
8
9
10
11
12
#Importar el pybel
from pybel import *
 
#Ara llegirem l'smile
mol = readstring('smi', 'CCCC(Cl)CCF')
 
#Obrim el fitxer de sortida
out =Outputfile('sdf','NomDelFitxer.sdf')
#Hi escrivim i tanquem
 
out.write(mol)
out.close()

Això va molt bé però m’he trobat que escriu sdfs sense posar cap títol (nom) a les molècules. Pel que ho estic emprant ara però, necessito posar els InchiK com a títol de cada molècula. Hi he estat hores i hores, intentant entendre la classe “Outputfile”, però he desistit, no crec que es pugui fer, així, directament.

Com a alternativa he decidit emprar els mètodes natius de Python per escriure fitxers, barrejat amb el Pybel (l’opció molecula.write). Així doncs:

?View Code PYTHON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#Importar el pybel
from pybel import *
 
#Ara llegirem l'smile
mol = readstring('smi', 'CCCC(Cl)CCF')
 
#Obrim el fitxer de sortida (tal com es fa amb Python). Li diem que és per escriure
out = open('NomDelFitxer.sdf','w')
 
#Hi escrivim el títol
out.write('TítolDeLaMolecula')
 
#I ara, la molècula
out.write(mol.write('sdf'))
 
#Finalment, tanquem
out.close()

De moment, és l’única solució que he trobat i va prou bé.

3 thoughts on “Afegir el títol de la molècula a l’sdf amb pybel

  1. Una proposta alternativa:

    from pybel import *
    mol = readstring(‘smi’, ‘CCCC(Cl)CCF’)
    mol.OBMol.SetTitle(“Nom de la molecula”)
    mol.write(“sdf”, “fitxer.sdf”)

    No és ben bé directament pequè s’ha de tocar la classe OBMol, però fa el fet.

  2. @Xa5i, Alfons: You could also use mol.title = “Nom de la molecula”. The list of attributes of molecules is displayed if you type “help(pybel.Molecule)”.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>