Logo Studenta

CEM193226

¡Este material tiene más páginas!

Vista previa del material en texto

.... _ ·• 
SÍNTESIS ORGÁNICA ASISTIDA POR COMPUTADORA 
Tesis presentada 
por 
EDUARDO ALEJANDRO TUBERT BROHMAN 
Presentada ante la Dirección Académica de la Universidad Virtual del Instituto 
Tecnológico y de Estudios Superiores de Monterrey como requisito parcial para 
optar al título de 
MAESTRO EN CIENCIAS COMPUTACIONALES 
MAYO DE 2001 
RESUMEN 
SÍNTESIS ORGÁNICA ASISTIDA POR COMPUTADORA 
MAYO DE 2001 
EDUARDO ALEJANDRO TUBERT BROHMAN 
INGENIERO EN ELECTRÓNICA Y COMUNICACIONES 
INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY 
Dirigida por el Dr. Carlos Rodríguez Lucatero y el M. en C. José Manuel Méndez 
Stivalet 
Esta tesis describe una aplicación de las Ciencias Computacionales al problema 
del diseño de síntesis en Química Orgánica. La síntesis orgánica busca obtener algún 
compuesto químico de interés a partir de materias primas disponibles en la naturaleza, 
aplicando una serie de transformaciones con reglas específicas. 
La Síntesis Orgánica Asistida por Computadora (CAOS por sus siglas en inglés, 
Computer Aided Organic Synthesis) involucra una serie de problemas interesantes 
desde el punto de vista de las Ciencias Computacionales, principalmente en las áreas 
de teoría de grafos, combinatoria, teoría de autómatas y lenguajes, y análisis de 
algoritmos. 
Durante el desarrollo de la tesis se diseñó e implementó un sistema de cómputo 
llamado OSET (Organic Synthesis and Exploration Too[). OSET utiliza una arquitectura 
cliente/servidor sobre Internet. Con el fin de facilitar la distribución del sistema, el cliente 
está escrito como un applet java. 
El servidor realiza la función de un motor de retrosíntesis, recibiendo una 
molécula objetivo y sugiriendo de qué precursores pudo haberse obtenido, y por medio 
de qué reacciones químicas. Para esto, el servidor necesita recopilar información 
química sobre la molécula. Algunos problemas particularmente interesantes que surgen 
durante este proceso son el reconocimiento de grupos funcionales y anillos; la 
detección de moléculas isomórficas, y su expresión en una notación lineal canónica. 
iv 
El servidor OSET cuenta con una base de datos de descripciones algorítmicas 
de procesos químicos llamados transformadas (equivalentes a reacciones químicas, 
pero en sentido inverso). Las transformadas están descritas en un lenguaje llamado 
TDL, especificado a detalle durante el desarrollo de la tesis. 
El sistema OSET se ha utilizado con éxito para reproducir síntesis publicadas. 
Además, se ha aplicado experimentalmente como un auxiliar para la educación 
química. 
El código fuente del sistema se ha liberado bajo la GNU General Pub/ic License. 
Al tratase de un proyecto de software libre, se busca que pueda ser aprovechado para 
la solución de problemas similares. 
V 
ÍNDICE DE CONTENIDO 
AGRADECIMIENTOS ........................................................................................... iii 
RESUMEN ............................................................................................................ iv 
INTRODUCCIÓN .................................................................................................. 1 
Capítulo 1: Introducción a la síntesis orgánica asistida por computadora ............ 7 
Conceptos básicos de Química Orgánica ......................................................... 7 
Fundamentos teóricos ................................................................................... 7 
Notación estructural ..................................................................................... 1 O 
Grupos funcionales ...................................................................................... 11 
Aromaticidad ................................................................................................ 12 
Conceptos de Síntesis Orgánica ..................................................................... 13 
Antecedentes históricos de CAOS .................................................................. 16 
Aplicaciones de CAOS en la educación .......................................................... 18 
Capítulo 2: Arquitectura del sistema OSET ........................................................ 20 
Diseño del sistema .......................................................................................... 20 
Esquema de comunicación cliente/servidor .................................................... 28 
Capítulo 3: Servidor OSET - Percepción ............................................................. 37 
Identificación de anillos ................................................................................... 37 
Detección de todos los anillos ..................................................................... 41 
Detección del ESER .................................................................................... 43 
Detección de aromaticidad .......................................................................... 44 
Identificación de anillos ................................................................................ 46 
Canonización ................................................................................................... 48 
Búsqueda en la base de datos de materias primas ........................................ 51 
Clasificación de átomos ................................................................................... 51 
Identificación de grupos funcionales ............................................................... 52 
Cálculo de complejidad molecular ................................................................... 55 
Capítulo 4: Servidor OSET - Ejecución ............................................................... 56 
vi 
Lenguaje para descripción de transformadas [TDL] ........................................ 56 
Introducción ................................................................................................. 57 
Analizador léxico .......................................................................................... 59 
Analizador sintáctico y traductor .................................................................. 62 
Enunciado FORATOM ............................................................................. 64 
Enunciado IF ............................................................................................ 64 
Enunciado de asignación ......................................................................... 65 
Enunciado ADD ........................................................................................ 65 
Enunciado BREAKBOND ......................................................................... 65 
Enunciado MAKEBOND ........................................................................... 66 
Enunciado INCBONDORDER ...... ~ ........................................................... 66 
Enunciado DECBONDORDER ................................................................. 66 
Enunciado SETBONDORDER ................................................................. 66 
Enunciado DONE ..................................................................................... 67 
Enunciado ECHO ..................................................................................... 67 
Fase de ejecución ........................................................................................... 70 
Selección del modo de análisis .................................................................... 70 
Identificación de retrones ............................................................................. 71 
Aplicación de la transformada ...................................................................... 73 
Postprocesamiento .......................................................................................... 74 
Capitulo 5: Cliente OSET .................................................................................... 76 
Interfase con el usuario ...................................................................................76 
Árbol retrosintético ........................................................................................... 79 
Evaluación global de la ruta sintética .............................................................. 80 
Capítulo 6: Ejemplos de aplicación ..................................................................... 83 
OSET en la educación química ....................................................................... 83 
Reproducción de una síntesis publicada (Juvabiona) ..................................... 85 
Capítulo 7: Conclusiones .................................................................................... 88 
Referencias ......................................................................................................... 89 
Referencias en WWW ..................................................................................... 92 
vii 
INTRODUCCIÓN 
Esta tesis describe una aplicación de las Ciencias Computacionales a un 
problema concreto en el campo de la Química Orgánica. La Síntesis Orgánica Asistida 
por Computadora (CAOS por sus siglas en inglé~. Computer Aided Organic Synthesis) 
involucra una serie de problemas interesantes desde el punto de vista de las Ciencias 
Computacionales, principalmente en las áreas de teoría de grafos, combinatoria, teoría 
de autómatas y lenguajes, y análisis de algoritmos. Durante el desarrollo de esta tesis 
se produjo un sistema de cómputo denominado OSET (Organic Synthesis Exploration 
Too/) que puede ser utilizado como herramienta por químicos en todo el mundo, al 
haberse desarrollado para ejecutarse en forma distribuida. 
Este proyecto interdisciplinario surgió en 1998 en el Departamento de Química 
Orgánica de la Facultad de Química de la UNAM. En él estaban involucrados en un 
principio mi hermano, Luis lván Tubert Brohman, y el M. en C. José Manuel Méndez 
Stivalet, profesor titular de tiempo completo. 
Para un químico, el interés en esta área se debe a la forma en que contribuye a 
sistematizar el conocimiento de la Química. Los problemas computacionales 
involucrados son el tema que se desarrolla en esta tesis. 
En posteriores capítulos se explicará a detalle qué es exactamente la Síntesis 
Orgánica. Baste por ahora una definición de trabajo: dada la estructura de una 
substancia química de interés, se busca una forma de producirla a partir de substancias 
más sencillas o fácilmente disponibles, apegándose a un conjunto de reglas químicas 
específicas. 
Como un ejemplo de la aplicación de la síntesis orgánica, a continuación se 
plantea una de las posibles síntesis para la aspirina (ácido acetilsalicilico, analgésico de 
uso común), que se muestra en la Figura 1. El proceso se muestra de manera 
simplificada, evitado detalles innecesarios, ya que se trata únicamente de mostrar el 
concepto. Todas las substancias utilizadas son materias primas ampliamente 
disponibles. 
1 
1. Partiendo del benceno (C6H6, obtenido directamente del petróleo). 
2. Se agrega ácido sulfúrico (H2S04, obtenido a partir de azufre mineral, aire y agua). 
El resultado es ácido bencensulfónico. 
3. Después se agrega hidróxido de sodio (NaOH, obtenido a partir de sal y agua). El 
resultado es fenol. 
4. Se carboxila con dióxido de carbono (C02, obtenido a partir de la calcinación de 
piedra caliza). El resultado es ácido salicílico. 
5. Finalmente se hace reaccionar con ácido acético (CH3COOH, vinagre) para 
obtener el ácido acetilsalicílico. 
OH 
1 
O=S=O OH OH o 
o H2S04 ó NaOH ó C02 &'OH 
Benceno (1] [2] [3] [4] 
Acido acetilsalicílico [5] 
Figura 1 Slntesis del ácido acetilsalicllico 
Una síntesis terminada, como la que se acaba de presentar, es la solución a un 
problema de retrosíntesis. Esta solución puede parecer sencilla; haciendo la analogía a 
un análisis de complejidad, podemos pensar que la lectura y verificación de una 
solución particular puede hacerse en tiempo polinomial. Pero la generación de la 
solución (el proceso que tuvo que seguir el químico que diseño esta síntesis) involucra 
partir de la molécula objetivo y pensar en todas las reacciones que pudieron haberla 
generado en un paso, obteniendo una lista de moléculas más sencillas que a su vez 
deben analizarse recursivamente. De esta manera se genera un árbol retrosintético que 
generalmente explota de manera exponencial. Como ejemplo, en la Figura 2 se 
presenta un fragmento del árbol retrosintético para el ibuprofeno, otro analgésico de 
uso común. 
2 
lbuprofeno 
OH 
~ 
YyoH 
o 
V 
<--=== 
Br 
Figura 2 Arbol retrosintético parcial para el ibuprofeno 
En la representación de este diagrama se utiliza la notación retrosintética (flecha 
doble); para leer una síntesis específica es necesario seguir las flechas en sentido 
contrario, como se explica en el siguiente capítulo. En el diagrama pueden leerse trece 
posibles síntesis diferentes para la molécula objetivo ibuprofeno. 
3 
Puede notarse que el "árbol retrosintético" presentado en realidad no es un árbol, 
ya que incluye varios ciclos. Esto es porque se trata de una representación abreviada; 
es posible pasar a un árbol en el sentido topológico mediante la repetición de 
moléculas. Otra abreviatura importante utilizada fue la omisión de materias primas 
auxiliares utilizadas durante la síntesis. 
En la Figura 3 se presentan algunas moléculas sintetizadas recientemente. 
Puede notarse que el grado de complejidad es significativamente mayor que el de los 
ejemplos anteriores. La síntesis de la Brevetoxina B comprende más de 60 pasos 
(Nicolaou, K.C. y Sorensen, E.J., 1996); asumiendo cuatro opciones para cada paso de 
la síntesis, el árbol retrosintético correspondiente tendría más de 1036 nodos. 
o 
O, 
H H 
o 
H 
Taxol 
(Nicolaou, 1994) 
o 
Brevetoxina B 
(Nicolaou, 1995) 
AcO 
Figura 3 Algunas slntesis recientes 
HO 
CHO 
La sintesis orgánica ha sido comparada muchas veces con un juego de ajedrez. 
Roald Hoffmann, en su libro Lo mismo y no lo mismo (1995), escribió lo siguiente en un 
capítulo acerca de la síntesis del cubano, compuesto mostrado en la Figura 4: 
La estrategia de la síntesis tiene una lógica contundente. El esquema 
de una síntesis de múltiples pasos se parece al planteamiento de un 
problema de ajedrez. Al final está el cubano: el jaque mate. En el 
ínterin hay jugadas, con reglas que las determinan. Las reglas son 
4 
mucho más interesantes y flexibles que en el ajedrez. El problema 
del químico dedicado a las síntesis es planear un movimiento en el 
tablero diez jugadas antes, que tenga una apariencia de lo más 
común. Pero desde esa posición, un jugador (o un equipo de 
qui micos), mediante una ingeniosa serie de jugadas, logra el jaque 
mate sin importar lo que haga el más recalcitrante y formidable 
oponente de todos: la naturaleza. 
H 
Figura 4 Cubano. 
Pero la síntesis orgánica resulta ser un problema mucho más complejo que el 
ajedrez. Hippe, Fic y Mazur (1992) comparan el espacio de estados de los dos 
problemas, con la siguiente conclusión: para un límite arbitrario de 100 átomos, se 
estima que una síntesis orgánica tendría 10120 estados, mientras que para el ajedrez se 
calculan 1 oªº. 
La búsqueda exhaustiva de soluciones no es una opción viable para encontrar 
buenas rutas de síntesis. Sin embargo, es posible diseñar algoritmos de búsqueda que 
utilicen criterios heurísticos para obtener soluciones aceptables. Pero antes de llegar a 
este paso, se necesita una infraestructura de percepción molecular y un motor de 
análisis retrosintético. En los próximos capítulos se describen a detalle precisamente 
estos aspectos. 
Aunque el sistema OSET cumplió con los objetivos planteados para el desarrollo 
de esta tesis, todavía se pueden hacer muchas mejoras. Precisamente por eso, OSET 
es software libre, distribuido bajo la GNU General Public License. Cuando un software 
es "libre", c_ualquier usuario puede utilizarlo para cualquier propósito; estudiar el códigofuente para entender cómo funciona y/o adaptarlo a sus necesidades; redistribuirlo para 
que otros usuarios puedan utilizarlo y, finalmente, mejorarlo y hacer públicas sus 
modificaciones para que toda la comunidad se beneficie (Free Software Foundation, 
WWW). 
La intención al liberar el código fuente de OSET es precisamente permitir que 
quienes estén interesados en el tema puedan contribuir a su desarrollo. Como se busca 
5 
que este trabajo quede abierto a la comunidad internacional, se ha procurado escribir 
los nombres de variables, comentarios y mensajes en inglés, que es el idioma que 
comprende un mayor número de programadores en el mundo. 
Para acceder a la última versión del sistema, debe consultarse la pagina 
http://litio.pquim.unam.mx/caos, desde donde se puede ejecutar el applet para análisis, 
u obtener el código fuente del sistema. 
La estructura de este documento es la siguiente: 
El capítulo 1 presenta un rápido repaso de los conceptos químicos utilizados 
durante el desarrollo de esta tesis, así como una breve historia del desarrollo de CAOS. 
En el capítulo 2 se describe el diseño del sistema OSET en forma global. En este 
capítulo se encuentra descrita la arquitectura cliente/servidor, y el esquema de 
comunicación a través de Internet. 
Los capítulos 3 y 4 describen el funcionamiento del servidor OSET. Este servidor 
implementa un motor de análisis retrosintético, por lo que es el que tiene que 
encargarse de la percepción estructural en grafos moleculares, así como de la 
interpretación y ejecución de transformadas retrosintéticas. 
El capítulo 5 describe la parte de OSET que se ejecuta en la computadora 
cliente. En este caso, la dificultad es la administración y visualización del árbol 
retrosintético. 
Para demostrar la aplicación de herramientas de CAOS, en el capítulo 6 se 
describe un experimento educativo realizado con el sistema OSET, así como la 
reproducción de una síntesis no trivial publicada. 
Finalmente, el capítulo 7 presenta conclusiones. 
6 
CAPÍTULO 1: INTRODUCCIÓN A LA SÍNTESIS 
ORGÁNICA ASISTIDA POR COMPUTADORA 
En este capítulo se describe el campo de la síntesis orgánica. Se comienza con 
un breve repaso de los conceptos químicos indispensables, que puede ser omitido sin 
pérdida de continuidad por lectores familiarizados con esta área. Posteriormente se 
introduce el vocabulario de la síntesis orgánica en general, para después pasar a la 
historia de la síntesis orgánica asistida por computadora. 
Conceptos básicos de Química Orgánica 
El término "química orgánica" se refería en sus orígenes (principios del siglo XIX) 
al estudio de las substancias encontradas en los organismos vivos. Esto en contraste 
con la "química inorgánica", que estudiaba las substancias de origen mineral. 
Fue necesario redefinir la química orgánica en 1828, cuando Friedrich Wohler 
logró convertir el cianato de amonio (substancia inorgánica) en urea (substancia 
orgánica) (Wade, 1993). Con esto quedó demostrado que las substancias orgánicas no 
pueden ser producidas solamente por los seres vivos. 
Actualmente se reconoce como química orgánica a la química del carbono. El 
carbono tiene la peculiaridad de que puede formar cadenas largas y estables, 
incluyendo también átomos de otros elementos; además, por ser tetravalente permite 
ramificaciones que dan lugar a una inmensa diversidad de compuestos orgánicos, que 
constituye la base para la vida. 
Fundamentos teóricos 
Las substancias que los químicos sintetizan están formadas por átomos. Existen 
más de cien tipos de átomos diferentes; a cada tipo se le denomina elemento químico y 
se caracteriza por la estructura de su núcleo. En química orgánica se trabaja 
regularmente con un pequeño subconjunto de elementos; los principales son carbono 
7 
(representado por el símbolo "C"), hidrógeno (H), oxígeno (O) y nitrógeno (N), y los 
halógenos (F, CI, Br, 1). 
Los átomos son considerados como la unidad estructural mínima desde un punto 
de vista químico. Son sumamente pequeños: un gramo de materia tiene alrededor de 
1023 átomos. Las propiedades físicas y químicas de una substancia dependen de los 
tipos de átomos que la componen y de su arreglo espacial. A este arreglo se le conoce 
como estructura química. Es importante notar que aun un elemento puro puede tener 
propiedades diferentes si sus átomos se arreglan en estructuras diferentes (por 
ejemplo, tanto el grafito como el diamante se componen de carbono puro). 
El arreglo estructural de los átomos en el espacio se mantiene mediante enlaces 
químicos. Los enlaces químicos unen a unos átomos con otros. Existen varios tipos de 
enlaces químicos, pero el que sirve de base a la química orgánica es el llamado enlace 
cova/ente. Es una unión entre dos átomos, y se debe a la interacción entre sus 
electrones. 
Los átomos están compuestos de electrones distribuidos alrededor de un núcleo 
cargado positivamente. Los electrones se distribuyen en diversos niveles energéticos, 
pero solamente los electrones del nivel de mayor energía participan directamente en los 
procesos químicos. Para que un átomo se encuentre en un estado estable (de mínima 
energía), su último nivel electrónico debe encontrarse lleno; para la mayor parte de los 
elementos esto significa que debe contener ocho electrones (regla del octeto). Un 
enlace covalente se forma cuando dos átomos comparten un par de electrones (cada 
átomo contribuye uno), con el objetivo de llenar el último nivel de los dos, como se 
muestra en la Figura 5. Es posible formar enlaces múltiples entre átomos compartiendo 
más de un par de electrones. 
:CI· + ·CI: -----.. 
.. .. 
·O· + ·O· ---.. .. 
Figura 5 Estructuras de Lewis representando enlaces covalentes sencillo y doble. Cada punto representa 
un electrón en la capa de valencia. 
El número de enlaces covalentes que puede tener un átomo se conoce como 
valencia y es función del número de electrones en su última capa electrónica (una 
8 
función periódica de su número atómico). En la siguiente tabla se muestra la valencia 
de los elementos más comunes en química orgánica. 
Elemento # electrones # electrones valencia= 
en última para estado B-A 
capa (A) estable (B) 
H (hidrógeno) 1 2 1 
C (carbono) 4 8 4 
N (nitrógeno) 5 8 3 
O (oxígeno) 6 8 2 
F, CI, Br, 1 7 8 1 
(halógenos) 
A una estructura discreta formada por la unión de varios átomos en su estado de 
mínima energía se le conoce como molécula. Desde el punto de vista de las Ciencias 
de la Computación, podemos pensar en una molécula como un grafo conexo no 
dirigido, donde cada átomo es un vértice y cada enlace una arista. Se consideran los 
enlaces dobles o triples como aristas de diferente tipo o costo, más que como aristas 
múltiples, por lo que la molécula no constituye un multigrafo. Las matrices de 
adyacencia de los grafos moleculares son porosas, ya que normalmente la valencia 
máxima posible es de 4. Además, en la mayor parte de los casos, se trata de grafos 
planos. 
Las estructuras químicas pueden sufrir cambios cuando se encuentran en las 
condiciones apropiadas, con el fin de minimizar su energía potencial química. A estos 
cambios se les conoce como reacciones químicas. Una reacción consiste en la ruptura 
de algunos enlaces, seguida por la formación de nuevos enlaces, y suele involucrar 
varias moléculas diferentes. Por ejemplo, en la Figura 6 se muestra la reacción del 
hidrógeno con el oxígeno para dar agua. 
H-H + H-H + O=O H-0-H + H-0-H 
Las moléculas que aparecen a la izquierda de la flecha se conocen como 
reactivos; las que aparecen a la derecha son los productos. La flecha representa el 
proceso. En algunas ocasiones se escriben sobre la flecha detalles adicionales acerca 
de las condiciones de la reacción. 
9 
Notación estructural 
Las moléculas pueden ser representadas en papel de diversas maneras. A 
continuación se muestran cuatro maneras diferentes de representar la misma molécula,conocida como 2-metilpentano. 
HHH 
'1' H C H H H 
1 1 1 1 1 
H-C-C-C-C-C-H 
1 1 1 1 1 
H H H H H 
1 2 3 4 
Figura 7 Diferentes representaciones del 2-metilpentano 
La estructura número 1 es la representación en forma de grafo de la molécula. 
Cada vértice se representa con el símbolo del elemento y cada arista con una línea. 
Lamentablemente, esta representación puede resultar incómoda debido a la gran 
cantidad de átomos involucrados. 
Los químicos han desarrollado diversas maneras de abreviar esta notación. En la 
estructura 2 los átomos de hidrógeno se encuentran asociados al átomo de carbono 
con el que están enlazados (el hidrógeno sólo puede formar un enlace y por lo tanto 
siempre está asociado a un átomo específico). Los enlaces que involucran hidrógeno 
se encuentran implícitos. 
La notación 3 se conoce como notación lineal. Busca representar la molécula en 
forma textual (como una cadena). Las ramificaciones se indican con paréntesis. 
La notación 4 es la más abreviada y es la más usada por los químicos orgánicos 
en la actualidad. Los átomos de carbono son implícitos y se encuentran en cada 
vértice. Los átomos de hidrógeno también son implícitos y se supone que cada carbono 
tiene siempre suficientes hidrógenos para satisfacer sus cuatro valencias. 
En esta notación, los heteroátomos (átomos que no son de carbono ni de 
hidrógeno) se representan explícitamente. Por ejemplo en la Figura 8 se muestra una 
molécula con un átomo de oxigeno. 
o 
A 
Figura 8 Representación explicita de los heteroátomos 
10 
Aunque en general no se escriben los hidrógenos, hay ocasiones en las que se 
prefiere representarlos explícitamente para mayor claridad, énfasis, o estética. Por 
ejemplo, se acostumbra escribir los hidrógenos enlazados a heteroátomos (Figura 9). 
~OH 
Figura 9 Representación expllcita del hidrógeno 
Grupos funciona/es 
Las propiedades de una molécula dependen de su estructura. En el caso de la 
química orgánica, los compuestos se pueden clasificar en grupos con características 
físicas y químicas comunes. A éstos se les llama grupos funcionales, y se distinguen 
por tener ciertas subestructuras comunes. Por ejemplo, el grupo de los alcoholes 
consiste en las moléculas con la subestructura -OH, como se ve en la Figura 10. 
,.... - - -
'OH' - - - , 
~'~~: 
r---
- - - - - - , OH I 
~~~-:~ Of 1 1 •-----
Figura 10 Grupo funcional alcohol 
En la siguiente tabla se muestran ejemplos de algunos de los grupos funcionales 
más importantes, señalando con una línea punteada la parte de interés. 
Grupo funcional Estructura 
alcohol r:----, 
~9_H_: 
cetona r -,o' 
~ 
I_ - "' 
aldehído r----, I o I 
~I 1 
1 , H, 
L - - - - .., 
ácido ------I o I 
~: 1 
OH' 1 1 ------
11 
Grupo funcional 
éster 
éter 
alqueno (u 
olefina) 
Estructura 
r---- , 
~º~ , _____ J 
- - - , 
~ 
1 - - - -
Estas definiciones de grupos funcionales son las que suelen manejar los 
químicos de manera informal; sin embargo, como veremos más adelante, para fines 
computacionales se requieren definiciones más formales. 
Aromaticidad 
La aromaticidad es un fenómeno que causa que ciertas moléculas presenten 
propiedades atípicas que deben reconocerse, al igual que los grupos funcionales. 
El ejemplo más sencillo de un anillo aromático es el benceno (C6H6), que se 
muestra en la Figura 11; estructuralmente este anillo de seis átomos de carbono 
debería tener tres enlaces sencillos y tres dobles alternados, y puede representarse 
gráficamente de esa manera (estructura a). Pero en realidad los electrones no se 
encuentran asociados a un enlace en particular, sino que se mueven alrededor del 
anillo, comportándose como si cada enlace fuera de orden 1.5. Por esta razón, a veces 
se representa el benceno con los enlaces deslocalizados mediante un círculo, como se 
muestra en la estructura b. Los compuestos aromáticos son muy estables, al contrario 
de los compuestos con dobles enlaces, que reaccionan con facilidad. 
o 
a b 
Figura 11 Benceno. a) Representación estructural con enlaces sencillos y dobles. b) Representación 
hlbrida. 
12 
Conceptos de Síntesis Orgánica 
La síntesis orgánica consiste en preparar compuestos orgánicos en el laboratorio 
o en la industria a partir de materiales más sencillos o fácilmente disponibles. La 
actividad principal de los químicos orgánicos se centra en la síntesis, lo que ha hecho 
que el número de substancias conocidas crezca exponencialmente desde 1800, 
llegando a casi 20 millones en el año 2000 (Schummer, 1997). Aunque sólo una 
pequeña fracción de estas substancias tiene una aplicación conocida, en la actualidad 
nos encontramos rodeados de productos de origen sintético: pinturas, plásticos, 
insecticidas, fertilizantes, medicinas, fibras, explosivos, colorantes, saborizantes, 
conservadores, etc. 
A finales del siglo XIX empezó la aplicación de la síntesis orgánica a partir de 
subproductos de la purificación del carbón o de otros productos orgánicos naturales. Se 
trataba de síntesis sencillas que requerían poca planeación; las síntesis se 
desarrollaban por analogía o asociación (Carey y Cheng, 1989). Con el paso del tiempo 
se fueron complicando las síntesis, pero sin un avance correspondiente en una teoría 
general. Quienes se dedicaban a esta actividad aplicaban al máximo su creatividad e 
imaginación, partiendo de la experiencia de todas las síntesis realizadas anteriormente. 
Cada síntesis se analizaba en forma independiente, como un caso especial. 
Woodward, el mayor exponente de esta etapa de la síntesis, llegó a decir que "aunque 
algunos de los aspectos experimentales de algunos tipos de actividad sintética pueden 
ser susceptibles de mecanización, los aspectos creativos del diseño sintético no lo 
serán (¡nunca!)" (citado en Serratosa, 1975). Cuando le otorgaron a Woodward el 
Premio Nobel de Química en 1965, lo hicieron "por sus sobresalientes logros en el arte 
de la síntesis orgánica" (Fredga, WWW). 
Durante este período la enseñanza de la síntesis orgánica se hacía como una 
presentación de síntesis ilustrativas (Corey y Cheng, 1989), con el resultado de que los 
químicos absorbían las técnicas en forma intuitiva, o en el peor de los casos no las 
adquirían. Aún en la actualidad, las bases de la síntesis orgánica se enseñan a nivel 
licenciatura de la misma manera {por ejemplo, en la UNAM). 
El siguiente paso en la evolución de la síntesis orgánica se dio en los 60s, 
cuando se desarrolló un acercamiento más sistemático, que analizaba las 
características estructurales de los productos de reacción y su manipulación en un 
13 
sentido retrosintético o antitético (de productos a materias primas, o sea, al revés de 
cómo se piensa normalmente en química). El principal proponente de esta idea fue 
Carey, quien obtuvo el Premio Nobel de Química en 1990 "por su desarrollo de la teoría 
y metodología de la síntesis orgánica" (Electronic Nobel Museum Project, WWW). 
Carey (Carey y Cheng, 1989) describe el análisis retrosintético de la siguiente 
manera: 
El análisis retrosintético (o antitético) es una técnica de resolución de 
problemas para la transformación de una molécula objetivo sintético 
(MOB) en una secuencia de estructuras cada vez más simples a lo 
largo de un camino que lleva finalmente a materias primas simples o 
comercialmente disponibles para la síntesis química. La 
transformación de una molécula en un precursor sintético es 
realizada mediante la aplicación de una transformada, el inverso 
exacto de una reacción química, a la molécula objetivo. Cada 
estructura derivada antitéticamente de una MOB se convierte 
entonces en una nueva MOB para analizar. La repetición de este 
proceso produce finalmente un árbol de intermediarios que tiene 
estructuras químicas como nodos y donde los caminos de abajo 
hacia arriba corresponden a posibles rutas sintéticas de la MOB. 
En este capítulo ya se definió el vocabulario utilizado para describir una reacción 
química.Al realizar un análisis retrosintético, aunque se está hablando de los mismos 
elementos semánticos, se utiliza un vocabulario diferente para permitir reconocer que 
se está hablando de la síntesis en sentido contrario. En la siguiente tabla se compara la 
nomenclatura utilizada en la dirección sintética y retrosintética, y en la Figura 12 se 
compara una reacción con su correspondiente transformada retrosintética. 
elemento dirección sintética dirección retrosintética 
paso reacción transformada 
flecha ), <~ 
estructura de partida (cola reactivo objetivo 
de la flecha) 
estructura resultante producto precursor 
{punta de la flecha) 
subestructura requerida grupos funcionales retrones 
para la operación 
14 
grupos funcionales 
¡ ()~- ~ ""' 
}l 
1 \ 
: + ~--~ 
' OH' ,HO ' 
1 - - - - _1 " - - - - -
o 
~º~ 
reacción 
reactivos producto 
~ retrón 
r----~ 
I o I 
: 11 : transformada 
--r'o~ :> 
1 - - - - _, 
o 
~OH+ HO~ 
objetivo precursores 
Figura 12 Reacción y transformada de condensación aldólica. 
Un retrón es una subestructura que debe reconocerse en la molécula objetivo 
para sugerir la aplicación de cierta transformada específica. Puede ser un grupo 
funcional (como en el ejemplo presentado, donde el retrón es el grupo funcional éster); 
dos grupos funcionales separados por una cadena de longitud específica; un anillo de 
cierto tamaño y tipo, o un patrón cualquiera. En general resulta más eficiente utilizar 
retrones de grupo funcional o anillo siempre que sea posible, ya que la localización de 
patrones arbitrarios involucra una complejidad significativa. 
En algunos casos es posible reconocer también un "retrón parcial", es decir, una 
subestructura que sugiera un posible retrón, pero que no esté completa. Si se 
encuentra un retrón parcial, es posible aplicar una transformada auxiliar para 
completarlo y permitir la aplicación de una transformada simplificativa utilizando el 
retrón completo. En la Figura 13 se muestra un ejemplo. La molécula objetivo tiene el 
retrón parcial para la transformada de condensación aldólica. Mediante una 
transformada auxiliar de hidrogenación, se obtiene el retrón total, y después se aplica la 
transformada simplificativa. 
Figura 13 Ejemplo de transformada auxiliar que convierte un retrón parcial en uno total. 
15 
Antecedentes históricos de CAOS 
Carey caracterizaba a la síntesis orgánica como una actividad lógica, y para 
demostrarlo propuso y realizó junto con Wipke en 1969 un programa computacional 
capaz de llevar a cabo un análisis retrosintético (Corey y Wipke, 1969), dando origen al 
campo de la síntesis orgánica asistida por computadora (CAOS, por sus siglas en 
inglés, Computer-Aided Organic Synthesis). 
Las reacciones de los químicos ante este avance no fueron muy positivas, 
variando del escepticismo a la franca hostilidad (lhlenfeldt y Gasteiger, 1995). El 
químico promedio no empezó de inmediato a utilizar computadoras en el laboratorio por 
varias razones, principales entre ellas el rechazo a la mecanización y el costo nada 
despreciable de los equipos de cómputo. Estos químicos siguieron trabajando de la 
manera tradicional, pero se continuó la investigación en el área de CAOS en diversas 
universidades. Durante los años 70s hubo al menos 28 proyectos diferentes 
mencionados en la literatura científica (Barone y Chanon, 1986). 
Los programas de CAOS no reemplazan al químico; cada uno tiene sus puntos 
fuertes y débiles. El químico tiene una intuición, imaginación y percepción que 
difícilmente puede alcanzar la computadora, además de la experiencia práctica; por 
otro lado, la computadora puede recordar cientos o miles de reacciones perfectamente, 
y puede realizar un análisis relativamente exhaustivo que para un humano sería tedioso 
o imposible (Barone y Chanon, 1986). La necesidad de dicho análisis exhaustivo puede 
observarse en este comentario (altamente optimista) de Smit et al. (1988): 
[ ... ] el poder de la síntesis orgánica moderna ha llegado al nivel en el 
que un quf mico orgánico es capaz de preparar, por lo menos en 
principio, "lo que sea que necesite a partir de lo que escoja" 
Aunque seguramente no todos los químicos estarán de acuerdo con esta cita, 
resaltando las limitaciones inherentes a cualquier área del conocimiento humano, es 
interesante observar que el poder de transformar cualquier cosa en cualquier otra 
implica que hay un número infinito de caminos para realizar cualquier síntesis orgánica. 
Algunos de estos caminos serán obviamente más eficientes en cuanto a rendimiento, 
número de pasos, tiempo y energía invertidos, etc. Por supuesto, no es posible 
examinar todas las posibles síntesis, por lo que el químico se enfrenta a un complejo 
problema de optimización combinatoria para decidir qué caminos vale la pena explorar 
16 
y cuáles no tienen futuro. Como ya se mencionó, la capacidad de búsqueda incansable 
de la computadora le da una ventaja importante para atacar este tipo de problemas. 
La genealogía de los programas de CAOS tiene su raíz en el programa 
propuesto en la primera publicación de Carey y Wipke, bautizado OCSS. Este 
programa aplica directamente el concepto de retrosíntesis utilizando una base de datos 
de transformadas. A partir de OCSS, se generaron dos de los programas que más se 
han desarrollado a lo largo de los años, y que a la fecha se siguen utilizando: LHASA 
(Carey, 1971) y SECS (Wipke y Gund, 1974). 
Otras corrientes en el campo de CAOS tienen su origen en los trabajos de 
Hendrickson (1990), quien utilizó el concepto de "medias reacciones"; y Ugi (descrito 
por Brandt et al., 1977, y Haggin, 1983), quien introdujo el concepto de la química 
constitucional. Un enfoque completamente opuesto es el de Jorgensen (Salatin y 
Jorgensen, 1980), con el programa CAMEO, que trata el problema del análisis en la 
dirección sintética, con el objetivo de predecir los productos para un conjunto dado de 
reactivos y condiciones de reacción, simulando el razonamiento mecanístico de los 
químicos orgánicos. 
Recientemente los programas de análisis retrosintético, entre ellos LHASA, han 
tratado de incluir el análisis sintético como lo hace CAMEO. Primero se decide 
retrosintéticamente cual es el último paso con el que se forma el producto, y luego se 
analizan sintéticamente los reactivos para asegurarse de que den única o 
predominantemente el producto deseado (Carey, Long y Rubenstein, 1985). 
En los últimos años los esfuerzos para la creación de nuevos programas de 
síntesis orgánica han disminuido, substituyéndose por la sistematización de grandes 
bases de datos de reacciones, que han resultado muy útiles para los químicos en la 
industria y la academia (lhlenfeldt y Gasteiger, 1995). Aunque varios proyectos con más 
de 20 años de historia siguen desarrollándose (ej. LHASA), las aportaciones nuevas 
son escasas (ej. WODCA). Estos sistemas se ejecutan en ambiente UNIX (AIX, HP-UX 
o IRIX para LHASA; Linux para WODCA). La elección del ambiente limita en cierta 
manera su difusión, especialmente para aplicaciones educativas, en las que se prefiere 
Windows. Como referencia, prácticamente todos los equipos workstation RS-6000 (que 
ejecutan AIX, una versión de UNIX de IBM) del ITESM CCM han sido substituidos por 
computadoras personales ejecutando Windows. 
17 
La última publicación que se ha localizado sobre el tema se refiere a un esfuerzo 
para distribuir algunos algoritmos del sistema SYNCHEM, originado en 1973 
(Krebsbach, Gelernter y Sieburth, 1998). Se percibe en general una notoria 
desaceleración en el área de CAOS. Pero la experiencia en otros campos (ej. 
inteligencia artificial, biotecnología), que pasaron por la misma secuencia de gran 
entusiasmo seguido por una desaceleración, nos muestra que poco después del bache 
renacen con nuevos bríos. Esta tesis espera contribuir al renacimiento de CAOS. 
Aplicaciones de CAOS en la educación 
Las aplicaciones de los programasde CAOS a la educación química no han sido 
muchas. Una razón importante es que la mayor parte de los programas disponibles se 
ejecutan en mainframes o minicomputadoras, y ha habido muy pocos esfuerzos para 
crear programas equivalentes para computadoras personales. 
En orden cronológico, se han documentado los siguientes esfuerzos: 
• Universidad de lllinois, 1971: Smith desarrolló un programa educativo con interfase 
de texto, con una base de datos de 53 reacciones específicas y 134 reactivos. El 
programa realmente no realizaba ningún análisis, y funcionaba únicamente como un 
examen de opción múltiple (Smith, 1971 ). 
• Universidad de Harvard, 1973-74: el profesor Orf tomó el LHASA y lo probó con un 
grupo piloto de 15 estudiantes voluntarios. LHASA fue diseñado para ser utilizado 
por profesionales, no por estudiantes; sin embargo, su interfase gráfica (toda una 
novedad en aquel momento) facilitaba mucho la comunicación al nivel de permitir 
que se utilizara para la enseñanza. El autor concluyó que el potencial de LHASA 
como una herramienta educativa para la síntesis orgánica había quedado 
demostrado. El experimento otorgó confianza a los alumnos para trabajar con 
problemas de síntesis no triviales, aun sin ayuda de la computadora. (Orf, 1975). 
• Universidad de Tufts, 1978-79: A partir de LHASA, Stolow y Joncas crearon una 
"versión estudiantil". Realizaron modificaciones para dejar en la base de datos 
únicamente las transformadas retrosintéticas que enseñaban en sus cursos y, 
además, cambiaron la operación del programa para que planteara preguntas a los 
estudiantes en cada paso del análisis, con el fin de reforzar el aprendizaje. La 
respuesta de los estudiantes fue muy positiva (Stolow y Joncas, 1980). 
18 
• St. Jerome (Francia), 1986: El programa SOS se utilizó para la enseñanza del 
análisis retrosintético. La aportación más importante de este programa fue que se 
ejecutaba en una microcomputadora Apple 11+, por lo que era más factible su 
utilización en universidades con menores recursos de cómputo (Bertrand, Monti y 
Barone, 1986). En una aplicación documentada del uso de este programa, los 
estudiantes discutieron las rutas posibles de síntesis con ayuda del instructor, y 
finalmente llevaron una de ellas a la práctica. 
En todos los casos mencionados, las experiencias relatadas por los autores 
fueron positivas. Sin embargo, como la mayoria de los programas requerian recursos 
computacionales poco disponibles (o en peligro de extinción, como en el caso de la 
Apple 11+ en 1986), el impacto de esta técnica pedagógica ha sido limitado. 
En este capitulo se ha buscado dar una visión global del área de aplicación de 
esta tesis, empezando desde conceptos básicos para permitir que un lector del área de 
Ciencias Computacionales se forme una idea clara. En el próximo capitulo se describe 
el diseño del sistema OSET. 
19 
CAPÍTULO 2: ARQUITECTURA DEL SISTEMA OSET 
En este capítulo se describen las consideraciones que influyeron en el diseño del 
sistema OSET, y como nos llevaron a la elección de la plataforma de ejecución. 
Posteriormente se explica la arquitectura del sistema OSET en forma de bloques, 
detallando la relación entre ellos. 
Desde el punto de vista del usuario, el sistema OSET le permite capturar como 
entrada una molécula objetivo y solicitar un análisis retrosintético. El sistema contesta 
con un árbol de posibles rutas sintéticas, y le permite navegar libremente en forma 
interactiva para explorar las diversas alternativas, recibiendo información adicional 
sobre cada una, tal como el tipo de transformada utilizada. Posiblemente el sistema le 
permite también realizar una búsqueda automática, sugiriéndole cierto número de rutas 
que considera "buenas". 
Con esta breve descripción empezamos el diseño considerando antes que nada 
la plataforma de ejecución. 
Diseño del sistema 
Como se relató en la introducción, los sistemas CAOS históricamente han tenido 
una difusión muy limitada, debido principalmente a que fueron diseñados para 
ejecutarse en plataformas de hardware poco populares o muy caras. De hecho, en el 
momento en que se crearon varios de estos sistemas no había otra opción, ya que esto 
sucedió antes de la revolución de las microcomputadoras (PCs). 
Nuestra principal consideración de diseño fue entonces crear un sistema CAOS 
que pudiera ejecutarse en computadoras PC, bajo ambiente Windows, por tratarse de 
la plataforma más popular (definiendo plataforma como combinación de hardware I 
sistema operativo). Pero aún esto resulta discriminatorio para una difusión global, ya 
que existen personas que se niegan rotundamente a utilizar ya sea PCs o Windows, 
prefiriendo algún otro hardware (ej. Macintosh, Amiga, workstations), o sistema 
operativo (ej. Linux para PCs, o el sistema operativo que dicte el hardware, ej. Macos ,:::,,:,; .. --.·~~e~, 
~ . ... 
20 <.\ ¡qb22(c 
', 
para Macintosh). Idealmente el sistema OSET tendría que poderse ejecutar en todas 
estas plataformas. 
Entonces, el primer paso para que nuestros usuarios potenciales utilicen OSET 
es que tengan acceso a él, sin importar su plataforma. La tecnología de internet 
(abreviatura de intemetworking, interconexión de redes), consta de una serie de 
convenciones o protocolos de comunicación que permiten interconectar redes 
heterogéneas que estén formadas por diferentes tipos de hardware (Comer, 1995). A la 
gran red de redes que se forma al utilizar estos protocolos se le conoce como el 
Internet (con mayúscula). Decidimos entonces publicar el sistema OSET en Internet, 
cumpliendo con el requisito de acceso independiente de plataforma. 
El medio utilizado para publicar información en Internet se conoce como World 
Wide Web (WWW). El WWW es "un conjunto de tecnologías que implementan un 
modelo de documento hipermedia distribuido [a través del] Internet" (Wilde, 1999). La 
palabra "hipermedia" es una combinación de "hipertexto" (contenido con vínculos que 
permiten hacer referencia a otro contenido para una lectura no lineal) y "multimedia" 
(integración de diferentes medios de comunicación: texto, imágenes, gráficos, video, 
programas, etc.) El esquema básico del WWW permite almacenar en equipos 
"servidores" cualquier tipo de contenido, que puede ser consultado por los usuarios a 
través de equipos "clientes", utilizando un programa conocido como browser 
(visualizador). 
Aunque en principio podría ser posible publicar en el WWW una página con 
vínculos a diversas versiones ejecutables del sistema, una para cada plataforma, esta 
no sería una solución práctica ni permanente, ya que el esfuerzo de instalar cada 
sistema operativo, portar el sistema y asegurarnos de que funcione resultarla inmenso, 
y tendríamos que repetir el proceso para cada nuevo sistema operativo o plataforma de 
hardware que fuera surgiendo. 
Históricamente este problema se asemeja a lo que sucedió cuando en 1973 
Dennis Ritchie y Ken Thompson decidieron reescribir el kernel de UNIX en lenguaje C 
para permitir que pudiera portarse rápidamente a cualquier plataforma de hardware 
para la cual ex.istiera un compilador de C (Abrahams y Larson, 1992). Utilizando 
compiladores cruzados (que generan código de máquina para hardware diferente a 
aquel en el que se están ejecutando), llegó a omitirse el requerimiento del compilador 
21 
en el hardware de destino, por lo que el compilador de C también pudo escribirse en 
lenguaje C y portarse fácilmente a cualquier tipo de hardware. 
Lamentablemente, escribir y distribuir el sistema OSET en lenguaje C para que 
el usuario lo recompile no es una opción viable. Nuestros usuarios objetivo son 
químicos, cuyas habilidades computacionales resultan insuficientes para esta tarea. 
Surge entonces un nuevo objetivo: distribuir la aplicación a través de 
lnternet/WWW de tal manera que el usuario no tenga que realizar ningún esfuerzo para 
instalarlo y/o ejecutarlo, independientementedel tipo de hardware y sistema operativo 
que esté utilizando. Lo único que nos atrevemos a suponer del usuario es que cuenta 
con una conexión a Internet, un browser, y hardware con capacidades gráficas. 
Analicemos a detalle estos tres puntos: 
• Conexión a Internet: el crecimiento del Internet ha sido explosivo en los últimos 
años. En febrero de 2001 se estimaba que había más de 41 O millones de usuarios 
conectados a Internet (6.7% de la población mundial), y que esta cantidad se 
incrementaba por un millón diariamente (Netsizer, WWW; Nua, WWW). 
Particularmente, considerando que nuestros usuarios vendrían principalmente del 
medio académico (estudiantes, profesores, investigadores) o industrial, es posible 
suponer que tienen actualmente acceso a Internet en sus lugares de estudio o 
trabajo, o que en el peor de los casos tendrán acceso en un futuro cercano. 
• Browser: para muchas personas, el Internet y el WWW son sinónimos: la aplicación 
más popular para usuarios de Internet es la navegación del WWW utilizando un 
programa visualizador o browser. Por esta razón suponemos que si nuestro usuario 
potencial tiene una conexión a Internet, contará entonces con un browser. Nos 
atrevimos a suponer también que el usuario sabría como utilizar el browser, aunque 
tuvimos que revisar esta idea al hacer pruebas con usuarios reales ... Pero siguiendo 
con el argumento del punto anterior, con el paso del tiempo será más común que 
cualquier persona pueda utilizar un browser sin problemas. 
• Hardware con capacidades gráficas: Es cada vez más difícil encontrar equipos 
ejecutándose utilizando una interfase de texto. Aún los equipos UNIX que operan 
tradicionalmente a través de una consola de comandos, ejecutan ahora X-Windows 
como ambiente gráfico. Por otro lado, una interfase gráfica es un requisito 
indispensable para trabajar con moléculas permitiendo que el usuario las visualice 
22 
correctamente. Aunque existen formas de representar moléculas en modo de texto 
(por ejemplo el formato SMILES que se describe en un capítulo posterior), su uso es 
incómodo y definitivamente resultaría inaceptable para esta aplicación. Por estas 
razones, suponemos que el usuario utilizará hardware con capacidades gráficas 
para el sistema OSET. 
Con esta nueva lista de condiciones, reanalizamos el diseño del sistema OSET, 
buscando que se ejecute únicamente utilizando un browser. 
Originalmente el WWW permitía únicamente publicar contenido estático, definido 
como contenido que se encontraba almacenado en su forma definitiva en los 
servidores. Posteriormente se introdujo el estándar Common Gateway Interface (CGI) 
para permitir la publicación de contenido dinámico, generado en el momento como 
respuesta a una solicitud del usuario (Gundavaram, 1996). Con la utilización de 
programas CGI, el WWW dejó de ser únicamente una plataforma para publicación, 
para convertirse también en una plataforma para ejecución de aplicaciones. Cualquier 
programa cuya salida pueda representarse en WWW por medio del Hypertext Markup 
Language (HTML) puede reprogramarse como un CGI y ejecutarse a través del WWW. 
La tecnología CGI es la que permite que existan aplicaciones como los 
buscadores de información en Internet (Google, Go, Altavista, etc.), sin las cuales 
encontrar algún recurso en el WWW sería más difícil que localizar una aguja en un 
pajar. Sin embargo, aunque esta tecnología permite hacer cosas muy interesantes, 
tampoco es la panacea. 
El modelo WWW/CGI recuerda a un sistema mainframe. En este tipo de 
sistemas toda la capacidad de procesamiento está centralizada en el equipo servidor 
(mainframe), y los clientes son "terminales tontas" que constan de un teclado para 
recibir la entrada del usuario y una pantalla para desplegar la salida, pero que no 
realizan ningún otro procesamiento (Beekman, 1994). 
Para un ejemplo de lo que esto significa en una aplicación implementada en un 
CGI, consideremos la siguiente situación. Un usuario realiza una consulta y recibe 
como resultado una lista de registros, posteriormente decide que los quiere ordenar 
alfabéticamente por ciudad. En ese momento el usuario debe realizar otra consulta al 
servidor, que devolverá la lista ordenada (el cliente no ordena la lista localmente). 
23 
Aunque esto es perfectamente válido, presenta algunas desventajas: desaprovecha la 
capacidad de procesamiento del equipo cliente, sobrecarga de solicitudes al servidor 
para prácticamente cualquier acción del usuario, e introduce el retraso de un viaje 
redondo por la red para cada solicitud. El efecto final puede resumirse en que para una 
aplicación altamente interactiva el usuario recibe una respuesta muy lenta y 
probablemente inaceptable. 
En consecuencia, para el desarrollo de OSET necesitamos otra tecnología, que 
permita transportar un programa a través de Internet y ejecutarlo en el equipo del 
usuario, independientemente de la plataforma. La solución a este problema es Java. 
Java es una tecnología desarrollada por Sun Microsystems para poder crear 
programas que pudieran ejecutarse en una forma homogénea y libre de errores 
independientemente de la plataforma de hardware. La idea era utilizar esta tecnología 
para producir artículos electrónicos de consumo, pero cuando se popularizó el WWW 
los arquitectos de Java vieron un área de oportunidad y reorientaron sus esfuerzos. 
Para permitir que un programa escrito en Java pueda ejecutarse 
independientemente del hardware, el compilador de Java produce un código 
intermedio, neutro en cuanto a arquitectura, conocido como byte code. Para ejecutar 
este byte code en cierta plataforma de hardware específica, ésta debe contar con un 
componente de software conocido como la Java Virtual Machine (JVM), y un ambiente 
de ejecución que provea ciertas funciones básicas. 
Sun Microsystems ha liberado JVMs para diversas plataformas de hardware y, 
además, ha publicado un documento con especificaciones (Lindholm y Yellin, 1997) 
que en teoría permite a cualquier programador crear una JVM compatible. La mayor 
parte de los browsers disponibles actualmente incluyen una JVM que les permite 
ejecutar un tipo particular de programas de Java conocidos como applets, que 
aparecen incrustados en una página HTML. 
Pero el byte code y la JVM no son todo lo que ofrece Java. Se trata de un 
lenguaje y ambiente diseñados específicamente con requerimientos que se adaptan 
muy bien a su distribución a través del WWW. Java está basado en el lenguaje C, pero 
realmente se trata de un nuevo lenguaje, fuertemente orientado a objetos (esto significa 
que todos los tipos de datos son objetos), y que busca precisamente evitar los "malos 
24 
hábitos" de los programadores de C. Algunas otras características interesantes de Java 
son: 
• Por tratarse de un lenguaje que pretende generar programas portables, Java define 
en forma muy precisa todos los tipos de datos, tanto enteros como de punto 
flotante, y no permite acceder a ellos en forma indiscriminada como sucede en el 
lenguaje C. Lo que esto significa es que una expresión como *(char *)variable_int, 
que en C puede devolver ya sea el byte alto o bajo de variable_int dependiendo de 
la plataforma de hardware, en Java estaría perfectamente definida ... claro está, si es 
que se permitiera. Java no cuenta con apuntadores precisamente para evitar 
situaciones como ésta. 
• Java procura producir programas seguros y sólidos. El que los programas sean 
seguros significa que no pueden acceder a los recursos de la computadora en que 
se ejecuten a menos que el usuario lo autorice. Para lograrlo, el byte code se 
ejecuta en un ambiente controlado, conocido como el sandbox. Según McGraw y 
Felten (1999), la seguridad de Java se implementa en cuatro capas básicas: acceso 
restringido al sistema de archivos y a la red; acceso restringido al interior del 
browser; un conjunto de reglas para programas byte code que se verificanal cargar 
el programa y durante su ejecución, y un sistema para firmar el código. En cuanto a 
la solidez del programa, se refiere a la resistencia a fallas. La solidez se origina en 
las verificaciones de tipos durante la compilación de programa, se apoya en 
características del lenguaje, como la ausencia de apuntadores y la recolección 
automática de basura, y termina por un modelo para manejo de excepciones. Un 
programa en Java no debería ser capaz de fallar catastróficamente en la 
computadora del usuario. 
• Desde su origen, Java está pensado para ejecutarse en forma distribuida, por lo 
que cuenta con soporte directo para comunicarse por red utilizando diversos 
protocolos de Internet. Además, tiene soporte para aplicaciones concurrentes por 
medio de ejecución multihilos (multithreaded). 
Para el sistema OSET, Java parece ser una solución interesante. Cumple con el 
requisito de distribuirse a través de un browser, y poderse ejecutar independientemente 
de la plataforma. Es verdad que no todos los browsers cuentan con una JVM, pero esto 
25 
se irá corrigiendo naturalmente en el futuro. La independencia de plataforma trae a la 
mente algunas ideas excitantes, tales como ejecutar OSET en un PDA tal como un 
Palm, que cuenta con un microbrowsery una JVM limitada. 
La distribución del sistema se hace automáticamente, sin requerir intervención 
del usuario para instalarlo o ejecutarlo. El usuario simplemente se dirige a una página 
HTML que contienei el applet OSET, y su browser decide en forma transparente si es 
necesario bajar el applet de la red, o si puede ejecutarse a partir de una copia local en 
el cache. 
Pero no todo es tan maravilloso. Para empezar, las limitaciones que se imponen 
a Java por razones de seguridad pueden resultar engorrosas, cuando haya que 
explicarle al usuario que no puede almacenar su trabajo en el disco duro local. 
Afortunadamente, utilizando algunos programas CGI, aunados con scripts ejecutándose 
en el browser, es posible saltar esta restricción en una forma completamente 
controlada, que no viola la seguridad del sistema. 
Un problema más serio es que hasta este momento no hemos considerado la 
dificultad del trabajo computacional que realizará el sistema. Pero una vez que vemos 
que las tareas involucradas incluyen trabajo de reconocimiento de patrones, detección 
de isomorfismo en grafos, detección y análisis de todos los anillos (ciclos) de la 
molécula, etc., podemos suponer que la necesidad de procesamiento será intensa. En 
este sentido, la ejecución del byte code Java, que finalmente es un lenguaje 
interpretado, puede resultar demasiado lenta. 
Por otro lado, el análisis retrosintético requiere una base de datos de 
transformadas, que se irá creando gradualmente. La transmisión a través de la red de 
esta base de datos y/o de toda la aplicación cada vez que se haga un cambio también 
puede resultar lenta. 
La obsesión por la velocidad de respuesta está justificada por el comportamiento 
de los usuarios. La mayoría de ellos abandonan un sitio de Internet si no obtienen una 
respuesta suficientemente rápida (Reynolds, 2000). 
Pero aparentemente ya no hay mejores opciones para cumplir con este nuevo 
requerimiento de velocidad cambiando de lenguaje o tecnología del lado del cliente. Si 
substituimos Java por otro tipo de lenguaje multiplataforma (por ejemplo, C# de 
Microsoft, que surgió recientemente para competir con Java), seguirá tratándose de un 
26 
lenguaje interpretado. Existen opciones como la compilación Just In Time (JIT) que 
toman el byte code ,Java y lo compilan a código nativo justo antes de ejecutarlo en una 
plataforma especifica. Pero seguiríamos con el problema de la actualización frecuente 
del programa y base de datos, que obliga a la actualización (y recompilación JIT) de 
OSET con su consiguiente retraso. 
Afortunadamente, una característica de Java nos permite librar este problema. 
Como ya se mencionó, Java está diseñado para ejecutarse en un ambiente distribuido, 
por lo que tiene integradas rutinas para comunicación eficiente por la red. La propuesta 
que surge es diseñar OSET como un sistema cliente/servidor. 
El modelo cliente/servidor es el que ya hemos mencionado en el contexto de la 
arquitectura del WWW. En su forma más sencilla, este modelo permite partir la carga 
de procesamiento de una aplicación en dos diferentes procesos, conocidos como 
cliente y servidor (Linthicum, 1997). En la práctica, el proceso servidor se ejecuta en un 
sistema de cómputo y espera a que un proceso cliente solicite algún servicio; cuando el 
servidor recibe una solicitud, la procesa y envía una respuesta al cliente. Aunque los 
procesos cliente y servidor pueden ejecutarse en un mismo equipo, lo más tipico es 
que se encuentren en diferentes equipos separados por una red (Stevens, 1990). La 
distribución del trabajo normalmente asigna al cliente únicamente la interfase gráfica 
(GUI) y la inteligencia suficiente para crear una solicitud, comunicarla al servidor, 
analizar los resultados y mostrarlos en una forma apropiada al usuario. Mientras tanto, 
al servidor se le asigna la actividad intensa de procesamiento y muy frecuentemente la 
capacidad de atender a varios clientes en forma simultánea (Sinha, 1996). 
En el caso del sistema OSET, un servidor centralizado puede tener la capacidad 
para realizar el análisis retrosintético, con la consecuente carga de procesamiento, y 
tener acceso directo (y rápido) a una única base de datos de transformadas, que puede 
actualizarse en cualquier momento. El proceso servidor ni siquiera requiere estar 
escrito en Java, ya que como tenemos control sobre la plataforma de hardware, 
podemos escribir este proceso utilizando un lenguaje que se compile directamente a 
código máquina, por ejemplo C, con la consecuente mejora en su desempeño. La única 
restricción es que hay que lograr que el proceso servidor (escrito en C) se comunique 
con el proceso cliente (escrito en Java); afortunadamente para esto pueden utilizarse 
los pro.tocolos del Internet (específicamente, TCP/IP). 
27 
En caso de que el servidor requiera más capacidad para procesar la carga de 
trabajo impuesta por los clientes, podemos realizar un cambio de hardware en forma 
transparente. Si aún con esto el servidor resultara insuficiente, se pueden instalar 
varios servidores, ya sea para repartir la carga de los clientes, o para poder procesar en 
forma distribuida una solicitud compleja de un cliente específico. El modelo 
cliente/servidor nos permite realizar todos estos cambios sin afectar a los clientes de 
ninguna forma. 
Por otro lado, la aplicación cliente resulta relativamente ligera, dedicándose 
únicamente a la captura y despliegue de moléculas y a la administración del árbol 
retrosintético. 
Con esto llegamos a una arquitectura para el sistema OSET que nos resulta 
satisfactoria. A continuación hablaremos un poco más sobre las funciones que 
desempeñan el cliente y el servidor, y la forma en que se comunican. 
servidor cliente 
[ CGls applet de dibujo 
HTML 
._[ __ se_rv_i_do_r _ _____.1~<::=====:::;:::::::::::::, applet de análisis 
HTML 
..................... ' ......................... · 
Figura 14 Esquema de la arquitectura del sistema. 
Esquema de comunicación cliente/servidor 
Como puede verse en la Figura 14, el cliente está clarar:nente dividido en dos 
componentes: uno para dibujo y otro para análisis. Del lado del servidor contamos con 
un proceso principal para análisis, y varios programas CGI auxiliares. 
28 
El usuario inicia su interacción con el sistema introduciendo una molécula 
objetivo que desea analizar. Puede dibujar la estructura de la molécula en el momento, 
o tal vez ya la haya creado en otro programa. 
Para la tarea del dibujo de estructuras, decidimos utilizar un applet disponible 
gratuitamente llamado MarvinSketch, de la compañía ChemAxon (Csizmadia, 2000). 
Este applet y su documentaciónestán disponibles en http://www.chemaxon.com. Si 
fuera necesario, este componente de software puede intercambiarse por otro similar 
que realice la misma función (de hecho, esto ya lo hicimos en una ocasión; 
anteriormente utilizábamos otro applet). 
Para poder leer moléculas generadas por otros programas, aprovechamos el 
formato MOLFILE (Dalby et al., 1992), que consiste básicamente en una lista de 
átomos con su coordenadas espaciales, seguida de una lista de enlaces, como puede 
verse en la Figura 15. Este formato es globalmente aceptado para el intercambio de 
información entre programas que manejan estructuras químicas (ej. ISISDraw, 
ChemSketch, ChemWin, etc.) El app/et MarvinSketch incluye funciones públicas para 
importar y exportar moléculas en formato MOLFILE. El problema es que el applet no 
puede acceder al sistema de archivos local para grabar o leer el archivo 
correspondiente. Afortunadamente, los programas CGI pueden saltar esta restricción, 
siempre y cuando la comunicación sea autorizada por el usuario y se envíe 
directamente al servidor. 
4 4 
4 1.2125 -3.7500 0.0000 e 
o 2.0375 -3.7500 0.0000 e 
,l, 
1.6250 -3.0338 0.0000 e 
1.6275 -2.2054 0.0000 o 
2 1 1 
3 2 1 
1 3 1 
3 4 2 
M END 
Figura 15 Representación de la estructura de la molécula de ciclopropanona (izquierda) en el formato 
MOLFILE (derecha). 
Para leer un archivo del sistema de archivos local, se puede utilizar una forma 
que incluya un comando HTML <input type=file>, que es interpretado por el browser 
como una instrucción para capturar el nombre de un archivo; al enviar la forma, se 
transmite al servidor el contenido del archivo seleccionado por el usuario. Utilizando 
JavaScript (un lenguaje para ejecución de comandos limitados dentro de un browser) y 
29 
un CGI apropiado, se puede devolver el contenido del archivo al equipo cliente, 
importándolo al appfet de dibujo; este proceso se muestra en la Figura 16 . 
.. ... ... ... ...... ... . .. . .. . .. . .. '.. .. . .................................................. . 
i servidor ! : cliente : 
. . . . 
: : : : ·-. . . . . . applet de . ' . . script LOAD . . . . 
dibujo : : . . 
' . . . . . . . . . . . ~~ HTML . . . . : : . . . . . . . . . . . . 
G) 
• • ! • 
: LOADMOL (C~._-:_M_O_~-;-IL_E __ ...,.\-+- ( 
', 
MOLFILE 
MOLFILE 
@ 
forma de lectura 
de archivo 
.. 
HTML 
0 
.... 
Íclose ,,•""'•,, .. ! 
ventana temporal 
HTML 
. . .................................... , .................................................. : 
Figura 16 Lectura de MOLFILE desde sistema de archivos local. 
Para grabar un archivo en el sistema de archivos local puede utilizarse 
JavaScript y una forma HTML para enviar la información de la molécula por la red al 
servidor a un CGI que la rebote indicando que se trata de un archivo de datos. El 
usuario verá entonces una ventana preguntándole si desea grabar la información, y con 
qué nombre; este proceso se muestra en la Figura 17. 
servidor 
SAVEMOL(~ 
MOLFILE .... 
~ 
G) 
. . 
: x-molfile (tipo MIME) : 
cliente 
applet de script SAVE +- dibujo 
HTML 
abrir/guardar 
browser 
Figura 17 Escritura de MOLFILE a sistema de archivos local. 
30 
Una vez que la interfase para captura y almacenamiento de molécuias está 
dominada, podemos definir cómo OSET realizará su labor principal: el análisis 
retrosintético. Para iniciar el análisis, se utiliza nuevamente JavaScript y un programa 
CGI para enviar la información molecular al servidor, que contesta indicándole al cliente 
que debe invocar al applet de navegación, llamado CAOS (ver Figura 18) . 
...... ························· .... ······················· ............................... . . . . . . . . 
: servidor : : cliente : . . . . . . . . . . . . . . . . . . . . 
: STARTAN (CGl)J ... _...._: _M_O_L_F_IL_E ___ : -- script ANALYZE ._ applet de : 
G) dibujo 
¡ save H TML 
j ____ _ 
L-MOLFILij ®[ 
¡ 
SERVER J 
~ 
:comando "LOAD" @( 
applet CAOS .... 
MOLTRAN 0\ 
i load 
"' 
HTML 
. . 
\,,, ............................... · \ .................................................... .. : 
Figura 18 Inicio del análisis retrosintético. 
• 
El applet CAOS inmediatamente se comunica con el proceso servidor (que por 
una no muy afortunada decisión se llama SERVER) para solicitar la molécula de 
trabajo. La comunicación entre CAOS y SERVER se realiza utilizando sockets. La 
interfase de sockets de Berkeley (abreviado como BSI; descrita a detalle por Comer y 
Stevens, 1996) abstrae las dificultades inherentes a la comunicación por red. En la 
medida de lo posible, un socket se comporta como si fuera un archivo común y 
corriente: se puede abrir, leer, escribir y cerrar. En otros aspectos no se puede 
mantener la semejanza (por ejemplo, no se le puede pedir a un archivo que espere una 
conexión). 
Los sockets utilizados por OSET están configurados en modo orientado a 
conexión. Lo que esto significa es que el intercambio de datos es confiable: un 
protocolo de nivel intermedio se encarga de verificar la comunicación, solicitando 
retransmisión si fuera necesaria por un error en el medio, asegurándose de que los 
paquetes vengan en orden, etc. Los sockets orientados a conexión utilizan el protocolo 
31 
TCP, aunque en teoría la BSI es suficientemente abstracta como para utilizar otra 
familia de protocolos completamente diferente. 
La operación del servidor en cuanto a comunicaciones es la siguiente: 
• Se inicializa un socket TCP en modo pasivo (es decir, que espera una conexión). 
• Cuando se recibe una conexión, se genera un nuevo socket para comunicarse con 
el cliente, y un subproceso ligero (thread o hilo) para que lo atienda. El servidor 
continúa esperando conexiones. 
• El subproceso recibe uno o más comandos del cliente, los ejecuta y devuelve los 
resultados. Cuando el cliente indica que quiere terminar la comunicación, se cierra 
el socket y se cancela el subproceso. 
El comportamiento descrito es bastante estándar para cualquier servidor 
concurrente, excepto que normalmente los procesos que se ejecutan para darle 
servicio a los clientes son programas completos, cada uno con sus propios recursos y 
almacenamiento independiente en memoria. En este caso decidimos utilizar 
subprocesos ligeros o threads porque como estos comparten los recursos y memoria 
con el programa principal (Northrup, 1996), podemos realizar una sola vez la carga y 
preprocesamiento de la base de datos de transformadas, mejorando el tiempo de 
respuesta para el cliente. 
Para la transferencia de comandos o datos entre el cliente y servidor utilizamos 
un protocolo privado de comunicación a través del puerto 6000/TCP (aunque esto es 
configurable). Nuestro protocolo está basado actualmente en comunicación por texto 
(similar a otros protocolos como SMTP, POP3, FTP, etc.) para permitirnos realizar 
pruebas del sistema con un cliente TELNET. Para mejorar el desempeño, en cualquier 
momento podemos cambiar a un protocolo binario, que transmita la información de 
manera más eficiente. 
Los comandos a los que responde el servidor se describen a continuación. La 
función de estos comandos se irá aclarando a medida que se explique el 
funcionamiento del servidor y cliente. 
• LOAD [filename]: Lee del almacenamiento local del servidor el archivo filename, lo 
analiza como si fuera una molécula en formato MOLFILE, y lo transmite al cliente en 
32 
un formato propietario para intercambio de moléculas, que llamamos MOL TRAN y 
se describe más adelante. 
• ANAL YZE [mol]: Recibe la información de una molécula mol en formato MOL TRAN 
y realiza un paso de análisis retrosintético, devolviendo la lista de posibles 
transformadas y precursores en el mismo formato. 
• ANALAUX [atom] [mol]: Al igual que la opción anterior, analiza la molécula mol, pero 
en este caso busca aplicar una transformada auxiliar (FGI o FGA) sobre el átomo 
atom. 
• ANALFGO [bond] [mol]: Igual que las anteriores, pero busca aplicaruna 
transformada de desconexión sin retrón (FGO) sobre el enlace bond. 
• RXNINFO [num]: pide información detallada sobre una transformada particular de la 
base de datos, para poder presentarla al usuario. 
• CAS [smiles]: consulta una base de datos de compuestos para ver si encuentra una 
coincidencia para la molécula smiles (en notación lineal). Si se encuentra la 
molécula, se podrá presentar al usuario su nombre correcto y su número de 
identificación CAS (Chemical Abstracts Service registry number), con el que puede 
averiguarse su costo. 
• SA VETREE [tree]: recibe del cliente una síntesis completa en forma de árbol tree 
(en un formato propietario TREETRAN que se describe más adelante) y devuelve 
una representación gráfica en formato ChemSketch (.SK2), que puede editarse o 
imprimirse utilizando diversos programas. 
• START [mol]: escribe a disco la molécula mol (en formato MOLFILE) y después 
invoca el comando LOAD para devolverla al cliente convertida a formato MOLTRAN. 
• QUIT: es la forma en que el cliente puede indicarle al servidor que ya no necesita 
más procesamiento. El servidor responde terminando el thread. 
• HELP [command]: sin parámetros despliega una lista de los comandos permitidos. 
Con el nombre de un comando (command) como parámetro, presenta una breve 
descripción de su modo de operación. 
La respuesta del servidor a una solicitud del cliente empieza con una línea 
indicando el status. Si el comando se pudo completar, la línea empieza con el signo + 
33 
(ej. "+ OK"); de lo contrario, empieza con el signo - (ej. "- File not found"). Esto le 
permite al cliente interpretar rápidamente la respuesta. 
Varios de los comandos del servidor tienen como parámetro o resultado 
información molecular extendida en un formato que bautizamos MOL TRAN. Aunque 
este formato está basado en el MOLFILE, contiene información adicional para permitir 
el correcto y eficiente funcionamiento de OSET. A continuación se describe el formato 
MOLTRAN1• 
<atorn> 
<bond> 
xpos ypos Z charge 
atoml atom2 arder 
<mol> : : = 
STARTMOL 
ATOMS numatoms 
<a torn>numatoms 
BONOS numbonds 
<bond>numbonds 
[SMILES "smiles"] 
[CMPLX complexity] 
[NAME "dbname"] 
ENDMOL 
<transforrn> ::= 
STARTTRANSFORM 
HEADER 
RXN numrxn 
RATING rating 
SIMPLIFICATION simplification 
[ECHO \\echo"] 
MOLS nummols 
<mol>nummols 
ENDTRANSFORM 
<transforrnlist> : := 
STARTTRANSFORMLIST 
TRANSFORMS numtrans 
<transform>n=tuns 
ENDTRANSFORMLIST 
Las dos estructuras básicas son el átomo (descrito por su posición [x,y), su 
número atómico Z y su carga) y el enlace (descrito por los dos átomos que conecta y su 
orden). Estas estructuras nunca se transmiten en forma independiente, por lo que no 
incluyen textos de control. 
1 Se indica el nombre de la estructura entre llaves (ej. <atom>), seguida de su contenido. Los textos en 
negritas son parte del protocolo de comunicación; los textos en itálicas indican parámetros variables. Los 
corchetes se utilizan para elementos opcionales. 
34 
La siguiente estructura, y la más importante, es la molécula <mol>. La 
descripción de una molécula incluye como mínimo listas de átomos y enlaces. 
Opcionalmente se puede agregar un SMILES (descripción textual de la molécula, se 
explica en la página 50), una estimación de complejidad y un nombre para la molécula, 
extraído de una base de datos. Para transmitir la molécula por la red, se incluyen varios 
textos para control, definidos en el formato. 
Al aplicar una transformada específica, el resultado es una lista de precursores 
químicos. La estructura que describe la transformada nos indica el número de la 
transformada aplicada (índice a la base de datos), varios datos para evaluarla (rating y 
simplificación), posiblemente una lista de comentarios sobre su aplicación, y lo más 
importante, una lista de las moléculas de los precursores. 
Durante un paso de análisis, el servidor aplica varias transformadas para sugerir 
diferentes rutas en el árbol retrosintético. Por esta razón, la respuesta a un comando de 
análisis es una lista de las transformadas aplicadas, donde cada transformada se 
describe como se explicó en el párrafo anterior. 
Otro formato creado para la transmisión por la red de información molecular fue 
el TREETRAN, que permite enviar árboles sintéticos completos. Para esto, se recorre 
el árbol en forma recursiva empezando por la raíz (molécula objetivo) y enviando la 
información correspondiente a cada nodo, como se muestra a continuación. 
<treenode> ::= 
NODE depth width smiles 
<mol> 
[STARTPRECS 
PRECS numprecs 
<t reenode>numprecs 
ENDPRECS] 
Por medio de los datos depth y width se describe el tamaño del subárbol 
completo correspondiente a un nodo; esta información ya la tiene el cliente porque la 
utilizó para desplegar el árbol en la pantalla. El árbol puede reconstruirse fácilmente en 
forma gráfica del lado del servidor, y escribirse a disco sin demasiado procesamiento. 
En este capítulo se ha descrito el proceso de diseño del sistema OSET, que nos 
llevó a una arquitectura cliente/servidor, con el cliente implementado como un applet 
JAVA, y el servidor como un programa en ANSI C. Se describió la forma en que se 
35 
conectan estas partes, y el protocolo de comunicación utilizado para permitir que 
interactúen a través de Internet. 
En los próximos capítulos se explica a más detalle el funcionamiento del servidor 
y el cliente, incluyendo los problemas específicos que atacan y los algoritmos utilizados 
para resolverlos. 
36 
CAPÍTULO 3: SERVIDOR OSET - PERCEPCIÓN 
El servidor OSET recibe del cliente un grafo que representa la molécula a 
analizar. A partir de esta lista de átomos y enlaces, es necesario identificar las 
características estructurales de interés químico, que indicarán más adelante cuáles 
transformadas retrosintéticas puede aplicarse y cómo. 
La etapa de percepción se divide en seis partes: identificación de anillos, 
canonización, búsqueda en base de datos de materias primas, clasificación de átomos, 
identificación de grupos funcionales y cálculo de complejidad molecular. Terminando 
esta etapa, tendremos suficiente información estructural para pasar al análisis 
retrosintético de la molécula. 
Identificación de anillos 
La identificación de los anillos es una de las partes fundamentales de la 
percepción de una estructura química, ya que la presencia de anillos puede influir en 
las propiedades químicas o físicas de los compuestos orgánicos (Gasteiger y Jochum, 
1979). Desde el punto de vista de CAOS: 
• Es necesario identificar los anillos aromáticos de la molécula, ya que tienen una 
reactividad característica que se debe tomar en cuenta para el análisis retrosintético. 
• Existen muchas transformadas cuyo retrón incluye un anillo. Por ejemplo, la 
cicloadición de Diels-Alder, la anillación de Robinson, la adición de carbenos a 
dobles enlaces, la epoxidación, así como las diversas reacciones de síntesis de 
sistemas heterociclicos. 
• Los anillos son el principal elemento de complejidad topológica, por lo que deben 
ser detectados para poder estimar la complejidad de la estructura, así como para la 
identificación de los enlaces estratégicos. 
37 
Desde 1857, en que Cayley utilizó la teoría de grafos para encontrar el número 
de isómeros de CkH2k+2, se estableció que esta teoría permite un manejo simplificado 
de los problemas de Química (Balakrishnan y Ranganathan, 2000). 
Lo que para un químico es un "anillo" es lo que conocemos en teoría de grafos 
como un ciclo. La identificación de anillos puede en principio aproximarse a dos 
problemas: encontrar el conjunto de la base de ciclos de un grafo, o encontrar el 
conjunto de todos los ciclos elementales de un grafo. Sin embargo, como veremos más 
adelante, lo que se necesita desde un punto de vista químico no es ninguno de estos 
dos conjuntos, sino un intermedio. 
A continuación se presentan algunas definiciones básicas,

Continuar navegando