BioJava es un proyecto de código abierto dedicado a proveer herramientas Java para el procesamiento de datos biológicos.VS Matha and P Kangueane, 2009, Bioinformatics: a concept-based introduction, 2009. p26 BioJava es un conjunto de bibliotecas escritas en el lenguaje de programación Java para manipular secuencias, estructuras de proteínas, conversores de archivos (file parsers), la interoperabilidad CORBA, el DAS, el acceso a AceDB, programación dinámica y rutinas estadísticas simples. BioJava es compatible con una amplia gama de datos, a partir de ADN y secuencias de proteínas a nivel de las estructuras 3D de proteínas. Las bibliotecas BioJava son útiles para la automatización de muchas tareas cotidianas y mundanas de la bioinformática como para analizar un archivo PDB , interactuando con Jmol y muchos más. Esta interfaz de programación de aplicaciones ofrece diversos programas de análisis de archivos, modelos de datos y algoritmos para facilitar el trabajo con los formatos de datos estándar y permite el desarrollo rápido de aplicaciones y análisis. Estas bibliotecas también se han utilizado en el desarrollo de diversas herramientas de análisis extendido, por ejemplo :
MUSI : Un sistema integrado para la identificación de la especificidad múltiple de un péptido de gran tamaño o un conjunto de datos de ácidos nucleicos JEnsembl : Una versión-aware de Java API para los sistemas de datos Ensembl Perfiles de expresión de grupos de firmas genéticas con el método de amplificación Trinucleotide threading (TnT) La resolución de las características estructurales de las islas genómicas : un enfoque de aprendizaje automático Biblioteca de utilidad para la bioinformática estructural
El proyecto BioJava surgió del trabajo de Thomas Down y Mateo Pocock para crear una API para simplificar el desarrollo de herramientas bioinformáticas basadas en Java. BioJava es un proyecto de código abierto activo que se ha desarrollado durante más de 12 años y con más de 60 desarrolladores. BioJava es uno de una serie de Bio *. Proyectos diseñados para reducir la duplicación de código. Los ejemplos de este tipo de proyectos que se enmarcan en Bio * aparte de BioJava son BioPython , BioPerl ,BioRuby , EMBOSS etc.
La última versión de BioJava (3.0.5) es una importante actualización de las versiones anteriores. La nueva versión de BioJava contiene varios módulos independientes. El viejo proyecto ha sido trasladado a un proyecto independiente llamado proyecto BioJava-legacy.
La versión más reciente de BioJava es 4.1.0.
Características BioJava proporciona módulos de software para muchas de las tareas típicas de la programación de la bioinformática. Estas incluyen:
Acceso a los datos de nucleótidos y a la secuencia de péptido de bases de datos locales y remotas. La transformación de formatos de registros de base de datos / archivos. Análisis y manipulación de la estructura de la proteína. La manipulación de secuencias individuales. Busca secuencias similares. Creación y manipulación de alineamientos de secuencias. Interfaz de visualización en Swing y AWT
Requerimientos
Desde la versión 3 de BioJava se requiere JDK 1.6.
Licencia
BioJava se encuentra licenciado con LGPL v2.1
Para licenciar los archivos de BioJava, se sigue el tutorial.
Historia y Publicaciones
En el año 2008, se publicó la nota de solicitud de BioJava. Se migró desde su repositorio CVS original al centro de GitHub en abril de 2013.
En octubre de 2012, se publicó el documento más reciente sobre BioJava. A partir de noviembre de 2012 Google Academic cuenta con más de 130 citas.
Módulos
Durante los últimos 2 años, gran parte de la base de código original se han reescrito. BioJava 3 es una clara desviación de la serie de la versión 1. Ahora se compone de varios módulos independientes construidos usando una herramienta de automatización llamada Apache Maven. Estos módulos proporcionan herramientas del estado del arte para la comparación de la estructura de proteínas, por parejas y múltiples alineamientos de secuencias, trabajando con ADN y secuencias de proteínas, análisis de propiedades de aminoácidos, la detección de modificaciones de proteínas y predicción de las desordenadas regiones en las proteínas, así como analizadores de formatos de archivo comunes utilizando un modelo de datos biológicamente significativos. El código original ha pasado a un proyecto separado del proyecto BioJava legacy, que todavía está disponible para la compatibilidad hacia atrás.
Las siguientes secciones describen varios de los nuevos módulos y ponen de relieve algunas de las nuevas características que se incluyen en la versión más reciente de BioJava.
Estructuras proteicas: biojava-structure, biojava-alignment Optional module: biojava-structure-gui for the 3D visualisation Optional external library : JmolApplet.jar for the 3D visualisation
Alineamientos: biojava-alignment, biojava-core, biojava-phylo Required external library: forester.jar
Genomas: biojava-genome.
Secuenciación: biojava-core,biojava-sequencing, Required external library: guava-11.0.1.jar
Árbol Filogenético: biojava-core, Required external library: forester.jar
Propiedades Físico-químicas: biojava-aa-prop, biojava-structure and biojava-core
Desorden de Proteínas: biojava-protein-disorder.
Identificación de Proteínas Modificadas: biojava-modfinder, biojava-structure
Llamadas a Web-Services: biojava-core, biojava-ws
Módulo Principal
Este módulo ofrece clases Java para modelar secuencias de aminoácidos o nucleótidos. Las clases se han diseñado teniendo en cuenta que deben ser conocidos por los biólogos, es decir, los nombres deben tener sentido para los biólogos y al mismo tiempo también proporcionan una representación concreta de los pasos para pasar de una secuencia de genes a una secuencia de la proteína para los científicos de la computación y programadores. Un cambio importante entre el proyecto BioJava Legacy y BioJava3 radica en la forma que ha sido diseñado el framework para aprovechar las últimas innovaciones en Java. Una secuencia se define como una interfaz genérica permitiéndole al resto de los módulos crear cualquier utilidad que opera en todas las secuencias. Clases específicas para las secuencias comunes, tales como ADN y proteínas se han definido con el fin de mejorar la usabilidad para los biólogos. El motor de traducción realmente aprovecha este trabajo al permitir que las conversiones entre las secuencias de ADN, ARN y aminoácidos. Este motor puede manejar los detalles tales como la elección de la tabla de codones, la conversión de codones de inicio de metionina, el recorte de los codones de parada, especificando el marco de lectura y la entrega de secuencias ambiguas.
Se ha prestado atención especial en el diseño del almacenamiento de las secuencias a fin de minimizar los requisitos de espacio. Patrones de diseño especiales, como el patrón Proxy que permitió a los desarrolladores crear el framework de manera tal que las secuencias se puedan almacenar en la memoria, la demanda de un servicio web como UniProt o leer desde un archivo FASTA según sea necesario. Los dos últimos enfoques ahorran memoria al no cargar datos de la secuencia hasta que se hace referencia en la solicitud. Este concepto se puede ampliar para manejar grandes bases de datos genómicas, tales como NCBI, GenBank o una base de datos propietaria.
Módulos de Estructura de Proteínas Esta ventana muestra dos proteínas con IDs "4hhb.A" y "4hhb.B" alineados una contra la otra. El código se muestra en el lado izquierdo. Esto se produce utilizando bibliotecas BioJava que a su vez utiliza visor de Jmol. El FATCAT algoritmo rígido que se utiliza aquí para hacer la alineación. Los módulos de estructura de proteínas proporcionan herramientas para representar y manipular estructuras biomoleculares 3D. En particular, se centra en la comparación de la estructura de proteínas. Los siguientes algoritmos se han aplicado y se incluyen en BioJava.
Algoritmo FATCAT para la alineación del cuerpo flexible y rígido. El algoritmo estándar Combinatoria de Extensión (CE). Una nueva versión de la CE que puede detectar permutaciones circulares en las proteínas. Estos algoritmos se utilizan para proporcionar al RCSB Protein Data Bank (PDB) La herramienta de comparación de proteínas, así como comparaciones sistemáticas de todas las proteínas en el PDB semanalmente. Analizadores de formatos de archivos de PDB y mmCIFFitzgerald,P.M.D. et al. (2006) Macromolecular dictionary (mmCIF). In Hall,S.R. permiten la carga de datos de la estructura en un modelo de datos reutilizable. Esta característica es utilizada por el proyecto SIFTS para mapear entre las secuencias de UniProt y estructuras de PDB. Información de la RCSB PDB puede ser dinámicamente obtenida y sin la necesidad de descargar manualmente los datos. Para la visualización, se proporciona una interfaz para el visor 3D Jmol (http://www.jmol.org/) . El equipo afirma que se está trabajando para mejorar la interacción con los viewers de RCSB PDB.
A continuación se muestra un esquema del código para inicializar una ventana que mostrará y comparará dos secuencias de proteínas. Por favor, tenga en cuenta que esto es sólo un esbozo del código. Para hacer este trabajo tendrá que importar el paquete correcto en "org.biojava.bio.structure" y también añadir manejar excepciones utilizando un bloque try-catch. String name1 = "4hhb.A"; String name2 = "4hhb.B";
AtomCache cache = new AtomCache();
Structure structure1 = null; Structure structure2 = null;
StructureAlignment algorithm = StructureAlignmentFactory.getAlgorithm(FatCatRigid.algorithmName);
structure1 = cache.getStructure(name1); structure2 = cache.getStructure(name2);
Atom[] ca1 = StructureTools.getAtomCAArray(structure1); Atom[] ca2 = StructureTools.getAtomCAArray(structure2);
FatCatParameters params = new FatCatParameters();
AFPChain afpChain = algorithm.align(ca1,ca2,params);
afpChain.setName1(name1); afpChain.setName2(name2);
StructureAlignmentDisplay.display(afpChain, ca1, ca2); El código alinea las dos secuencias de proteínas "4hhb.A" y "4hhb.B" basado en el algoritmo rígido FATCAT.
Módulos Genoma y Secuenciación
Este módulo se centra en la creación de objetos de secuencias de genes desde el módulo principal. Esto se realiza mediante el apoyo al análisis de los siguientes formatos de archivo estándar populares generados por las aplicaciones de predicción de genes de código abierto:
Archivos GTF generados por GeneMark Archivos GFF2 generados por GeneID Archivos GFF3 generados por Glimmer
A continuación, los objetos de secuencias de genes se escriben como un formato GFF3 y se importan en GMOD. Estos formatos de archivo están bien definidos, pero lo que se escribe en el archivo es muy flexible.
En el siguiente código de ejemplo se toma un archivo 454scaffold, que fue utilizado por GeneMark para predecir genes, y devuelve una colección de ChromosomeSequences. Cada secuencia de cromosoma se asigna a una entrada llamada en el archivo FASTA y contendría N secuencias de genes. Las secuencias de genes pueden ser hebra +/- con cambios de marco y múltiples transcripciones.
Pasando la colección de ChromosomeSequences a GeneFeatureHelper.getProteinSequences devolvería todas las secuencias de proteínas. A continuación, puede escribir las secuencias de proteínas a un archivo FASTA.
LinkedHashMap<String, ChromosomeSequence> chromosomeSequenceList = GeneFeatureHelper.loadFastaAddGeneFeaturesFromGeneMarkGTF(new File("454Scaffolds.fna"), new File("genemark_hmm.gtf")); LinkedHashMap<String, ProteinSequence> proteinSequenceList = GeneFeatureHelper.getProteinSequences(chromosomeSequenceList.values()); FastaWriterHelper.writeProteinSequence(new File("genemark_proteins.faa"), proteinSequenceList.values());