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:
Bajar los archivos esenciales a nuestra computadora, que además tiene que tener también instalado Anvi'o, o
Lograr que el servidor mande la señal a nuestra computadora.
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
Crear un alias en la computadora personal con sistema operativo Mac o Linux (sorry Windows), editar con nano el archivo .bash_profile desde la terminal:
$ 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