Visualización de Anvi'o

Visualización remota

Como normalmente los análisis de Anvi'o se realizan en un servidor, pero la visualización y manipulación se tiene que hacer en un navegador (se recomienda usar Chrome) en nuestra computadora personal, para lograr esto tenemos dos opciones:

Para lograr que el servidor mande la señal del navegador a nuestra compu, tenemos que hacer algunos pasos que están explicados a detalle aquí, pero básicamente,  para una Mac o Linux crear un archivo en la computadora personal.

Computadora personal

$ nano ~/.bash_profile

agregar el siguiente comando al final del archivo, en vez de user poner el nombre de usuario, el IP es el interno del CIAD:

 alias anvio_int="ssh -L 8080:localhost:8080 user@192.168.1.78 | tee /dev/tty | python3 ~/.ssh/run_webbrowser.py"

Si la  conexión es remota (fuera de CIAD) entonces usar una IP diferente:

 alias anvio_ext="ssh -L 8080:localhost:8080 user@187.141.151.196 | tee /dev/tty | python3 ~/.ssh/run_webbrowser.py"

Ahora hay que crear un simple script en bash para que capte la señal del servidor y la mande al navegador por defecto, crear un archivo llamado run_webbrowser.py con nano:

$ nano ~/.ssh/run_webbrowser.py

Una vez abierto el archivo con nano, pegarle el siguiente texto y salir de nano salvando:

import sys

import webbrowser


for line in sys.stdin:

    if "OPEN_ON_LOCAL[" in line:

        line = line.replace("0.0.0.0", "127.0.0.1")

        webbrowser.open(line.split("OPEN_ON_LOCAL[")[1].split("]")[0])

Al terminar de configurar esto hay que cerrar y abrir la terminal de nuevo o bien hacer un source:

$ source .bash_profile

Se puede entonces abrir una nueva terminal en Mac y simplemente llamar el alias que creamos anteriormente: anvio_int o anvio_ext y nos conectará al serviro biobacter, ingresamos nuestro password y ejecutamos anvio.

Servidor remoto

NOTA. esto no es necesario hacerlo pues solo el administrador lo puede hacer y normalmenta ya esta configurado las diferentes versiones de conda para anvio.

Copiar y pegar el siguiente texto y listo

cat << EOF > $(python -c "import os; print(os.path.join(os.path.dirname(os.path.abspath(os.__file__)), 'webbrowser.py'))")

def open_new(url):

    print("OPEN_ON_LOCAL[" + url + "]")

def register(*args, **kwargs):

    pass

def BackgroundBrowser(*args, **kwargs):

    pass

EOF

Posibles problemas detectados

Comunicación con el puerto

En caso que no se pueda establecer una comunicación por que el puerto no corresponde, hay que modificar el alias anterior para que tenga el puerto al que está el servidor tratando de enviar la info; por ejemplo, si el servidor pide el puerto 8081, cambiar de

 $ alias anvio="ssh -L 8080:localhost:8080 user@192.168.1.78 | tee /dev/tty | python3 ~/.ssh/run_webbrowser.py"

a :

 $ alias anvio="ssh -L 8081:localhost:8081 user@192.168.1.78 | tee /dev/tty | python3 ~/.ssh/run_webbrowser.py"

salir y volver a entrar. NOTA. Asegurarse que el comando quede en UNA SOLA línea!

Suele suceder que después de haber utilizado anvio, salir y tratar de volver a ejecutar la visualización, el puerto quede "atrapado" y al tratar de visualizar salga una leyenda en Chrome diciendo que el puerto esta equivocado. Será necesario "liberar" el puerto, por ejemplo si el puerto es el 8080:

$ fuser 8080/tcp

nos saldrá algo similar a esto:

$ 8080/tcp:            21058

El número 21058 es el número de proceso que está atrapando al puerto 8080, ahora tendremos que "matarlo":

$ fuser -k 8080/tcp

Python3

Es necesario que se tenga instalado python 3 en la Mac o Linux, si no está hay que instalarlo:

MacOSX

Instalar Homebrew y luego python3

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

$ brew install python

Checar si se instaló bien y la versión

$ python3 --version