Descripción del formato de secuencias Standard European Vector

Anuncio
Descripción del formato de secuencias Standard
European Vector Architecture (SEVA) con el
lenguaje Synthetic Biology Open Language
(SBOL) para uso computacional.
Estudiante: Marta Carcajona Mata
MÁSTER EN BIOINFORMÁTICA Y BIOLOGÍA COMPUTACIONAL
ESCUELA NACIONAL DE SALUD – INSTITUTO DE SALUD CARLOS III
2014-2015
CENTRO NACIONAL DE BIOTECNOLOGÍA (CNB)
DIRECTOR DE LA TESIS: Ángel Goñi-Moreno
Enero - 2016
ÍNDICE
Resumen
2
Introducción
2
Objetivos
8
Material y métodos
9
Resultados
16
Discusión
22
Conclusiones
25
Bibliografía
25
1
Abreviaturas: SEVA, Standard European Vector Architecture; SBOL, Synthetic
Biology Open Language; EDA, Electronic Design Automation; GDA, Genetic Design
Automation; SBML, Systems Biology Markup Language
1. RESUMEN
El estándar in vivo Standard European Vector Architecture (SEVA), y el estándar
in sílico Synthetic Biology Open Language (SBOL), son dos formatos clave para el
desarrollo de la biología sintética. Sabiendo que la plataforma SEVA ayuda en la
elección de vectores plasmídicos óptimos para la deconstrucción y reconstrucción de
fenotipos procarióticos complejos; y que SBOL es más completo que otros lenguajes
estándar pre-existentes, en este estudio se muestra que la traducción del formato SEVA
al formato SBOL y las aplicaciones diseñadas en el proceso, favorecen el intercambio
de diseño de componentes biológicos para uso en simulación computacional y su
posterior construcción in vivo para ensayos experimentales. Además de describir ambos
estándares, este paper reafirma el beneficio potencial de los softwares con base SBOL
para la comunidad de biología sintética.
2. INTRODUCCIÓN
2.1 Biología sintética
La biología sintética es el diseño y construcción de nuevas partes biológicas,
dispositivos y sistemas, y el rediseño de sistemas biológicos naturales para aplicaciones
útiles. Esto ha permitido a los científicos re-diseñar sistemas ya existentes, ayudando así
a entender los principios de la biología y sus mecanismos subyacentes (Chopra y
Kamma, 2006).
La biología sintética puede ser enfocada de diversas maneras:
- Ingeniería de sistemas biológicos: la síntesis de componentes biológicos los
cuales se pueden ensamblar para crear circuitos biológicos que se comportan de una
forma predecible. Estos componentes biológicos pueden ser intercambiables dentro del
circuito. Por lo tanto, es un intento de llevar los conceptos existentes de la ingeniería,
tales como la estandarización de los componentes, la disociación de los problemas y la
abstracción de la información, a la biología (Endy, 2005).
- Rediseñar sistemas ya existentes: a través de la construcción de sistemas
biológicos, han aparecido algunas lagunas en nuestro actual entendimiento de la
2
biología debido a las diferencias encontradas entre el comportamiento predicho y el
observado. Esto, nos permite entender la biología de una forma más completa. Además,
podemos desarrollar de forma potencial sistemas biológicos menos complejos haciendo
que puedan ser usados para aplicaciones más específicas.
Además, el campo de la biología sintética está generando un tremendo interés
debido a la gran variedad de aplicaciones potenciales como la producción de fármacos
más baratos (Ro y col., 2006), optimización de la producción de biocombustibles
(Atsumi y Liao, 2008), tratamiento potencial de enfermedades como el cáncer
(Anderson y col., 2006) y desarrollo de circuitos genéticos (Bonet y col., 2013).
.
2.2 Estandarización de componentes biológicos
La biología sintética trata a los organismos biológicos como un nuevo medio
tecnológico con un set de características único, entre las que podemos encontrar la
habilidad de auto-repararse, evolucionar y replicar. Estas características crean sus
propios retos de ingeniería, pero son a su vez una fuente de aplicaciones potenciales en
muchos sectores (Khalil y Collins, 2010; Keasling. 2005). Aplicaciones como la
computación biomolecular (Benenson, 2012), ingeniería metabólica (Woolston y col.,
2013), o reconstrucción y exploración de la biología celular (Nandagopal y Elowitz,
2011; Mukherji y van Oudenaarden, 2009), requieren del diseño de nuevos sistemas
genéticos codificados.
Aunque el campo de la ingeniería genética lleva en uso 30 años, el campo
multidisciplinar de la biología sintética es el que trae consigo el concepto de
estandarización para la representación de datos tanto in vivo, como in sílico (Endy,
2005). Todos los campos de la ingeniería necesitan de un set de estándares que usen los
profesionales y permita un intercambio y uso de diseños de sistemas, dispositivos y
componentes. Además, un “formato estándar intercambiable” para diseños de biología
sintética mejoraría mucho la capacidad de reproducir resultados publicados.
Actualmente, es extremadamente difícil repetir diseños de la literatura porque suelen
estar descritos de forma imprecisa y con un lenguaje propenso a malentendidos. Incluso
se omite información y datos críticos debido a que se dan por hecho, como secuencias
finales, etc. Con inputs y outputs estándar definidos por una serie de reglas, la biología
sintética puede ser una disciplina de la ingeniería que permita el desarrollo de softwares
y de herramientas de diseño automatizadas (EDA).
Estas EDA han permitido la producción de muchos y más complejos circuitos
3
biológicos aportándonos una gran cantidad de información hasta la fecha. Para permitir
esta nueva era de la biología, se requieren muchas plataformas de automatización de
diseño genético (GDA) (Myers, 2009; Myers y col., 2009). Un primer paso crítico para
el uso de estas herramientas es conseguir un set de partes genéticas con las cuales se
puede construir un diseño. A pesar de que la mínima descripción para una de las partes
es la anotación de su secuencia de DNA, la representación fiel del comportamiento del
componente no es suficiente solo con su secuencia (Peccoud y col., 2011). Por ello, un
repositorio de partes ideal debería incluir información adicional acerca del componente
incluyendo datos como la cepa en la que se suele usar y el ambiente en el reside esta. En
última instancia, los workflows de biología sintética requieren la capacidad de codificar
información adicional más allá de una secuencia anotada, incluyendo, entre otras cosas,
información del contexto ambiental y experimental, los modelos computacionales de
comportamiento y las mediciones de características de rendimiento. Por lo tanto, se
requiere unos nuevos estándares para lograr estos objetivos.
Con el fin de que los diseños de biología sintética aumenten en complejidad, los
investigadores tendrán que hacer un mayor uso de herramientas de diseño
especializadas y repositorios de partes. La amplia adopción de un estándar de diseño
permitiría al creciente número de herramientas de software el uso de un único modelo
de workflow (Beal y col., 2012) para los biólogos sintéticos tanto de centros de
investigación como en la industria.
Un ejemplo de estandarización in vivo es el Standard European Vector
Arquitecture (SEVA), un estándar de vectores plasmídicos en bacterias gran negativas
(optimizado para pseudomonas) desarrollado en el laboratorio de Víctor de Lorenzo en
el Centro Nacional de Biotecnología; y un ejemplo de estándar in silico, es el Synthetic
Biology Open Language o SBOL, un emergente lenguaje que describe componentes
biológicos de forma muy precisa.
2.3 Standard European Vector Architecture (SEVA)
Como se ha mencionado previamente, la necesidad de unos formatos ya fijados
para la organización y designación de componentes biológicos se ha vuelto más que
evidente en esta era de sistemas y biología sintética (Canton y col., 2008; Endy 2009).
La plataforma “Standard European Vector Architecture” es un recurso web y un
repositorio de material clonado que ayuda en la elección de vectores plasmídicos
óptimos para la deconstrucción y reconstrucción de fenotipos procarióticos complejos
4
(Martínez-Garía y col., 2015).
La base de datos (SEVA-DB, http://seva.cnb.csic.es) es un recurso para
implementar estándares in vivo en el ensamblaje de plásmidos y que ayuda en la
creación de una nomenclatura común y no ambigua basada en un código numérico.
Además, la base de datos funciona como un índice para repositorio de secuencias
funcionales y de construcciones disponibles en la comunidad (Durante-Rodríguez y col.,
2014).
Esta SEVA-DB consiste en una base de datos relacional como el estrato en el
que se guardan los datos, una serie de módulos alojados en un servidor y una
presentación web con los estándares que se aplican para las construcciones. Las
correspondientes secuencias de cada plásmido son accesibles a través de un link a su
entrada en GenBank o a un archivo .gbk.
Adoptando un serie de reglas sencillas sobre cómo construir los plásmidos, el
estándar SEVA facilita la combinación de segmentos funcionales de DNA simplificando
así el análisis y la construcción de diversas bacterias gram negativas.
La base de datos fue diseñada para simplificar la elección de las partes de un
vector para aplicaciones específicas de manera que el usuario pueda, de forma sencilla,
decidir la mejor configuración del origen de replicación, resistencia a antibiótico y
cargo (Figura 1), además de poder contribuir a la plataforma con nuevas construcciones
y reportar problemas.
Esta plataforma SEVA tiene una serie de reglas para el montaje físico de los 3
componentes básicos (origen de replicación, marcador de selección y cargo), edición y
síntesis de las correspondientes secuencias de DNA y, como ya hemos mencionado
antes, incluye la implementación de un código alfanumérico que describe todas las
posibles combinaciones.
Estos principios establecidos permiten el intercambio de múltiples orígenes de
replicación y diversos marcadores de selección antibióticos para dar forma a un marco
para su posterior combinación con una gran variedad de cargos que se puede utilizar
para una gran variedad de aplicaciones. La colección principal de las construcciones que
están disponibles en base de datos de SEVA es solo un punto de partida para la
expansión de la plataforma. La adopción del estándar SEVA llena el gran vacío que
existe entre la capacidad actual de sintetizar DNA y la verdadera ingeniería de bacterias
predecibles y eficaces ya que está sujeto a un formato y una nomenclatura concisos,
minimalistas y estandarizados. Además, estas herramientas son compatibles tanto con
5
viejos, como con nuevos métodos de acoplamiento y clonaje de DNA.
Figura 1. Búsqueda de resultados representativos en la SEVA-DB. La página de inicio incluye una
cabecera con links dirigidos a la estructura del formato de los plásmidos, módulos, nomenclatura,
lista de plásmidos e información de contacto. El usuario recorre la lista de plásmidos, donde la
colección de construcciones está ordenada según el origen de replicación, marcador de selección
antibiótico, tipo de cargo y código SEVA. La página de cada plásmido tiene links a su
correspondiente código en GenBank y la secuencia completa del vector.
2.4 Synthetic Biology Open Language (SBOL)
El Synthetic Biology Open Language (SBOL) ha sido desarrollado como un
estándar para la especificación e intercambio de diseños biológicos en biología sintética
(Galdzicki y col., 2012), siendo más completo que otros lenguajes estándar preexistentes. Esto permite a biólogos sintéticos e ingenieros genéticos intercambiar
diseños, mandar y recibir diseños de centros de biofabricación, facilitar el
almacenamiento de diseños en repositorios y representar diseños en publicaciones
(Galdzicki y col., 2014). Para cumplir estos retos, SBOL trae consigo un formato de
6
estandarización para el intercambio electrónico de información, tanto estructural como
funcional, de diseños biológicos. Este modelo se encuentra actualmente en una versión
beta 2.0 e incluye:
- Representación de componentes DNA y no-DNA como RNA, proteínas,
pequeñas moléculas y otros componentes.
- Descripción de aspectos de comportamiento de los diseños biológicos como las
interacciones moleculares y su relación con los modelos matemáticos correspondientes
descritos en otro estándar in sílico como es el System Biology Markup Language
(SBML, http://sbml.org/Main_Page).
- Asocia estructura y función.
Previos formatos de descripción de secuencias de ácidos nucleicos carecen de
características claves. Por ejemplo, el formato de codificación simple de los FASTA no
tiene en cuenta el diseño. Un ejemplo de formato más sofisticado como es el de
GenBank o Swiss-Prot tiene una anotación muy plana de las características de la
secuencia. Esto se adapta bien para la descripción de sistemas naturales, sin embargo,
no es capaz de representar el diseño de múltiples capas que suelen presentar los sistemas
de ingeniería (Figura 2).
Figura 2. Representación gráfica de los formatos FASTA, GenBank y SBOL. SBOL 2.0 representa
tanto la estructura como la función de un diseño genético de una forma modular y jerárquica.
7
3. OBJETIVOS
Teniendo en cuenta todos los antecedentes expuestos en la introducción, y dado que,
tanto los plásmidos SEVA como el lenguaje SBOL juegan un papel importante en el
desarrollo de la biología sintética, el objetivo de este trabajo se centra en la adaptación
de la plataforma SEVA en lenguaje SBOL para facilitar el intercambio de información
de componentes biológicos y su uso en aplicaciones de diseño automatizadas. Para ello,
se realizarán además, aplicaciones para un mejor acoplamiento de ambos estándares.
4. MATERIAL Y MÉTODOS
4.1 Java y Eclipse
Java es un lenguaje de programación de propósito general, concurrente,
orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias
de implementación como fuera posible. Su intención es permitir que los desarrolladores
de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo, lo
que quiere decir que el código que es ejecutado en una plataforma no tiene que ser
recompilado para correr en otra.
Eclipse es un programa informático compuesto por un conjunto de herramientas
de programación de código abierto multiplataforma. Esta plataforma, típicamente ha
sido usada para desarrollar entornos de desarrollo integrados como el IDE
de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega
como parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse).
Todas las aplicaciones desarrolladas para este proyecto han sido programadas en
java y en eclipse.
4.2 Estructura de los plásmidos SEVA
Como ya hemos mencionado antes, el formato SEVA conlleva una serie de
reglas para el acoplamiento físico de los tres componentes básicos de los vectores
plasmídicos (origen de replicación, marcador de selección y cargo), además de una
nomenclatura para designar a las construcciones correspondientes.
Cada secuencia no artificial usada en las construcciones ha sido previamente
minimizada a la menor secuencia de DNA que mantiene la función. A las secuencias se
les extraen cualquiera de las dianas de estas enzimas restricción: HindIII, PstI, XbaI,
BamHI, SmaI, KpnI, SacI, SalI, EcoRI, SfiI, SphI, AatII, AvrII, PshAI, SwaI, AscI,
8
FseI, PacI, SpeI, SanDI y NotI. Esto es debido a que hay que editar las los componentes
para eliminar las secuencias que se encuentran en la estructura básica de los plásmidos
SEVA. Finalmente, cada módulo es flanqueado por unas dianas de restricción concretas:
los orígenes de replicación por FseI y AscI; los marcadores de antibiótico por SwaI y
PshAI; y el cargo por PacI y SpeI (Figura 3).
Figura 3 – Organización global de la estructura de los plásmidos SEVA. (A) Los vectores SEVA
están formados por tres regiones variables: un cargo (azul), un origen de replicación (verde) y un
marcador antibiótico (morado). Las enzimas usadas para cambiar esas regiones variables están en
el mismo color que su módulo correspondiente. Estos módulos además, están separados por 3
regiones que tienen todos los vectores, los terminadores transcripcionales T0 y T1 y origen de
conjugación oriT. (B) La estructura en detalle del cargo default. Contiene las enzimas de un
polylinker pUC18 desde EcoRI a HindIII. Enzimas adicionales como SfiI, AvrII y NotI están fuera
del polylinker por propósitos específicos de clonación.
9
La primera región variable de los plásmidos SEVA es el marcador de selección
de antibiótico. El segmento de DNA que lleva estos marcadores incluye el gen
estructural para el gen de resistencia a un antibiótico y su promotor nativo flanqueados
por SwaI y PshAI. El tamaño de este segmento de ADN varía entre 0.8 y 1.3 kb,
dependiente del marcador específico.
La segunda parte variable de los vectores SEVA es el segmento de DNA que
contiene el origen de replicación del plásmido, el cual es producido e insertado en el
plásmido entre AscI y FseI. Los distintos orígenes de replicación varían en tamaño
desde 1.6 kb hasta 3.7 kb y dota a los plásmidos de distinto copy number.
Por último, la tercera región variable de los plásmidos SEVA es la porción de
DNA que lleva la función principal del vector. Esta sección se ha designada como
“cargo” (Martínez-García y col., 2011), y está flanqueado por PacI-SpeI. Esta región
confiere un propósito específico al plásmido (clonación, expresión de genes
heterogéneos, fusiones con genes reporteros o integración cromosómica). El cargo
default (Figura 2B), consta de un polylinker básico formado por un array de sitios de
clonaje únicos de pUC18, sitios SfiI/AvrII y NotI upstream del sitio de corte de EcoRI y
un segundo sitio NotI downstream del sitio de HindIII. Los sitios F24 y R24 están en el
cargo default para permitir la verificación de fragmentos insertados.
Además del diseño estándar de las construcciones, el formato SEVA designa de
forma inequívoca cada vector con la nomenclatura. Todos los vectores son llamados
pSEVA seguido de una cifra de 4 dígitos. El primero es el marcador de resistencia a
antibiótico, el segundo el código para el origen de replicación, el tercero para el cargo
(en los casos en los que hay una variante del mismo cargo, se añade una letra mayúscula
al número), y por último, la cuarta posición es para los gadgets, los cuales se designan
con una letra griega minúscula (Figura 4).
10
Figura 4 – Nomenclatura SEVA. Los vectores incluyen 4 módulos (marcador de resistencia a
antibiótico, origen de replicación, cargo y gadget), los cuales están representados por un código de 4
dígitos.
4.3 APE (A Plasmid Editor)
APE es un software para ver, editar y analizar secuencias de plásmidos. Aunque
en su mayoría se ha usado para poder anotar zonas de restricción de distintas enzimas,
también permite labores de edición más avanzadas.
11
Con el objetivo de generar una base de datos de secuencias de los componentes
de los vectores SEVA, editamos las secuencias completas de los plásmidos haciendo uso
de APE. A partir de estas secuencias totales, al remarcar la secuencia de las enzimas que
flanquean cada componente, pudimos anotar la información de cada uno con su
secuencia sin errores. Además, gracias a esto, pudimos observar la presencia una serie
de bases que se intercalan en algunos casos junto a ciertos antibióticos y a T0 y no
estaban registradas en la plataforma SEVA. Hemos detectado la presencia de 3 de estas
anomalías, a las que hemos llamado Scars:
- ScarT0 junto a T0: CAATAATTACG
- ScarSmTc junto a Estreptomicina y Tetraciclina: ATTTACGT
- ScarKmGm junto a Kanamicina y Gentamicina: CGCGCGTTGTC
4.4 Librería libsbolj
Libsbolj es una librería en fase beta que contienen la interfaz en java y su
implementación para SBOL. La librería trae también una API para trabajar con objetos
SBOL y la funcionalidad de leer y escribir documentos SBOL como archivos
XML/RDF. Libsbolj está organizado con el software Apache Maven, el cual administra
como se construye el proyecto gracias a un archivo de información .POM. Las clases
usadas de la librería son:
- ComponentDefinition: Describe la estructura y aspecto físico de las entidades
designadas como DNA, RNA, y proteínas, además de otras entidades con las que
interaccionan, como pequeñas moléculas o propiedades del ambiente. También describe
las relaciones físicas entre subcomponentes, información sobre la orientación y el rango
(Figura 5).
Figura 5: Diagrama UML de la clase ComponentDefinition y sus propiedades asociadas.
12
- Component: Hace función de subcomponente. Incorpora información de
componentDefininition hijo y pertenece a un ComponentDefinition padre.
- Location: Específica las coordenadas y orientación de un componente genético
como moléculas de DNA o RNA o un residuo o sitio de otras macromoléculas como,
por ejemplo, proteínas (Figura 6).
Figura 6: Diagrama UML de la clase Location y sus propiedades asociadas.
- SequenceAnnotation: Describe la localización (clase Location) de subsecuencias dentro de la secuencia total del ComponentDefinition padre. Va asociado a
objetos Component (Figura 7).
Figura 7: Diagrama UML de la clase SequenceAnnotation y sus propiedades asociadas.
- SequenceConstraint: Describe la posición espacial relativa y la orientación de
dos objetos Component que se encuentran dentro del mismo ComponentDefinition
(Figura 8).
13
Figura 8: Diagrama UML de la clase SequenceConstraint y sus propiedades asociadas.
- MapsTo: crea un enlace entre dos ComponentDefinition de manera que pueden
compartir información. Necesita la información del objeto local y del objeto remoto
(Figura 9).
Figura 9: Diagrama UML de la clase MapsTo y sus propiedades asociadas.
- Sequence: Generalmente representa una serie continua de monómeros en un
polímero macromolecular como son el DNA, RNA o proteínas. También puede hacer
referencia a los átomos y uniones de una molécula con una estructura no-lineal (Figura
10).
Figura 10: Diagrama UML de la clase Sequence y sus propiedades asociadas.
14
Una vez que se ha diseñado un componente usando SBOL, se escribe en lo que
la librería denomina un SBOLDocument. Este objeto permite escribir un archivo de
salida XML o RDF con la información contenida en el SBOLDocument. Para
comprender este tipo de archivos, es necesario subirlo a alguna aplicación de diseño que
use el lenguaje SBOL como base, de manera que generará el diseño gráfico del
plásmido a través del archivo.
Para entender mejor la librería, podríamos decir, por ejemplo, que un Component
de DNA puede ser un segmento de DNA que tenga una función particular como podría
ser promoter, open reading frame, ribosome binding site y terminator. El tipo de
Component se indica usando un tipo del sequenceOntology (Eilbeck y col., 2005). Un
Component también puede ser una secuencia que está compuesta por otros objetos
Component. Cada SequenceAnnotation indica la localización (Location) del principio y
el final de la secuencia y la hebra en la que se encuentra (en el caso de componentes de
DNA). El orden de las anotaciones se organiza con el método precedes.
Figura 11: Clases principal del estándar SBOL 2.0. y sus relaciones. Las cajas verdes son clases toplevel y las naranjas son de apoyo. Flechas sólidas indican propiedad y las irregulares indican que
una clase se refiere al objeto de la otra clase.
4.5 Biojava
Biojava es un proyecto público dedicado a implementar un marco de java para
procesar datos biológicos. Trae retinas de análisis y estadística, parsers para distintos
formatos de archivo y permite la manipulación de secuencias. El objetivo de biojava es
facilitar el desarrollo a los bioinformáticos.
Con los métodos de GenbankProxySequenceReader y GenbankReaderHelper,
pudimos verificar que la secuencia total de salida de un plásmido SEVA, ya en lenguaje
15
SBOL, correspondía con la secuencia subida a la base de datos de SEVA. El primer
método lo hace a través del código de genbank, y el segundo requiere tener descargado
archivo .GBK que contenga la información del plásmido.
5. RESULTADOS
5.1 Adaptación de los plásmidos SEVA a lenguaje SBOL
Como hemos explicado antes, la necesidad de crear estándares útiles para la
biología sintética ha impulsado el objetivo final de este proyecto: traducir toda la base
de datos de la plataforma SEVA a lenguaje SBOL y hacerlo accesible para todo el
mundo. El principal problema que encontramos para la asociación de este estándar in
vivo, SEVA, y el estándar in sílico, SBOL, era la forma de implementar ambas
estructuras.
En primera instancia, comenzamos describiendo cada componente de la base de
datos SEVA de forma individual, pero viendo la complicación y el tiempo que habría
que invertir para ello, se decidió hacer algo más práctico y con más potencial: la
creación de dos aplicaciones que permitiesen la traducción instantánea de cualquier
plásmido SEVA a lenguaje SBOL a través de línea de comando.
Ya que, como hemos visto previamente, los plásmidos SEVA solo tienen 3
regiones variables (sin incluir el gadget), decidimos crear un documento SBOL con
todos los componentes fijos (llamado Template) y otro documento con todas las
posibilidades del cargo, orígenes de replicación y marcadores de antibiótico (llamado
Collections).
El
resultado
final
de
la
adaptación
conlleva
la
creación
de
un
ComponentDefinition por cada componente de los plásmidos SEVA, los cuales a su vez,
son sub-componentes (objeto Component) de un ComponentDefinition de un nivel
superior llamado SEVAXXX. Además, se crearon objetos independientes Sequence para
cada secuencia.
Cada ComponentDefinition trae información de nombre, descripción, la
secuencia a través de un enlace a su objeto Sequence correspondiente y su rol de
SequenceOntology. Por último, se añaden SequenceConstraints que determinan el orden
de los componentes a través del método precedes.
Respecto a los MapsTo, hemos creado 3 ComponentDefinition “vacíos” que
representan a cada región variable. Estos ComponentDefinition neutros, y haciendo uso
16
de este método, están asociados a su cargo, origen de replicación y antibiótico concreto
según el SEVA que estemos construyendo. Además, están englobados en un
ComponentDefinition mayor llamado RegionVariable para agrupar todos los objetos
MapsTo.
El ComponentDefinition padre (SEVAXXX), aparte de englobar toda la
información del plásmido (sub-componentes, sub-secuencias, MapsTo), trae una
SequenceAnnotation propia con el origen y fin de la secuencia total.
Figura 11: Diagrama UML del resultado final de la adaptación de SEVA a SBOL.
Por ejemplo, tenemos el ComponentDefinition AscI el cual es a su vez
Component del ComponentDefinition padre pSEVA354. Dentro de la información de
ComponentDefinition, AscI va a tener una descripción, un título y un ID. Además, tiene
una SequenceAnnotation que determina su Location (start 6428 y end 6435). El
ComponentDefinition pSEVA354 tiene englobadas todas las SequenceConstraints, las
cuales refiere a un objeto Component local y otro objeto Component remoto, en este
caso AscI y T1.
17
5.2 Aplicaciones
Se han desarrollado dos aplicaciones para generar cualquier plásmido SEVA en
lenguaje SBOL (Figura 12). La primera y más importante es el constructor de SEVAs en
lenguaje SBOL (SBOLpSEVA.jar) y la otra es la encargada de generar un cargo
personalizado a partir de cargo default de la base de datos de SEVA (CustomCargo.jar).
Como ya hemos mencionado, la primera aplicación construye un plásmido
SEVA en lenguaje SBOL. Al ejecutar la aplicación a través de línea de comando, el
display te preguntará que vector SEVA te gustaría construir (con o sin gadget). Esto dará
lugar a un SBOLDocument con toda la información del SEVA, el cual puede ser subido
a distintas aplicaciones con base SBOL. El .JAR de la aplicación contiene los siguientes
scripts:
- Template: este script se encarga de generar un SBOLDocument que crea un
ComponentDefinition para cada componente fijo de los SEVA (incluyendo los 3
ComponentDefinition vacíos a los que se le hará mapsTo con su región variable
correspondiente) y objetos Sequence para sus respectivas secuencias. Incluye también el
gadget y los scars aunque no se consideren literalmente fijos. En un nivel superior, crea
un ComponentDefinition llamado pSEVA en el cual todos estos ComponentDefinition
anteriores pasan a ser a su vez sub-componentes (objeto Component). El motivo de esto
es que como se tratan de objetos que van estar incluidos en todos los vectores, en la
aplicación principal solo será necesario llamar a ese objeto pSEVA para que se incluya
todo en el archivo de salida. Además, se crean tantas sequenceConstraints en el objeto
pSEVA como lo permita la librería (ver Discusión). También tenemos los componentes
VariableRegion, antibiotic (general), OriV (general) y cargo (general). Estos 3 últimos
componentes sirven para que en la salida final se creen tres objetos MapsTo bajo el
componente VariableRegion que van a contener cada uno el componente general y el
Component concreto al que van unidos (objeto local y objeto remoto).
- Collections: genera un SBOLDocument en el que existen los objetos Sequence
y ComponentDefinition de todos los posibles antibióticos, cargos y OriVs.
- App: El script principal del paquete. Hace uso de los .RDF que han generado
previamente los scripts Template y Collections. Hacemos dos inputStreamReader
solicitando el número de SEVA requerido y la presencia o no de gadget. Es necesario
crear 4 objetos SBOLDocument, 3 para leer la salida (archivos .RDF) de los 2 archivos
anteriores (Template.rdf y Collections.rdf) y el del paquete de CustomCargo
(CustomCargoApp.rdf); y un último para escribir el resultado final, el archivo que se
18
generará como de la salida de la aplicación.
Debido a que aún no está implementado en la librería la extracción en orden de
de los componentes de los archivos Template y Collections, es necesario, indicar en el
script de la aplicación cuál es el orden establecido de los componentes del plásmido
según el estándar SEVA. Mientras se van añadiendo los ComponentDefinition en orden
en el SBOLDocument de salida, un contador va creando y añadiendo como
SequenceAnnotation la posición de comienzo y final para la secuencia de cada
componente; y para un objeto secuencia total. Es en esta aplicación en la que los
componentes vacíos de MapsTo son asociados a su componente concreto según la
petición por consola del usuario. Finalmente, escribe es un archivo .RDF toda la
información. Si el plásmido que pide el usuario no se encuentra en la lista de los
plásmidos ya sintetizados en el laboratorio, el display mostrará el siguiente warning:
“Not contained in the Cannonical Seva Plasmid List”.
Por último, la aplicación contiene una validación a través de biojava (está
comentado ya que la validación se hizo a nivel de desarrollo, por lo que hay que entrar
en el script para usarlo) que comprueba que la secuencia total está correctamente
construida. Esta validación, como se ha explicado antes, se basa en comparar la
secuencia con su archivo de Genbank, tanto añadiendo el número de identificación,
como subiendo el archivo .GBK.
La segunda aplicación diseña un cargo personalizado bajo las instrucciones del
usuario. La herramienta necesita de al menos un SBOLdocument con la información de
los nuevos componentes. Esta información tiene que estar compuesta por el cassette del
cargo customizado que quiera el usuario y las enzimas de restricción que lo rodean, en
formato SBOL, para que pueda realizarse el análisis y edición de secuencias pertinente
para la personalización del cargo default. Una vez que la aplicación detecta de qué
enzimas se trata, hará un intercambio de secuencias con el cargo default y generará otro
SBOLDocument con el cargo completo personalizado. Este SBOLDocument puede ser
utilizado por la primera aplicación para generar un plásmido SEVA personalizado en
forma de documento SBOL.
Debido a que, como hemos mencionado antes, al leer el documento SBOL con el
cassette y las enzimas que lo rodean no se disponen en el orden correcto (ni se han
escrito previamente en el orden correcto), hemos tenido que crear una serie de scripts
con métodos propios para arreglar esto. El .JAR contiene:
- Enzyme: El archivo Enzyme.java contiene un clase que se usará en el script
19
principal que contiene los atributos bioStart, bioEnd, ID y sequence (con sus getters y
setters correspondientes).
- Cassettes: Esta clase tiene los mismos atributos que la anterior (con sus getters
y setters) y un método createCassetteSeqs que al pasarle un SBOLDocument como
parámetro te devuelve un array con todas las secuencias que contiene ese documento.
Además, tiene otro método que hace que cuando apliques en la clase principal
(en el Main de app.java) el método sort (para ordenar arrays) en un array de objetos
Cassette, te lo ordene por el atributo bioStart.
- App: Comienza con un bucle que crea tantos SBOLDocument como parámetros
le pases por línea de comando (cassettes) y luego otro SBOLdocument para el archivo
final de salida. A continuación creamos tantos objetos enzyme como enzimas tiene el
cargo, le seteamos todos sus atributos y las metemos en un array de objetos enzyme.
Paralelamente creamos un string llamado totalSequence con la secuencia del cargo por
defecto.
Tras esto, ejecutamos el método createCassetteSeqs sobre los SBOLDocument
que contienen los cassettes y guardamos cada array de strings (secuencias) de los
cassettes en un ArrayList llamado sequenceList.
Ahora mapeamos esos arrays de secuencias en la totalSequence y seteamos la
secuencia y su bioStart en otro arrayList de objetos Cassettes. Finalmente recorremos la
totalSequence y, mientras detecta las posiciones en las que van los cassettes por su
atributo bioStart, va creando la secuencia final ya modificada.
Figura 12 – Diagrama de uso de las aplicaciones SBOLpSEVA.jar y CustomCargo.jar
20
El resultado final es un SBOLDocument con un objeto ComponentDefinition del
cargo personalizado y su secuencia ya editada. Como hemos mencionado previamente,
este documento podrá ser usado por la aplicación principal para generar el plásmido
SEVA con un cargo que no esté incluido en las listas del repositorio de SEVA.
5.3 Ejemplos de uso
Supongamos que un usuario desea la información del plásmido SEVA 231.
Desde la terminal, deberá colocarse en la carpeta en la que estén las aplicaciones
(SBOLpSEVA.jar y CustomCargo.jar) y los .RDF necesarios (Template.rdf,
Collections.rdf) y ejecutar el siguiente comando:
$ java –jar SBOLpSEVA.jar
El display le pedirá que elija el pSEVA y escribirá 231:
Choose your pSEVA: 231
A continuación pedirá la información sobre el gadget y escribirá N:
Gadget attached? Y or N: N
Esto va a devolver, a la misma carpeta en la que se encuentre, el archivo
pSEVA231.rdf con toda la información sobre el plásmido. Este plásmido además puede
solicitarlo al laboratorio de Víctor de Lorenzo sin ningún coste (es un proyecto opensource), teniendo así la versión in sílico para simulación, e in vivo para experimentación
y con libertad de uso.
Ahora el usuario decide modificar su cargo con una serie de cassettes usando
nuestras aplicaciones. Siguiendo en la misma carpeta que nos encontrábamos, es
necesario que estén también los .RDF con los cassettes que quiera añadir en formato
SBOL (RFPcassette.rdf y PEM7cassette.rdf) y ejecutar:
$ java –jar CustomCargo.jar RFPcassette.rdf PEM7cassette.rdf
Esto generará un archivo CustomCargoApp.rdf que puede ser usado por la
aplicación principal de la siguiente manera:
$ java –jar SBOLpSEVA.jar
Choose your pSEVA: 23Custom
Gadget attached? Y or N: N
Obteniendo así el archivo pSEVA23Custom.rdf con la versión personalizada del
plásmido. Este usuario además puede sintetizar la versión in vivo de su plásmido y
21
mandarlo al laboratorio donde se sintetizan los SEVA para que lo puedan replicar y
añadirlo a la base de datos para que pueda ser solicitado por otros centros en el futuro.
Esto promueve una retroalimentación que beneficia a ambas partes.
6. DISCUSIÓN
La estandarización de modelos biológicos está siendo un punto clave para el
desarrollo de la biología sintética hoy en día. Estándares in vivo como SEVA, permiten
que cada porción de DNA de los plásmidos esté minimizada, caracterizada, editada de
manera que no haya problemas en secuencia ni funcionalidad y flanqueada por dianas
de restricción muy concretas (Martínez-García y col., 2015). Este estándar biológico tan
concreto, permite que no exista incertidumbre alguna acerca del plásmido que está
siendo usado, permitiendo así la combinación de todas sus partes variables en un marco
idóneo.
Respecto a SBOL, además de la gran flexibilidad que tiene a la hora de
describir componentes genéticos, comparado con otros formatos, este proyecto ha
permitido validar la versión 2.0 y contribuir a un superior desarrollo. Aún así, hemos
encontrado funcionalidades que, al ser una versión beta, tenían algunos errores. Como
que la librería no permite, cuando aplicas SequenceConstraint, que un objeto pueda
estar flanqueado en unas ocasiones por un Component y en otras por otro. O que, como
ya hemos descrito antes, no es capaz de leer un SBOLDocument en orden. Aún así, son
errores que actualmente se están corrigiendo.
Aún con esto, podemos afirmar que SBOL es un estándar interdisciplinar, ya que
no solo es un estándar para aplicaciones in vivo o para aplicaciones in sílico, sino que
realiza un trabajo intermedio entre la biología y la bioinformática con sus herramientas
adaptadas a cada rama.
Desde la aparición de SBOL, un gran número de herramientas GDA han
adoptado este lenguaje como base para sus diseños. Debido a que, como se ha explicado
previamente, la salida de un archivo SBOL es un documento .XML de difícil
comprensión, y no todo el mundo tiene los conocimientos de programación necesarios
para describir a través de la librería sus diseños con SBOL, las herramientas
automatizadas en las que hemos hecho hincapié antes juegan un papel de vital
importancia. Estas aplicaciones permiten diseñar un componente SBOL a través de un
display con representaciones gráficas de todas las partes que puede tener un plásmido.
Si ya posees tu componente en formato SBOL en el archivo .XML o .RDF, puedes
22
subirlo a estas aplicaciones y seguir modificándolo desde ahí.
Además, algunas de estas herramientas te ofrecen la posibilidad de usar SBML,
otro lenguaje estándar que posee información sobre los algoritmos de los modelos
bioquímicos, teniendo así toda la información funcional, estructural y matemática del
componente en un único documento. Esto facilita enormemente el intercambio de datos
con laboratorios y centros de biofabricación.
Un ejemplo de herramienta de diseño automatizado de componentes biológicos,
que utiliza SBOL como base, es Cello (http://www.cellocad.org/), una herramienta muy
utilizada actualmente, desarrollada por el MIT y en la que colabora el laboratorio de
Víctor de Lorenzo. Cello, a partir de las funciones que le pide el usuario, y con lenguaje
SBOL como base, diseña circuitos (Figura 13). Una vez que está completo, busca en
bases de datos y repositorios el componente biológico idóneo para la construcción según
los datos descritos en formato SBOL, y manda la información del circuito completo a
centros de biofabricación, los cual insertarán esas partes que conforman el circuito en un
vector. El problema y la dificultad que reside en esto, es que, aunque el circuito pueda
estar perfectamente diseñado, su interacción con ese vector o con la célula podría no
permitir su funcionamiento óptimo.
Ahora que SEVA tiene todos sus componentes y plásmidos traducidos al formato
SBOL y, como ya hemos explicado, no existe incertidumbre con los vectores SEVA y la
célula con la que interacciona, este tipo de errores se corregirían. De manera que si las
puertas lógicas del circuito no son las esperadas usando un vector SEVA, la única
posibilidad es que el circuito esté mal, no como podría pasar con vectores de otros
centros de fabricación.
Figura 13 – Ejemplo de diseño de circuitos usando Cello
23
Otra herramienta a destacar es SBOL Visual (VisBOL, http://visbol.org/design/),
un programa de representación gráfica de diseños biológicos que aún no tiene las
actualizaciones necesarias para su uso con SBOL 2.0 y no incluye la representación de
plásmidos (en curso).
Figura 14 – Ejemplo de diseño de componentes usando SBOL Visual
Otro objetivo en curso, y
que ha surgido a partir de este proyecto, es la
colaboración con bases de datos de componentes biológicos en formato SBOL 2.0. De
esta manera, la exportación, importación e intercambio de componentes se facilita.
Además, gracias a la traducción de la plataforma SEVA, todos sus plásmidos e incluso
sus componentes individuales se encontrarán en estas bases de datos, expandiendo así
su disponibilidad y funcionalidad.
Actualmente estamos en contacto con los desarrolladores de las bases de datos
que quieren albergar SBOL, como es SBOLhub (http://www.sbolhub.com/), la cual se
encuentra actualmente en desarrollo por los creadores de SBOL: o SYNBIS del Imperial
College, debido a que quieren hacer uso de las aplicaciones que hemos desarrollado
para facilitar el diseño personalizado de SEVAS, no solo del cargo sino de todo el
plásmido.
24
7. CONCLUSIONES
- La biología sintética necesita de estándares, no solo in vivo como es SEVA, pero
también estándares de representación y conceptualización in sílico de dispositivos,
como es SBOL.
- Es muy importante asociar estos estándares
- La funcionalidad de los SEVAs se expande no solo al diseño de los cargos, sino al
diseño de plásmidos enteros, haciendo que la plataforma SEVA sea más accesible.
8. BIBLIOGRAFÍA
Anderson, J.C., Clarke, E.J., Arkin, A.P., 2006. Environmentally controlled invasion of
cancer cells by engineering bacteria Journal of Molecular Biology 35:619–627.
Atsumi, S., Liao, J.C. 2008. Metabolic engineering for advanced biofuels production
from Escherichia coli. Current Opinion in Biotechnology 19:414–419.
Beal, J., Weiss, R., Densmore, D., Adler, A., Appleton, E., Babb, J., Bhatia, A.,
Davidsohn, N., Haddock, T., Loyall, J., Schantz, R., Vasilev, V., Yaman, F. 2012.
An end-to-end workflow for engineering of biological networks from high-level
specifications. ACS Synth. Biol. 1:317–331.
Benenson, Y. 2012. Biomolecular computing systems: principles, progress and
potential. Nat. Rev. Genet. 13:455–468.
Bonnet, J., Yin, P., Ortiz M.E., Subsoontorn, P., Endy, D. 2013 Amplifying genetic logic
gates. Science 340(6132):599-603.
Canton, B., Labno, A., Endy, D. 2008. Refinement and standardization of synthetic
biological parts and devices. Nature Biotechnology 26:787-793.
Chopra, P., Kamma, A. 2006. Engineering life through Synthetic Biology. In Silico Biol.
6(5):401-410.
Durante-Rodríguez G., de Lorenzo V., Martínez-García E. 2014. The Standard European
Vector Architecture (SEVA) plasmid toolkit. Methods Mol. Biol. 1149:469-478.
Eilbeck, K., Lewis, S.E., Muganll, C.J., Yandell, M., Stein, L., Durbin, R., Ashburner,
M. 2005. The Sequence Ontology: a tool for the unification of genome
annotations. Genome Biology 6:R44
Endy, D. 2005. Foundations of engineering biology. Nature 438:449-453.
25
Galdzicki, M., Wilson, M.L., Rodríguez, C.A., Pocock, M.R., Oberortner, E., Adam,
L., Adler, A., Anderson, J.C., Beal, J., Cai, Y., Chandran, D., Densmore, D., Drory,
O., Endy, D., Gennari, J.H., Grünberg, R., Han, T.S., Hillson, N.J., Johnson, J.D.,
Kuchinsky, A., Lux, M.W., Madsen, C., Misirli, G., Myers, C.J., Olguin C.,
Peccoud, J., Plahar, H.A., Platt, D., Roehner, N., Sirin, E., Smith, T.F., Stan, G.B.,
Villalobos A., Wipat, A., Sauro, H.M. 2012. Synthetic Biology Open Language
(SBOL) Version 1.1.0. BBF RFC 87:1-26
Galdzicki, M., Clancy, K.P.,., Oberortner, E., Pocock, M., Quinn, JY., Rodríguez,
C.A., Roehner, N., Wilson, M.L., Adam, L., Anderson, J.C., Bartley, B.A Beal, J.,
Chandran, D., Chen, J., Densmore, D., Endy, D., Grünberg, R., Hallinan,
J., Hillson, N.J., Johnson, J.D., Kuchinsky, A., Lux, M.W., Misirli, G., Peccoud,
J., Plahar, H.A., , E., Stan, G.B., Villalobos A., Wipat, A., Gennari, J.H., Myers,
C.J., Sauro, H.M. 2014. The Synthetic Biology Open Language (SBOL) provides
a community standard for communicating designs in synthetic biology. Nature
Biotechnology 32:545-550
Keasling, J. 2005. The promise of synthetic biology. The Bridge 35:18–21.
Khalil, A.S., Collins, J.J. 2010. Synthetic biology: applications come of age. Nat. Rev.
Genet. 11:367–379.
Martinez-Garcia, E., Calles, B., Arevalo-Rodriguez, M., de Lorenzo, V. 2011. pBAM1:
an all-synthetic genetic tool for analysis and construction of complex bacterial
phenotypes. BMC Microbiol 11:38.
Martinez-Garcia, E., Aparicio, T., Goñi-Moreno, A,. Fraile, S., de Lorenzo, V. 2015.
SEVA 2.0.: an update of the Standard European Vector Architecture for de-/reconstruction of bacterial functionalities. Nucleic Acids Res. 43(Database
issue):D1183-9
Mukherji, S., van Oudenaarden, A. 2009. Synthetic biology: understanding biological
design from synthetic circuits. Nat. Rev. Genet. 10:859–871.
Myers, C.J. 2009. Engineering genetic circuits. London: Chapman y Hall/CRC
Myers, C.J., Barker, N., Kuwahara, H., Jones, K., Madsen, C., Nguyen, N.-P.D. 2009.
Genetic design automation. En IEEE/ACM international conference on computeraided design (pp. 713-716).
Nandagopal, N., Elowitz, M.B. 2011. Synthetic biology: integrated gene circuits.
Science 333:1244–1248.
26
Peccoud, J., Anderson, J.C., Chandran, D., Densmore, D., Galdzicki, M., Lux, M.W.,
Rodriguez, C.A., Stan, G.B., Sauro, H.M. 2011. Essential information for
synthetic DNA sequences. Nature Biotechnology. 29(1):22.
Ro, D.-K., Paradise, E.M., Ouellet, M., Fisher, K.J., Newman, K.L., Ndungu, J.M., Ho,
K.A., Eachus, R.A., Ham, T.S., Kirby, J., Chang, M.C.Y., Withers, S.T., Shiba, Y.,
Sarpong, R., Keasling, J.D. 2006. Production of the antimalarial drug precursor
artemisinic acid in engineered yeast. Nature 440:940–943.
Woolston, B.M., Edgar, S., Stephanopoulos, G. 2013. Metabolic engineering: past and
future.Annu. Rev. Chem. Biomol. Eng. 4:259–288.
27
Descargar