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
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.