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 dos archivos, uno en la computadora personal y otro en la instalación de Anvi'o en el servidor remoto:
$ 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, pero puede ponerse el externo:
alias anvio="ssh -L 8080:localhost:8080 user@192.168.1.78 | 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
A este archivo pegarle el siguiente texto:
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])
Se puede entonces abrir una nueva terminal en Mac y simplemente llamar el alias que creamos anteriormente:
$ anvio
Crear un archivo en la instalación personal de anvio en el servidor, se puede pegar y copiar los siguiente una vez que se haya activado anvio:
$ source ~/virtual-envs/anvio-5.x/bin activate
Donde anvio-5.x es la versión de la instalación de Anvi'o que tengamos.
2. 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
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.
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