El hilo se indica en el comentario de @andselisk se remonta a julio de 2014. Puede ser condensado a
"Una subestructura consultar con openbabel
requiere una buena INTELIGENCIA en la cadena. En caso de que usted no tiene uno, a menudo una buena SONRISAS cadena puede ser utilizada en lugar de una INTELIGENCIA en la cadena, también."
Un cheque por un lugar simple estructura molecular de (benzylsulfinyl)benceno
![enter image description here]()
hay más de una manera de describirlo, ya sea en forma de una INTELIGENCIA, o una cadena de SONRISAS. En consecuencia, las cadenas de por sí a veces difieren de uno a otro. En consecuencia, el reconocimiento de las entradas relevantes en la colección de .mol2
con openbabel
a veces fracasó.
A continuación me summerize (estado: 2019-May-15) algunas experiencias: la cadena ofrecidas por el software, su tipo y origen; finalmente, si funciona (es decir, entradas recuperado), o no (es decir, las entradas no se recuperan) en un pequeño conjunto de pruebas de 419 modelo de datos y 7 pertinentes éxitos.
|-------------------------------------+--------+--------------------+--------|
| entry | type | source | status |
|-------------------------------------+--------+--------------------+--------|
| c1ccccc1-[#6]-[#16](-c2ccccc2)=[#8] | SMARTS | pubChemSketcher | works |
| C1=CC=CC=C1C[S](C2=CC=CC=C2)=O | SMILES | pubChemSketcher | fails |
|-------------------------------------+--------+--------------------+--------|
| O=S(Cc1ccccc1)c2ccccc2 | SMILES | ACD ChemSketch | works |
|-------------------------------------+--------+--------------------+--------|
| C1=CC=C(C=C1)CS(C(C=CC1)=CC=1)=O | SMILES | ChemDoodle | fails |
|-------------------------------------+--------+--------------------+--------|
| O=S(C1=CC=CC=C1)CC2=CC=CC=C2 | SMILES | ChemDraw Pro12 | fails |
|-------------------------------------+--------+--------------------+--------|
| O=S(CC1=CC=CC=C1)C1=CC=CC=C1 | SMILES | Marvin JS | fails |
|-------------------------------------+--------+--------------------+--------|
| O=S(Cc1ccccc1)c2ccccc2 | SMILES | Peter Ertl JSME | works |
|-------------------------------------+--------+--------------------+--------|
| c1cccc(c1)CS(=O)c1ccccc1 | SMILES | openbabel, default | works |
| c1ccc(cc1)CS(=O)c1ccccc1 | SMILES | dito, universal | works |
| c1ccc(cc1)CS(=O)c1ccccc1 | SMILES | dito, Inchified | works |
| O=S(c1ccccc1)Cc1ccccc1 | SMILES | dito, canonical | works |
|-------------------------------------+--------+--------------------+--------|
PubChem Sketcher: version 2.4, https://pubchem.ncbi.nlm.nih.gov/edit2/index.html
ACD ChemSketch: Freeeware version 2015
ChemDoodle: version 8.1.0, 2019 and webcomponents,
https://web.chemdoodle.com/demos/sketcher/
ChemDraw: version 12 Pro, (then) CambridgeSoft, 2009
Marvin JS: ChemAxon, v19.11.0, on-line test at
https://marvinjs-demo.chemaxon.com/latest/
Its SMARTS (very differently written) equally failed:
O=S([#6]-[#6]-1=[#6]-[#6]=[#6]-[#6]=[#6]-1)[#6]-1=[#6]-[#6]=[#6]-[#6]=[#6]-1
Peter Ertl JSME: https://peter-ertl.com/jsme/JSME_2017-02-26/
Además:
El enfoque mencionado en la pregunta básicamente llamadas babel
(o òpenbabel
) como una iteración por cada archivo. Especialmente si el conjunto de datos se accede a más de una vez para identificar las diferentes estructuras, y / o se compone de varios miles de modelos, esto puede ser tediosamente lento. En lugar de ello, vale la pena "paquete", la información de la persona
babel *.mol2 mymols.sdf --unique
la creación de un recipiente como un multi-modelo .mol2
(esto también funciona con .xyz
como archivos de entrada). El .sdf
puede ser indexado
babel mymols.sdf -ofs
por las huellas (cf. el capítulo 5 de este manual). Ahora, muy rápidamente los nombres de los archivos sobre un strucure que coincidan con la consulta de la subestructura son identificados, por ejemplo,
babel mymols.fs -ifs -s"O=S(c1ccccc1)Cc1ccccc1" results.smi -xt
y se almacena en results.smi
. En consecuencia, cualquier trabajo puede centrarse en ellos.