b'\n_START_ARTICLE_\nBioJava\n_START_SECTION_\nRequerimientos\n_START_PARAGRAPH_\nDesde la versi\xc3\xb3n 3 de BioJava se requiere JDK 1.6.\n_START_SECTION_\nLicencia\n_START_PARAGRAPH_\nBioJava se encuentra licenciado con LGPL v2.1_NEWLINE_Para licenciar los archivos de BioJava, se sigue el tutorial.\n_START_SECTION_\nHistoria y Publicaciones\n_START_PARAGRAPH_\nEn el a\xc3\xb1o 2008, se public\xc3\xb3 la nota de solicitud de BioJava. Se migr\xc3\xb3 desde su repositorio CVS original al centro de GitHub en abril de 2013.\xe2\x80\x8b_NEWLINE_En octubre de 2012, se public\xc3\xb3 el documento m\xc3\xa1s reciente sobre BioJava. A partir de noviembre de 2012 Google Academic cuenta con m\xc3\xa1s de 130 citas.\n_START_SECTION_\nM\xc3\xb3dulos\n_START_PARAGRAPH_\nDurante los \xc3\xbaltimos 2 a\xc3\xb1os, gran parte de la base de c\xc3\xb3digo original se han reescrito. BioJava 3 es una clara desviaci\xc3\xb3n de la serie de la versi\xc3\xb3n 1. Ahora se compone de varios m\xc3\xb3dulos independientes construidos usando una herramienta de automatizaci\xc3\xb3n llamada Apache Maven.\xe2\x80\x8b Estos m\xc3\xb3dulos proporcionan herramientas del estado del arte para la comparaci\xc3\xb3n de la estructura de prote\xc3\xadnas, por parejas y m\xc3\xbaltiples alineamientos de secuencias, trabajando con ADN y secuencias de prote\xc3\xadnas, an\xc3\xa1lisis de propiedades de amino\xc3\xa1cidos, la detecci\xc3\xb3n de modificaciones de prote\xc3\xadnas y predicci\xc3\xb3n de las desordenadas regiones en las prote\xc3\xadnas, as\xc3\xad como analizadores de formatos de archivo comunes utilizando un modelo de datos biol\xc3\xb3gicamente significativos. El c\xc3\xb3digo original ha pasado a un proyecto separado del proyecto BioJava legacy, que todav\xc3\xada est\xc3\xa1 disponible para la compatibilidad hacia atr\xc3\xa1s._NEWLINE_Las siguientes secciones describen varios de los nuevos m\xc3\xb3dulos y ponen de relieve algunas de las nuevas caracter\xc3\xadsticas que se incluyen en la versi\xc3\xb3n m\xc3\xa1s reciente de BioJava._NEWLINE_Estructuras proteicas: biojava-structure, biojava-alignment Optional module: biojava-structure-gui for the 3D visualisation Optional external library\xc2\xa0: JmolApplet.jar for the 3D visualisation_NEWLINE_Alineamientos: biojava-alignment, biojava-core, biojava-phylo Required external library:       forester.jar_NEWLINE_Genomas: biojava-genome._NEWLINE_Secuenciaci\xc3\xb3n: biojava-core,biojava-sequencing, Required external library: guava-11.0.1.jar_NEWLINE_\xc3\x81rbol Filogen\xc3\xa9tico: biojava-core, Required external library: forester.jar_NEWLINE_Propiedades F\xc3\xadsico-qu\xc3\xadmicas: biojava-aa-prop, biojava-structure and biojava-core_NEWLINE_Desorden de Prote\xc3\xadnas: biojava-protein-disorder._NEWLINE_Identificaci\xc3\xb3n de Prote\xc3\xadnas Modificadas: biojava-modfinder, biojava-structure_NEWLINE_Llamadas a Web-Services: biojava-core, biojava-ws\n_START_SECTION_\nM\xc3\xb3dulo Principal\n_START_PARAGRAPH_\nEste m\xc3\xb3dulo ofrece clases Java para modelar secuencias de amino\xc3\xa1cidos o nucle\xc3\xb3tidos. Las clases se han dise\xc3\xb1ado teniendo en cuenta que deben ser conocidos por los bi\xc3\xb3logos, es decir, los nombres deben tener sentido para los bi\xc3\xb3logos y al mismo tiempo tambi\xc3\xa9n proporcionan una representaci\xc3\xb3n concreta de los pasos para pasar de una secuencia de genes a una secuencia de la prote\xc3\xadna para los cient\xc3\xadficos de la computaci\xc3\xb3n y programadores._NEWLINE_Un cambio importante entre el proyecto BioJava Legacy y BioJava3 radica en la forma que ha sido dise\xc3\xb1ado el framework para aprovechar las \xc3\xbaltimas innovaciones en Java. Una secuencia se define como una interfaz gen\xc3\xa9rica permiti\xc3\xa9ndole al resto de los m\xc3\xb3dulos crear cualquier utilidad que opera en todas las secuencias. Clases espec\xc3\xadficas para las secuencias comunes, tales como ADN y prote\xc3\xadnas se han definido con el fin de mejorar la usabilidad para los bi\xc3\xb3logos. El motor de traducci\xc3\xb3n realmente aprovecha este trabajo al permitir que las conversiones entre las secuencias de ADN, ARN y amino\xc3\xa1cidos. Este motor puede manejar los detalles tales como la elecci\xc3\xb3n de la tabla de codones, la conversi\xc3\xb3n de codones de inicio de metionina, el recorte de los codones de parada, especificando el marco de lectura y la entrega de secuencias ambiguas._NEWLINE_Se ha prestado atenci\xc3\xb3n especial en el dise\xc3\xb1o del almacenamiento de las secuencias a fin de minimizar los requisitos de espacio. Patrones de dise\xc3\xb1o especiales, como el patr\xc3\xb3n Proxy que permiti\xc3\xb3 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\xc3\xban sea necesario. Los dos \xc3\xbaltimos 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\xc3\xb3micas, tales como NCBI, GenBank o una base de datos propietaria.\n_START_SECTION_\nM\xc3\xb3dulos de Estructura de Prote\xc3\xadnas\n_START_PARAGRAPH_\nLos m\xc3\xb3dulos de estructura de prote\xc3\xadnas proporcionan herramientas para representar y manipular estructuras biomoleculares 3D. En particular, se centra en la comparaci\xc3\xb3n de la estructura de prote\xc3\xadnas._NEWLINE_Los siguientes algoritmos se han aplicado y se incluyen en BioJava._NEWLINE_Algoritmo FATCAT para la alineaci\xc3\xb3n del cuerpo flexible y r\xc3\xadgido.[17]_NEWLINE_El algoritmo est\xc3\xa1ndar Combinatoria de Extensi\xc3\xb3n (CE).\xe2\x80\x8b_NEWLINE_Una nueva versi\xc3\xb3n de la CE que puede detectar permutaciones circulares en las prote\xc3\xadnas.\xe2\x80\x8b_NEWLINE_Estos algoritmos se utilizan para proporcionar al RCSB Protein Data Bank (PDB)\xe2\x80\x8b La herramienta de comparaci\xc3\xb3n de prote\xc3\xadnas, as\xc3\xad como comparaciones sistem\xc3\xa1ticas de todas las prote\xc3\xadnas en el PDB semanalmente.\xe2\x80\x8b_NEWLINE_Analizadores de formatos de archivos de PDB\xe2\x80\x8b y mmCIF\xe2\x80\x8b permiten la carga de datos de la estructura en un modelo de datos reutilizable. Esta caracter\xc3\xadstica es utilizada por el proyecto SIFTS para mapear entre las secuencias de UniProt y estructuras de PDB.\xe2\x80\x8b Informaci\xc3\xb3n de la RCSB PDB puede ser din\xc3\xa1micamente obtenida y sin la necesidad de descargar manualmente los datos. Para la visualizaci\xc3\xb3n, se proporciona una interfaz para el visor 3D Jmol (http://www.jmol.org/) . El equipo afirma que se est\xc3\xa1 trabajando para mejorar la interacci\xc3\xb3n con los viewers de RCSB PDB.\xe2\x80\x8b_NEWLINE_A continuaci\xc3\xb3n se muestra un esquema del c\xc3\xb3digo para inicializar una ventana que mostrar\xc3\xa1 y comparar\xc3\xa1 dos secuencias de prote\xc3\xadnas. Por favor, tenga en cuenta que esto es s\xc3\xb3lo un esbozo del c\xc3\xb3digo. Para hacer este trabajo tendr\xc3\xa1 que importar el paquete correcto en "org.biojava.bio.structure" y tambi\xc3\xa9n a\xc3\xb1adir manejar excepciones utilizando un bloque try-catch._NEWLINE_ String name1 = "4hhb.A";_NEWLINE_ String name2 = "4hhb.B";_NEWLINE_ _NEWLINE_ AtomCache cache = new AtomCache();_NEWLINE_         _NEWLINE_ Structure structure1 = null;_NEWLINE_ Structure structure2 = null;_NEWLINE_ _NEWLINE_ StructureAlignment algorithm  = _NEWLINE_ StructureAlignmentFactory.getAlgorithm(FatCatRigid.algorithmName);_NEWLINE_    _NEWLINE_ structure1 = cache.getStructure(name1);_NEWLINE_ structure2 = cache.getStructure(name2);_NEWLINE_     _NEWLINE_ Atom[] ca1 = StructureTools.getAtomCAArray(structure1);_NEWLINE_ Atom[] ca2 = StructureTools.getAtomCAArray(structure2);_NEWLINE_ _NEWLINE_ FatCatParameters params = new FatCatParameters();_NEWLINE_ _NEWLINE_ AFPChain afpChain = algorithm.align(ca1,ca2,params);_NEWLINE_ _NEWLINE_ afpChain.setName1(name1);_NEWLINE_ afpChain.setName2(name2);_NEWLINE_ _NEWLINE_ StructureAlignmentDisplay.display(afpChain, ca1, ca2);_NEWLINE_El c\xc3\xb3digo alinea las dos secuencias de prote\xc3\xadnas "4hhb.A" y "4hhb.B" basado en el algoritmo r\xc3\xadgido FATCAT.\n_START_SECTION_\nM\xc3\xb3dulo de Alineamiento\n_START_PARAGRAPH_\nEste m\xc3\xb3dulo contiene varias clases y m\xc3\xa9todos que permiten a los usuarios realizar alineamientos de secuencias por parejas y por secuencias m\xc3\xbaltiples._NEWLINE_Pairwise alineaci\xc3\xb3n de secuencias_NEWLINE_Para la alineaci\xc3\xb3n global \xc3\xb3ptima, BioJava implementa el algoritmo Needleman-Wunsch\xe2\x80\x8b y para realizar alineamientos locales implementa el algoritmo Smith y Waterman.\xe2\x80\x8b Las salidas de ambos alineamientos locales y globales est\xc3\xa1n disponibles en formatos est\xc3\xa1ndar._NEWLINE_Un ejemplo de c\xc3\xb3mo usar las bibliotecas se muestra a continuaci\xc3\xb3n._NEWLINE_protected void align(String uniProtID_1, String uniProtID_2, PairwiseSequenceAlignerType alignmentType) throws IOException, Exception {_NEWLINE_    ProteinSequence proteinSeq1 = FastaReaderHelper.readFastaProteinSequence((new URL(String.format_NEWLINE_        ("http://www.uniprot.org/uniprot/%s.fasta", uniProtID_1))).openStream()).get(uniProtID_1);_NEWLINE_    ProteinSequence proteinSeq2 = FastaReaderHelper.readFastaProteinSequence((new URL(String.format_NEWLINE_        ("http://www.uniprot.org/uniprot/%s.fasta", uniProtID_2))).openStream()).get(uniProtID_2);_NEWLINE_    _NEWLINE_           SequencePair<ProteinSequence, AminoAcidCompound> result = Alignments.getPairwiseAlignment(proteinSeq1, proteinSeq2,_NEWLINE_                   alignmentType, new SimpleGapPenalty(), new SimpleSubstitutionMatrix<AminoAcidCompound>());_NEWLINE_    System.out.println(result.toString());}_NEWLINE_Un ejemplo de llamada a la funci\xc3\xb3n anterior ser\xc3\xada algo como esto:_NEWLINE_Para un Alineamiento Global_NEWLINE_align("Q21691", "Q21495", PairwiseSequenceAlignerType.GLOBAL);_NEWLINE_Para un Alineamiento Local_NEWLINE_align("Q21691", "Q21495", PairwiseSequenceAlignerType.LOCAL);_NEWLINE__NEWLINE_Adem\xc3\xa1s de estos dos algoritmos, existe una implementaci\xc3\xb3n del algoritmo de Guan-Uberbacher\xe2\x80\x8b que lleva a cabo una alineaci\xc3\xb3n global de secuencias de manera muy eficiente ya que s\xc3\xb3lo utiliza la memoria lineal._NEWLINE_Para alineamiento de secuencia m\xc3\xbaltiples, cualquiera de los m\xc3\xa9todos discutidos anteriormente pueden utilizarse para llevar a cabo progresivamente una alineaci\xc3\xb3n de secuencias m\xc3\xbaltiples.\n_START_SECTION_\nM\xc3\xb3dulo ModFinder\n_START_PARAGRAPH_\nEl m\xc3\xb3dulo ModFinder ofrece nuevos m\xc3\xa9todos para identificar y clasificar las modificaciones de prote\xc3\xadnas en estructuras 3D de prote\xc3\xadnas. Se recogieron y curaron m\xc3\xa1s de 400 diferentes tipos de modificaciones de prote\xc3\xadnas como la fosforilaci\xc3\xb3n, glicosilaci\xc3\xb3n, enlaces disulfuro, quelaci\xc3\xb3n de metales, etc., basadas en anotaciones en PSI-MOD,\xe2\x80\x8b RESID\xe2\x80\x8b y RCSB PDB.\xe2\x80\x8b El m\xc3\xb3dulo tambi\xc3\xa9n proporciona una API para la detecci\xc3\xb3n de modificaciones de prote\xc3\xadnas dentro de las estructuras de las prote\xc3\xadnas._NEWLINE_Ejemplo: identificar e imprimir todas las modificaciones precargados de una estructura\xe2\x80\x8b_NEWLINE_Set<ModifiedCompound> identifyAllModfications(Structure struc) {_NEWLINE_    ProteinModificationIdentifier parser = _NEWLINE_        new ProteinModificationIdentifier();_NEWLINE_    parser.identify(struc);_NEWLINE_    Set<ModifiedCompound> mcs = _NEWLINE_        parser.getIdentifiedModifiedCompound();_NEWLINE_    return mcs;}_NEWLINE_Ejemplo: identificar sitios de fosforilaci\xc3\xb3n en una estructura_NEWLINE_List<ResidueNumber> identifyPhosphosites(Structure struc) {_NEWLINE_    List<ResidueNumber> phosphosites = new ArrayList<ResidueNumber>();_NEWLINE_    ProteinModificationIdentifier parser = _NEWLINE_        new ProteinModificationIdentifier();_NEWLINE_    parser.identify(struc, _NEWLINE_        ProteinModificationRegistry.getByKeyword("phosphoprotein"));_NEWLINE_    Set<ModifiedCompound> mcs = parser.getIdentifiedModifiedCompound();_NEWLINE_    for (ModifiedCompound mc : mcs) {_NEWLINE_        Set<StructureGroup> groups = mc.getGroups(true);_NEWLINE_        for (StructureGroup group : groups) {_NEWLINE_            phosphosites.add(group.getPDBResidueNumber());_NEWLINE_        }_NEWLINE_    }_NEWLINE_    return phosphosites;}_NEWLINE_C\xc3\xb3digo de demostraci\xc3\xb3n para ejecutar los m\xc3\xa9todos anteriores_NEWLINE_import org.biojava.bio.structure.ResidueNumber;import org.biojava.bio.structure.Structure;import org.biojava.bio.structure.io.PDBFileReader;import org.biojava3.protmod.structure.ProteinModificationIdentifier;_NEWLINE_ _NEWLINE_public static void main(String[] args) {_NEWLINE_    try {_NEWLINE_        PDBFileReader reader = new PDBFileReader();_NEWLINE_        reader.setAutoFetch(true);_NEWLINE_ _NEWLINE_        // identify all modifications from PDB:1CAD and print them_NEWLINE_        String pdbId = "1CAD";_NEWLINE_        Structure struc = reader.getStructureById(pdbId);_NEWLINE_        Set<ModifiedCompound> mcs = identifyAllModfications(struc);_NEWLINE_        for (ModifiedCompound mc : mcs) {_NEWLINE_            System.out.println(mc.toString());_NEWLINE_        }_NEWLINE_ _NEWLINE_        // identify all phosphosites from PDB:3MVJ and print them_NEWLINE_        pdbId = "3MVJ";_NEWLINE_        struc = reader.getStructureById(pdbId);_NEWLINE_        List<ResidueNumber> psites = identifyPhosphosites(struc);_NEWLINE_        for (ResidueNumber psite : psites) {_NEWLINE_            System.out.println(psite.toString());_NEWLINE_        }_NEWLINE_    } catch(Exception e) {_NEWLINE_        e.printStackTrace();_NEWLINE_    }}_NEWLINE_Hay planes para incluir las modificaciones adicionales a las prote\xc3\xadnas mediante la integraci\xc3\xb3n de otros recursos como UniProt\xe2\x80\x8b\n_START_SECTION_\nM\xc3\xb3dulo de acceso a servicio Web\n_START_PARAGRAPH_\nDe acuerdo con las tendencias actuales en la bioinform\xc3\xa1tica, herramientas basadas en web est\xc3\xa1n ganando popularidad. El m\xc3\xb3dulo de servicio web permite a los servicios de bioinform\xc3\xa1tica para acceder a trav\xc3\xa9s de protocolos REST. Actualmente, dos servicios se implementan:. NCBI Blast a trav\xc3\xa9s de la Blast URLAPI (anteriormente conocido como QBlast) y el servicio de HMMER web.\xe2\x80\x8b'