Saltar al contenido principal
LibreTexts Español

1.6: Instalación de software (Bioinformática)

  • Page ID
    55206
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    Idealmente, la infraestructura computacional a la que tiene acceso ya incluye una gran cantidad de paquetes de software especializados necesarios para su trabajo, y las instalaciones de software se mantienen actualizadas a medida que los desarrolladores realizan mejoras. Si este no es el caso, podrías considerar sobornar a tu administrador del sistema local con dulces y cafeína. En su defecto, es probable que tenga que instalar el software que necesita usted mismo.

    Instalar software más sofisticado que los simples scripts descritos en el capítulo 5, “Permisos y ejecutables”, seguirá el mismo patrón básico: (1) obtener archivos ejecutables, (2) meterlos en $ Inicio/local/bin, y (3) asegurar que $ Inicio/local/bin esté presente en el $ Variable de entorno PATH. El capítulo 5 cubrió el paso 3, que solo debe hacerse una vez por nuestra cuenta. Los pasos 2 y 3, sin embargo, suelen ser bastante diferentes dependiendo de cómo se distribuya el software.

    En este capítulo, vamos a repasar un ejemplo de instalación y ejecución de una suite de bioinformática conocida como HMMER. Este software busca coincidencias de secuencias proteicas (a partir de un conjunto de secuencias) basadas en un modelo probabilístico oculto de Markov (HMM) de un conjunto de secuencias proteicas similares, como en proteínas ortólogas de diferentes especies. La motivación para elegir este ejemplo no es para que podamos aprender sobre el modelado HMM o específicamente esta suite de software, sino que es una tarea representativa que requiere que los usuarios descarguen archivos, instalen software de diferentes maneras y obtengan datos de repositorios públicos.

    El primer paso para instalar HMMER es encontrarlo en línea. Una simple búsqueda web nos lleva a la página principal:

    imagen

    Convenientemente, vemos un bonito botón grande de “Descargar”, pero el botón indica que la descarga está hecha para macOS X/Intel, el sistema operativo que se ejecuta en mi portátil personal. Debido a que estamos conectados remotamente a una computadora Linux, esta descarga no funcionará para nosotros. Al hacer clic en el enlace “Opciones de descarga alternativas” se revelan opciones que podrían funcionar para el sistema Linux que estamos usando.

    imagen

    En esta captura de pantalla, vemos una serie de opciones de descarga interesantes, incluyendo una para “Fuente”, dos para “binarios de Linux” y a continuación una sugerencia de alguna documentación, a la que volveremos más adelante.

    ¿Fuente o Binario?

    Algún software bioinformático se crea como un simple script del tipo discutido en el capítulo 5: un archivo de texto con un #! línea que hace referencia a un programa de interpretación (que ojalá esté instalado en el sistema) y se haga ejecutable con chmod.

    Pero resulta que tales programas interpretados son lentos debido a la capa extra de ejecución, y para algunas aplicaciones, la conveniencia y relativa facilidad no valen la pena la pérdida de velocidad. En estos casos, el software puede escribirse en un lenguaje compilado, lo que significa que el código del programa comienza como “código fuente” legible por humanos pero luego se procesa en código binario legible por máquina. El truco es que el proceso de compilación necesita ser realizado de forma independiente para cada tipo de CPU. Aunque hay menos tipos de CPU de uso común que en días pasados, las arquitecturas de CPU x86 de 32 y 64 bits siguen siendo comunes, y el software compilado para una no funcionará en la otra. Si el desarrollador ha puesto a disposición binarios compilados compatibles con nuestro sistema, entonces mucho mejor: podemos descargarlos, asegurarnos de que sean ejecutables y colocarlos en $ HOME/local/bin. Alternativamente, es posible que necesitemos descargar los archivos de código fuente y realizar la compilación nosotros mismos. En algunos casos, los desarrolladores distribuyen binarios, pero ciertas características del programa se pueden personalizar en el proceso de compilación.

    imagen

    En aras de la integridad, haremos una instalación fuente de HMMER; más adelante, obtendremos algún otro software como binarios. [1]

    Desempaquetar y descargar

    Vamos a descargar los archivos fuente para HMMER; primero, vamos a crear un nuevo directorio para almacenar descargas, llamadas descargas, en nuestro directorio home (es posible que ya tengas dicho directorio).

    imagen

    Si tuviéramos que hacer clic en el enlace de la página de descarga del HMMER, el navegador web intentaría descargar el archivo ubicado en la URL correspondiente (http://eddylab.org/software/hmmer3/3.1b2/hmmer-3.1b2.tar.gz) al escritorio local. Debido a que queremos que el archivo se descargue al sistema remoto, al hacer clic en el botón de descarga no funcionará. Lo que necesitamos es una herramienta llamada wget, que pueda descargar archivos de Internet en la línea de comandos. [2] La utilidad wget toma al menos un parámetro importante, la URL, para descargar. Por lo general, es una buena idea poner las URL entre comillas, porque a menudo tienen caracteres que confunden el shell y necesitarían ser escapadas o citadas. Adicionalmente, podemos especificar -O<filename>, donde <filename>es el nombre a usar al guardar el archivo. Aunque no se requiere en esta instancia, puede ser útil para URL cuyos nombres de archivo final no son razonables (como index.php? query=fasta&search=drosophila).

    imagen

    En este punto, tenemos un archivo que termina en .tar.gz, conocido como “gzipped tarball”, que representa una colección de archivos que primero se han combinado en un solo archivo (un tarball), y luego comprimido (con la utilidad gzip).

    imagen

    Para sacar el contenido, tenemos que revertir este proceso. Primero, descomprimiremos el archivo con gzip -d hmmer-3.1b1.tar.gz, que reemplazará el archivo con el hmmer-3.1b1.tar sin comprimir. [3] A partir de ahí, podemos des-tar el tarball con tar -xf hmmer-3.1b1.tar (el -x indica extracto, y el f indica que los datos serán extraídos del nombre de archivo especificado).

    I.6_7_Unix_60_GZIP_TAR

    Parece que el tarball gzip contenía un directorio, llamado hmmer-3.1b1.

    Otros métodos de descarga y compresión

    Antes de continuar trabajando con el código fuente descargado, hay un par de cosas a tener en cuenta con respecto a los archivos comprimidos y la descarga. En primer lugar, aunque los tarballs gzip son el formato de compresión más utilizado para sistemas similares a Unix, también se pueden encontrar otros tipos de compresión. Por lo general, se pueden identificar por la extensión del archivo. Diferentes herramientas están disponibles para cada tipo, aunque también hay una utilidad genérica de descomprimir que puede manejar los tipos más comunes.

    Extensión Comando de descomprimir
    archivo.bz2 bunzip2 archivo.bz2
    file.zip descomprimir file.zip
    archivo.tgz Igual que para .tar.gz

    La sintaxis más común para crear un tarball gzip usa la utilidad tar, que puede hacer ambos trabajos de tarring y gzipping de las entradas. Como ejemplo, el comando tar -cvzf hmmer_compress_copy.tar.gz hmmer-3.1b1 crearía (c), con salida detallada (v), un tarball gzipped (z) en un archivo (f) llamado hmmer_compress_copy.tar.gz desde el directorio de entrada hmmer- 3.1b1.

    Tradicionalmente, los archivos comprimidos de código fuente eran la forma más común de distribuir software. Más recientemente, los sistemas de control de versiones (utilizados por los desarrolladores para rastrear los cambios en su software a lo largo del tiempo) se han habilitado para la web como una forma de distribuir software a los usuarios finales. Uno de esos sistemas es git, que permite a los usuarios descargar directorios completos de archivos usando una “URL de clon” a través de la web. GitHub es una página igualmente popular para alojar estos proyectos. Aquí hay una captura de pantalla de la página de GitHub para Sickle, una recortadora de calidad rápida para datos de secuencia de alto rendimiento.

    imagen

    Se muestra la “URL de clon HTTPS” de GitHub después de hacer clic en el enlace verde “Clonar o descargar”; para descargar la fuente de Sickle en la línea de comandos, solo se necesita ejecutar un comando como git clone https://github.com/najoshi/sickle.git, siempre que el programa git esté instalado. (El programa git también se puede utilizar en la línea de comandos para rastrear “instantáneas” de archivos en un directorio a lo largo del tiempo, proporcionando un registro del trabajo realizado. Dichos directorios registrados se pueden sincronizar con GitHub, lo que hace que sea relativamente fácil compartir proyectos con otros.)

    Compilación de la Fuente

    Habiendo descargado y desempaquetado el código fuente HMMER, el primer paso es verificar el contenido del directorio y buscar cualquier archivo README o INSTALAR. Dichos archivos a menudo se incluyen y contienen información importante del desarrollador de software.

    I.6_9_Unix_61_HMMER_CONTENIDOS

    Echando un vistazo al contenido del directorio hmmer-3.1b1, hay un archivo INSTALL, que deberíamos leer con menos. Aquí está la parte superior del archivo:

    I.6_10_UNIX_62_HMMER_INSTAL_DOC

    La documentación de instalación describe una serie de comandos, incluyendo muchos que ya hemos ejecutado (para extraer los datos del tarball gzip). También hay cuatro comandos más enumerados:. /configure, haga, verifique y haga la instalación. Tres de ellos comprenden el “proceso de instalación canónica” — make check es un paso opcional para verificar el éxito del proceso a mitad de camino. Los tres pasos importantes son: (1). /configure, (2) make y (3) make install.

    1. El contenido del directorio (arriba) incluye configure como un script ejecutable, y el comando. /configure ejecuta el script desde el directorio de trabajo actual. Este script generalmente verifica que todas las bibliotecas y programas de requisitos previos estén instalados en el sistema. Más importante aún, este paso puede establecer algunas variables de entorno o crear un archivo llamado Makefile, dentro del cual habrá instrucciones detallando cómo debe proceder el proceso de compilación e instalación, personalizado para el sistema.
    2. En realidad, make es un programa de interpretación muy parecido a bash (que make es probable que devuelva /usr/bin/make —es un programa binario). Al ejecutar make, su comportamiento predeterminado es buscar un archivo llamado Makefile en el directorio actual, y ejecutar un conjunto predeterminado de comandos especificados en el Makefile en el orden especificado. En este caso, estos comandos predeterminados ejecutan los programas de compilación que convierten el código fuente en binarios ejecutables.
    3. El comando make install vuelve a ejecutar make, que busca el Makefile, pero esta vez estamos especificando que el conjunto de comandos “install” en el Makefile debe ejecutarse. Este paso copia los archivos ejecutables binarios (y otros archivos auxiliares, si es necesario) en la ubicación de instalación.

    Este último paso, hacer instalar, puede llevarnos a preguntar: ¿cuál es la ubicación de la instalación? Por defecto, será algo así como /usr/bin, una ubicación en todo el sistema que solo puede escribir el administrador. Entonces, a menos que estemos conectados como root (el administrador), el paso final en el proceso fallará. Debemos especificar la ubicación de instalación, y aunque la instalación en sí ocurre en el tercer paso, todo el proceso se configura en el primer paso. Puede haber muchas opciones que podemos especificar en el. /configure paso, aunque la ubicación de instalación (conocida como PREFIX) es, con mucho, la más utilizada. Corriendo. /configure —help imprime mucha información; aquí está la sección relevante:

    I.6_11_UNIX_63_CONCENTRAR_AYUDA

    La opción —prefix es la que usaremos para determinar dónde deben ubicarse los binarios. Aunque nuestros binarios ejecutables eventualmente irán en $HOME/local/bin, para esta opción vamos a especificar $HOME/local, porque la porción bin de la ruta está implícita (y otros directorios como lib y share también podrían crearse junto el directorio bin). Finalmente, nuestro proceso de instalación canónica modificado constará de tres pasos:. /configure —prefix=$HOME/local, make, y make install.

    I.6_12_UNIX_66_CONFIGURE_PREFIX
    I.6_13_Unix_67_Make_Prefix
    imagen

    En este punto, si navegamos a nuestro directorio $HOME/local, veremos los directorios agregados y los archivos binarios.

    I.6_15_Unix_69_check_HMMER_bins

    Debido a que estos archivos ejecutables existen en un directorio listado en la variable $PATH, podemos, como siempre, escribir sus nombres en el símbolo del sistema cuando trabajamos en cualquier directorio para ejecutarlos. (Aunque, de nuevo, es posible que necesitemos cerrar sesión y volver a entrar para obtener el shell para ver estos nuevos programas. [4])

    Instalación desde binarios

    Nuestro objetivo es ejecutar HMMER para buscar un perfil de conjunto de secuencias en una base de datos más grande de secuencias. Para más detalles, la documentación de HMMER (disponible en el sitio web) es muy recomendable, particularmente la sección “Tutorial”, que describe convertir una alineación múltiple de secuencias en un perfil (con hmmbuild) y buscar ese perfil contra el conjunto más grande (con hmmsearch). También es útil leer la publicación revisada por pares que describe los algoritmos implementados por HMMER o cualquier otro software bioinformático. Incluso si el material está fuera de su área de especialización, revelará las fortalezas y debilidades del software.

    imagen

    Pronto llegaremos a descargar conjuntos de secuencias de consulta y destino, pero rápidamente nos daremos cuenta de que aunque los programas de la suite HMMER pueden producir el perfil y buscarlo contra el conjunto objetivo, no pueden producir una alineación múltiple a partir de un conjunto de secuencias que son similares pero no todas de la misma longitud. Aunque hay muchas herramientas de alineación múltiple con diferentes características, descargaremos el músculo relativamente popular. Esta vez, lo instalaremos desde binarios.

    Vale la pena discutir cómo se va a descubrir estas secuencias de pasos, y qué herramientas usar. Las siguientes estrategias generalmente funcionan bien, aunque la creatividad casi siempre es recompensada.

    1. Lee las secciones de métodos de ponencias con objetivos similares.
    2. Pregunte a sus compañeros.
    3. Buscar en Internet.
    4. Lee la documentación y los trabajos publicados para herramientas con las que ya estás familiarizado, así como aquellas publicaciones que las citan.
    5. No dejes que la aparente complejidad de un análisis te impida dar los primeros pasos. La mayoría de los tipos de análisis emplean una serie de pasos y muchas herramientas, y es posible que no tenga una idea clara de cuál será el procedimiento final. Experimenta con herramientas alternativas y busca ayuda cuando te quedes atascado. Asegúrese de documentar su trabajo, ya que inevitablemente querrá volver sobre sus pasos.

    Si visitamos la página de inicio muscular, veremos una variedad de opciones de descarga, incluyendo binarios para nuestro sistema, Linux.

    I.6_17_MUSCLE_DESCARGAR

    Desafortunadamente, parece que hay dos opciones para los binarios de Linux: 32 bits y 64 bits. ¿Cómo sabemos cuál de estos queremos? Podemos obtener una pista ejecutando el programa uname, junto con el parámetro -a para dar la mayor cantidad de información posible.

    I.6_18_Unix_70_UNAME

    El programa uname da información sobre el sistema operativo, que en este caso parece ser GNU/Linux para una CPU x86 de 64 bits. Si es probable que alguno de los binarios funcione, será el conjunto “i86linux64”. Vamos a conseguir ese tarball gzip en el directorio de descargas.

    imagen

    Tenga en cuenta que en este caso no hemos usado la opción -O para wget, porque el nombre de archivo descrito por la URL (muscle3.8.31_i86linux64.tar.gz) es lo que nos gustaría llamar al archivo cuando se descarga de todos modos. Continuando para desempaquetarlo, encontramos que contiene solo un ejecutable que podemos intentar ejecutar.

    I.6_20_Unix_72_Test_Muscle

    Debido a que no reportó un error de ejecución, podemos instalarlo copiándolo a nuestro directorio $HOME/local/bin. Al hacerlo, le daremos un nombre más sencillo, músculo.

    I.6_21_UNIX_73_INSTAL_MUSCLE

    ¡Ahora nuestro alineador múltiple, músculo, está instalado!

    Ejercicios

    1. Sigue los pasos anteriores para instalar la suite HMMER (de origen) así como muscle (de binarios) en tu directorio $HOME/local/bin. Asegúrate de poder ejecutarlos desde cualquier lugar (incluso desde tu directorio de inicio) ejecutando muscle —help y hmmsearch —help. Ambos comandos deben mostrar texto de ayuda en lugar de un error. Además, comprueba que las versiones que encuentra el shell son de tu directorio home ejecutando qué hmmsearch y qué músculo.
    2. Determine si tiene instaladas las herramientas “NCBI Blast+” buscando el programa blastn. Si están instalados, ¿dónde están ubicados? Si no están instalados, encuéntrelos e instálelos desde binarios.
    3. Instala hoz desde el repo git en https://github.com/najoshi/sickle. Para instalarlo, deberá seguir las instrucciones personalizadas dentro del archivo README.md. Si no tienes el programa git, está disponible para la instalación binaria y fuente en http://git-scm.com.

    Obtención de datos

    Ahora que tenemos el software instalado para nuestro análisis de ejemplo, necesitaremos obtener algunos datos. Suponiendo que no tenemos datos novedosos con los que trabajar, haremos la siguiente pregunta: ¿podemos identificar, usando HMMER y músculo, homólogos de genes P450-1A1 en el conjunto de datos de proteínas Drosophila melanogaster? (Este es un ejemplo inútil, ya que el genoma de D. melanogaster ya está bien anotado.)

    El primer paso será descargar el conjunto de datos de D. melanogaster, que podemos encontrar en http://flybase.org, el repositorio del genoma para genomas de Drosophila. Generalmente, los repositorios genómicos como FlyBase proporcionan conjuntos de datos completos para su descarga, pero pueden ser difíciles de encontrar. Para comenzar, navegaremos a “Archivos”, luego a “Releases (FTP)”.

    I.6_22_FLYBASE_HOME

    A partir de ahí, navegaremos a un lanzamiento reciente, como FB2014_05. Debido a que la información genómica a menudo se actualiza a medida que se dispone de mejor información, las versiones más nuevas son indicadas por las nuevas versiones

    I.6_23_FLYBASE_RECIENTE

    A continuación veremos enlaces para especies específicas; trabajaremos con dmel_r6.02. A menudo es una buena idea anotar números de lanzamiento específicos o fechas de lanzamiento para los conjuntos de datos que descargues, para una descripción eventual en las secciones de métodos de cualquier trabajo que escribas que se basen en esos datos.

    I.6_24_Flybase_DMEL

    El formato más común para la información de secuencia se conoce como FASTA y es el formato que queremos, por lo que el siguiente paso es navegar al directorio fasta. Otras opciones potencialmente interesantes incluyen los directorios gff y gtf, que contienen archivos de anotación basados en texto que describen la ubicación y función de los genes en el genoma. (Estos formatos suelen ser útiles para el análisis de RNA-seq).

    I.6_25_Flybase_Fasta

    Por último, vemos una variedad de archivos gzip que podemos wget en la línea de comandos. Debido a que estamos interesados en el conjunto completo de datos de proteínas para esta especie, usaremos la URL para dmel-todo-traducción-r6.02.fasta.gz.

    I.6_26_flybase_all_translation

    Antes de ejecutar wget en el archivo, crearemos un directorio de proyectos en nuestro directorio home, y un directorio p450s dentro de ahí para trabajar.

    I.6_27_Unix_74_WGET_DMEL

    Debido a que el archivo es gzip, podemos usar gzip -d para descomprimirlo, y luego usar menos -S para ver los resultados sin las largas líneas envueltas en la ventana del terminal.

    I.6_28_Unix_75_GZIP_DMEL

    El resultado ilustra el formato estándar para un archivo FASTA. Cada registro de secuencia comienza con una línea que comienza con un carácter >, y la primera palabra que no contiene espacios en blanco siguiente que se considera el ID de secuencia.

    Formato I.6_29_FASTA_

    Esta línea podría entonces contener caracteres de espacio en blanco y metadatos. El espacio en blanco comprende una secuencia de uno o más espacios, tabulaciones (representadas en Unix/Linux como un carácter especial a veces escrito como\ t), o nuevas líneas (representadas en Unix/Linux como un carácter especial a veces escrito como\ n) en una fila.

    Las líneas que siguen a la línea de cabecera contienen la información de secuencia, y no hay un formato específico para el número de líneas sobre las que se puede romper la secuencia, o la longitud de esas líneas. Después de la última línea de secuencia para un registro, puede comenzar un nuevo registro de secuencia.

    Dependiendo de la fuente del archivo FASTA, los IDs o metadatos pueden representar múltiples piezas de datos; en este ejemplo, los metadatos están separados por espacios y tienen un <label><value>formato =; que es específico de las secuencias de proteínas de FlyBase.

    Para nuestro siguiente truco, descargaremos algunas secuencias de proteínas P450-1A1 de UniProt.org. Uniprot.org es una conocida base de datos de proteínas, y está compuesta por la base de datos “TremBL” y el subconjunto de TremBL, conocido como “Swiss-Prot”. Si bien la primera contiene muchas secuencias con anotaciones, muchas de esas anotaciones han sido asignadas por búsquedas de homología automatizadas y no han sido revisadas. Este último, Swiss-Prot, contiene únicamente secuencias cuyas anotaciones han sido revisadas manualmente.

    Para la descarga, ingresaremos “p450 1A1” en el campo de búsqueda, y filtraremos los resultados solo a aquellos en Swiss-Prot haciendo clic en el enlace “Revisado”, resultando en 28 coincidencias. A continuación, podemos hacer clic en el botón “Descargar” para descargar un archivo “FASTA (canónico)” (en lugar de con todas las isoformas incluidas).

    I.6_30_Uniprot_Descargar

    El sitio web de Uniprot se sometió recientemente a un rediseño, de tal manera que el archivo descargado se transfiere directamente al navegador web, en lugar de presentarse como una URL a la que se podría acceder con wget. Esto no es un problema, ya que nos da la oportunidad de discutir cómo transferir archivos entre el sistema remoto y el escritorio local a través de SFTP.

    Al igual que SSH, SFTP es un protocolo cliente/servidor común. Siempre que el servidor se esté ejecutando en el equipo remoto (de hecho, usa el mismo puerto que SSH, puerto 22, porque SSH proporciona la conexión segura), solo necesitamos instalar y ejecutar un cliente SFTP en nuestro escritorio. Hay muchos clientes SFTP disponibles para Microsoft Windows (por ejemplo, Core-FTP), OS X (por ejemplo, Cyberduck) y sistemas Linux (por ejemplo, sftp en la línea de comandos o el FileZilla gráfica). El cliente discutido aquí se llama FireFTP, y está disponible como una extensión para el navegador web Mozilla Firefox (en sí mismo disponible para Windows, OS X y Linux). Para obtenerlo requiere instalar y ejecutar Firefox, navegar a Herramientas Addons y buscar “FireFTP”.

    I.6_31_Fireftp_search

    Una vez instalado el plugin (lo que requiere reiniciar Firefox), podremos acceder a él desde el submenú Herramientas Desarrollador. Conectar el cliente a un equipo remoto requiere que primero configuremos la conexión seleccionando “Crear una cuenta”. La información básica requerida incluye un nombre de cuenta, el host al que conectarse (por ejemplo, una dirección IP como 128.196.64.120 o un nombre de host como files.institution.edu), así como nuestro nombre de usuario y contraseña.

    I.6_32_FireFTP_Accttab1

    También necesitamos decirle al cliente con qué protocolo conectarse, que se realiza en la pestaña “Conexión”; queremos SFTP en el puerto 22.

    I.6_33_FireFTP_Accttab2

    Con eso logrado, podemos transferir cualquier archivo de un lado a otro usando las flechas verdes en la interfaz, donde el sistema de archivos remoto se muestra a la derecha y el sistema de archivos local se muestra a la izquierda. Aquí está el resultado después de transferir nuestro archivo p450s.fasta.

    I.6_34_Fireftp_Transfer

    DOS/Windows y Unix/Linux

    En su mayor parte, la forma en que se codifica el texto en los sistemas operativos Microsoft (como DOS y Windows) y en sistemas similares a Unix (como Linux y OS X) es similar. Pero hay una diferencia: cómo se representan los extremos de las líneas, o “caracteres de nueva línea”. En sistemas tipo Unix, una nueva línea está representada por un solo byte de 8 bits (el carácter “Line Feed” (NF)): 00001010. En los sistemas Microsoft, están representados por un par de bytes de 8 bits (“Carriage Return” (CR) seguido de NF): 0000110100001010. Esto significa que los archivos de texto creados en archivos operativos de Microsoft pueden no ser legibles en sistemas similares a Unix, y viceversa.

    Afortunadamente, hay utilidades disponibles para convertir entre estos formatos. En la línea de comandos, las utilidades dos2unix y unix2dos convierten a y desde un formato similar a Unix, respectivamente. Esto no suele ser un problema, ya que la mayoría de los programas de transferencia de archivos (incluido FireFTP) realizan automáticamente la conversión adecuada. El archivo de utilidad de línea de comandos también se puede utilizar para determinar el tipo de archivo, incluido su tipo de nueva línea.

    Poniéndolo todo junto

    En este punto, hemos obtenido los datos que deseamos procesar, y hemos instalado con éxito el software que pretendemos ejecutar en esos datos.

    I.6_35_Unix_76_LS_P450s

    El primer paso es correr músculo en el archivo p450s.fasta para producir una alineación múltiple. Una forma rápida de identificar cómo se debe ejecutar un programa como el músculo (qué parámetros se necesita) es ejecutarlo sin ningún parámetro. Alternativamente, podríamos probar las opciones más comunes para obtener ayuda: músculo -h, músculo —ayuda, músculo —h, o músculo -ayuda.

    I.6_36_Unix_77_Muscle_help

    La línea más importante de este texto de ayuda es la información de uso: muscle -in -out <inputfile><outputfile>; los parámetros entre paréntesis angulares indican que el parámetro es requerido (los parámetros no requeridos suelen aparecer entre corchetes rectos). El texto de ayuda adicional indica otros parámetros que podríamos optar por agregar. Presumiblemente, podrían colocarse antes o después de los especificadores de entrada o salida. Entonces, ejecutaremos músculo en nuestro archivo p450s.fasta, y produciremos un archivo cuyo nombre de archivo indique su pedigrí de alguna manera:

    I.6_37_Unix_78_Muscle_CMD

    Una vez que el comando haya terminado de ejecutarse, podremos ver el archivo de alineación con menos -S p450s.fasta.aln.

    imagen

    Con una mayor inspección, veríamos que las secuencias se han hecho de la misma longitud mediante la inserción de caracteres de hueco. El siguiente paso es ejecutar hmmbuild para producir el perfil HMM. Nuevamente, ejecutaremos hmmbuild sin ninguna opción para obtener información sobre qué parámetros necesita.

    I.6_39_UNIX_80_HMMBuild_help

    El resultado de ayuda para hmmbuild es más corto, aunque el comando también señala que podríamos ejecutar hmmbuild -h para obtener información más detallada. La línea de uso, hmmbuild [-options] <hmmfile_out><msafile>, indica que se requieren los dos últimos parámetros, y son el nombre del archivo de salida (para el perfil HMM) y el archivo de entrada de alineación de secuencias múltiples. Los corchetes indican que, antes de estos dos últimos parámetros, se pueden dar una serie de parámetros opcionales, descritos más adelante en la salida de ayuda. En este caso, <hmmfile_out>y <msafile>son posicionales: el argumento penúltimo debe especificar la salida, y el último debe especificar la entrada.

    I.6_40_Unix_81_HMMBuild_CMD

    Después de que termine esta operación, puede ser interesante echar un vistazo al archivo HMM resultante con menos -S p450s.fasta.aln.hmm. Aquí hay un fragmento:

    imagen

    Con cierta lectura de documentación, incluso podemos decodificar cómo se representa el perfil probabilístico en esta matriz de letras y números. Como recordatorio, nuestro directorio de proyectos ahora contiene el archivo de secuencia original, un archivo de alineación múltiple y el archivo de perfil HMM, así como el archivo de proteínas D. melanogaster en el que deseamos buscar el perfil.

    I.6_42_Unix_83_LS_despué_HMMBuild

    En este punto, estamos listos para buscar el perfil en el conjunto de proteínas de D. melanogaster con hmmsearch. Como de costumbre, primero inspeccionaremos el uso de hmmsearch.

    I.6_43_UNIX_84_HMMBUSCAR_AYUDA

    Este breve texto de ayuda indica que hmmsearch puede tomar una serie de parámetros opcionales (y tendríamos que ejecutar hmmsearch -h para verlos), y los dos últimos parámetros son requeridos. Estos dos últimos parámetros constituyen el archivo de perfil HMM que estamos buscando, así como el <seqdb>en el que buscar. No dice qué formato <seqdb>debe ser, así que lo probaremos en nuestro archivo FASTA de D. melanogaster y esperamos lo mejor (si falla, tendremos que leer más texto de ayuda o documentación).

    I.6_44_Unix_85_HMMSearch_CMD

    Tenga en cuenta que no había ninguna opción requerida para un archivo de salida. La ejecución de este comando hace que se imprima bastante información en el terminal, incluyendo líneas como:

    I.6_45_Unix_86_HMMSearch_out_snippet

    Y, cuando ejecutamos ls, encontramos que no se ha creado ningún archivo de salida.

    I.6_46_Unix_87_HMMSearch_out_LS

    Parece que hmmsearch, por defecto, imprime toda su salida significativa en el terminal. En realidad, hmmsearch está imprimiendo su salida al flujo de salida estándar. La salida estándar es el mecanismo de salida principal para los programas de línea de comandos (que no sean escribir archivos directamente). Por defecto, la salida estándar, también conocida como “salida estándar” o “stdout”, se imprime en el terminal.

    Afortunadamente, es posible redirigir el flujo de salida estándar a un archivo indicando esto a nuestro shell con un operador > redirect, y especificando un nombre de archivo o ruta. En este caso, redireccionaremos la salida de standard out a un archivo llamado p450s_hmmsearch_dmel.txt.

    I.6_47_Unix_88_HMMSearch_redirect

    Cuando se ejecuta este comando, no se imprime nada, y en su lugar se crea nuestro archivo. Al usar la redirección >, el archivo se sobrescribirá si ya existe. Si, en cambio, quisiéramos agregar a un archivo existente (o crear un nuevo archivo si no hay ningún archivo al que agregar), podríamos haber utilizado la redirección >>.

    Aquí están los contenidos de nuestro análisis final, un archivo de texto simple con bastante información, incluyendo algunos datos de fila y columna muy bien formateados, como se muestra por menos -S p450s_hmmsearch_dmel.txt.

    I.6_48_Unix_89_hmmbuscar_menos

    Reproducibilidad con scripts

    Es muy poco probable que un análisis de este tipo se realice sólo una vez. La mayoría de las veces, desearemos ajustar o reemplazar los archivos de entrada, comparar con diferentes conjuntos de proteínas o ajustar los parámetros para los programas ejecutados. Así tiene sentido capturar el análisis que acabamos de realizar como un script ejecutable, quizás llamado runhmmer.sh.

    I.6_49_Unix_90_Runhmmer_1

    Tenga en cuenta en lo anterior que hemos roto la línea larga de hmmsearch en dos al terminarla a mitad de camino con una barra invertida y continuarla en la siguiente línea. La barra invertida le permite a bash saber que se va a especificar más del comando en líneas posteriores. (La barra invertida debe ser el último carácter de la línea, sin espacios ni tabulaciones siguientes). Después de hacer este script ejecutable con chmod, podríamos volver a ejecutar el análisis navegando a este directorio y ejecutándolo. /runhmmer.sh.

    ¿Y si quisiéramos cambiar el archivo de entrada, digamos, a argonasa-1s.fasta en lugar de p450s.fasta? Podríamos crear un nuevo directorio de proyectos para trabajar, copiar este script allí, y luego cambiar todas las instancias de p450s.fasta en el script a argonase 1s.fasta.

    Alternativamente, podríamos usar el poder de las variables de entorno para diseñar nuestro script de tal manera que este proceso sea más fácil.

    I.6_50_Unix_92_Runhmmer_2

    Ahora los nombres de archivo de interés se especifican solo una vez, cerca de la parte superior del script, y a partir de entonces el script utiliza sus propios identificadores (como variables de entorno) para referirse a ellos. Reutilizar este script sería tan sencillo como cambiar los nombres de archivo especificados en tres líneas.

    Podemos ir un paso más allá. Resulta que los scripts de shell pueden tomar parámetros desde la línea de comandos. El primer parámetro dado a un script en la línea de comandos se almacenará automáticamente en una variable accesible para el script llamada $1, el segundo parámetro se almacenará en $2, y así sucesivamente. Así podemos generalizar aún más nuestro guión:

    I.6_51_Unix_93_Runhmmer_3

    Podríamos haber reemplazado todas las instancias de $query por $1, pero esta organización hace que nuestro script sea más fácil de leer en el futuro, una consideración importante a la hora de programar. Ahora podemos ejecutar un análisis completo especificando los tres nombres de archivo relevantes en la línea de comandos, como en:. /runhmmer.sh p450s.fasta dmel-todo-traducción-r6.02.fasta p450s_hmmsearch_dmel.txt.

    Este runhmmer.sh es un buen candidato para su inclusión en nuestro $ Inicio/local/bin para que podamos ejecutarlo desde cualquier lugar, aunque es posible que queramos agregar líneas inmediatamente después del #! line, para proporcionar algún texto de ayuda para cualquier persona que intente ejecutar el script sin proporcionar las entradas correctas:

    imagen

    El “if block” anterior solo se ejecutará si el número de parámetros dados ($#) no es igual a 3. Aunque lenguajes como Python proporcionan facilidades mucho más agradables para este tipo de ejecución basada en lógica, la capacidad de proporcionar condicionalmente información de uso para scripts es importante. Como es habitual para bash, el intérprete ignora líneas que comienzan con #.

    Ejercicios

    1. Crea una nueva carpeta en tu carpeta de proyectos llamada c_elegans. Localice el archivo FASTA para el genoma de referencia de Caenorhabditis elegans de http://wormbase.org, y descárguelo a esta carpeta usando wget. El archivo que estás buscando se llamará algo así como C_Elegans.prjna13758.ws244.genomic.fa.gz. Después de que se descargue, descomprima y visualícelo con menos -S.
    2. Instale un cliente SFTP en su escritorio, como FireFTP o CyberDuck, e intente conectarse a la misma máquina en la que inicie sesión a través de SFTP. Descargue un archivo FASTA de algunas secuencias potencialmente homólogas de Uniprot a su escritorio local y transfiéralo a su directorio remoto c_elegans.
    3. Intenta ejecutar muscle y HMMER en las secuencias que descargaste de uniprot.org contra el genoma de C. elegans.
    4. Si tiene acceso a más de una máquina basada en Unix (como una computadora de escritorio OS X y una computadora Linux remota, o dos computadoras Linux remotas), lea la página man para scp con man scp, y también lea sobre ello en línea. Intente transferir un archivo y un directorio entre máquinas usando scp en la línea de comandos.
    5. Escribe un script bash ejecutable que automatice un proceso de algún tipo, e instálalo en tu $HOME/local/bin. Pruebalo después de cerrar la sesión y volver a entrar.

    1. Si tiene privilegios de administrador en la máquina, también están disponibles repositorios de software seleccionados con muchos paquetes. Dependiendo del sistema, si inicia sesión como root, instalar HMMER puede ser tan simple como ejecutar apt-get install hmmer o yum install hmmer.
    2. Una herramienta similar llamada curl se puede utilizar para el mismo propósito. Los conjuntos de características son ligeramente diferentes, por lo que en algunos casos se prefiere curl sobre wget y viceversa. Para las tareas simples de descarga en este libro, o bien bastará.
    3. La utilidad gzip es uno de los pocos programas que se preocupan por las extensiones de archivo. Si bien la mayoría de los programas funcionarán con un archivo de cualquier extensión, gzip requiere un archivo que termine en .gz. Si no está seguro del tipo de un archivo, la utilidad de archivo puede ayudar; por ejemplo, file hmmer-3.1b1.tar.gz informa que el archivo es gzip -compressed data, y lo haría incluso si el archivo no terminara en .gz.
    4. No es estrictamente necesario volver a cerrar sesión y volver a entrar; cuando se trabaja en bash, ejecutar hash -r hará que el shell actualice su lista de software que se encuentra en $PATH.

    This page titled 1.6: Instalación de software (Bioinformática) is shared under a CC BY-NC-SA license and was authored, remixed, and/or curated by Shawn T. O’Neil (OSU Press) .