Instalar software en Colab

Autor/a

Verónica Andreo

Fecha de publicación

15 de septiembre de 2023

Instalar GRASS GIS en Colab

Como primer paso, cada vez que iniciemos una nueva sesión, necesitaremos instalar GRASS GIS. Pueden copiar estas celdas a sus copias de las notebooks con las que trabajaremos.

%%bash
DEBIAN_FRONTEND=noninteractive 
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable 
apt update 
apt install grass subversion grass-dev
apt remove libproj22
Nota

Si al importar datos con reproyección al vuelo, se encuentran con errores del tipo: Flag -r requires GDAL library: No module named '_gdal', se recomienda instalar la librería pygdal:

pip install pygdal

Conectar nuestro Drive a la sesión de Colab

Luego, montamos nuestro drive donde tenemos la carpeta curso_grass_2023. Para eso importamos la librería drive.

# import drive from google colab
from google.colab import drive 

Definimos un punto de montaje y montamos nuestro drive, esto es equivalente a enchufar y leer un pen drive o un disco externo. Nos va a pedir que le demos permisos para acceder.

# define mounting point and mount drive
drive.mount("/content/drive")

Definimos la carpeta curso_grass_2023 como nuestro home, nos movemos allí y listamos su contenido para corrobar que estamos donde queremos estar.

import os

homedir = "/content/drive/MyDrive/curso_grass_2023"
os.chdir(homedir)
os.listdir()

También podemos montar nuestro drive directamente desde la interfaz gráfica y ver allí el contenido de las carpetas:

Ejecutar comandos de R en Colab

Colab nos permite ejcutar comandos de python por defecto. Usando ciertos caracteres mágicos como ! o %%bash podemos ejecutar comandos en bash, i.e., como en una terminal de Linux. En este caso, colab tiene Ubuntu.

Para ejecutar comandos de R, tenemos dos opciones. Una es simplemente cambiar de runtime o entorno de ejecución a R. Para esto, vamos al menú principal Runtime >> Change runtime type y en el cuadro que se despliega elegimos R. El problema con esta aproximación es que no hay una forma nativa de montar nuestro GDrive y acceder fácilmente a los archivos. Si bien existe un paquete de R googledrive que permite la conexión, éste no funciona para conectarnos a nuestro grassdata e iniciar una sesión de GRASS allí.

# install and load googledrive library
install.packages("googledrive")
library("googledrive")

# authorize google drive
drive_auth(
  email = gargle::gargle_oauth_email(),
  path = NULL,
  scopes = "https://www.googleapis.com/auth/drive",
  cache = gargle::gargle_oauth_cache(),
  use_oob = gargle::gargle_oob_default(),
  token = NULL
)

# list content
drive_ls()

La segunda opción, que usaremos en este curso, es instalar y cargar en el entorno un paquete de python, rpy2, que nos permite hacer interfaz con R. La ventaja de esta aproximación es que podemos montar nuestro drive muy fácilmente e iniciar una sesión de GRASS allí sin problemas. La desventaja es que, como no cambiamos el entorno de ejecución, en cada celda donde ejecutemos comando de R necesitamos escribir el comando mágico %%R para líneas de código en R1.

!pip install rpy2==3.5.1
%reload_ext rpy2.ipython

Esto será necesario para nuestra sesión de OBIA, en que para la clasificación de los objetos la función llama a R internamente, y también para la sesión de modelado de nicho con GRASS y R.

Ejecutar comandos de R en The Whole Tale

Abrir la notebook de la unidad 5 directamente en RStudio dentro del Tale. Como está preparada para Colab, será necesario, además de adecuar algunas rutas a carpetas y archivos, cambiar las celdas o chunks de python a r y borrar el comando mágico %%R pues no será necesario.

Descarga rápida de datos en Drive

Instalamos el paquete gdown en el entorno Colab

!pip install -U --no-cache-dir gdown --pre

Montamos nuestro drive

# import drive from google colab
from google.colab import drive 
# define mounting point and mount drive
drive.mount("/content/drive")

Establecemos el homedir y entramos al directorio

import os
homedir = "/content/drive/MyDrive/curso_grass_2023"
os.chdir(homedir)

Descargamos el archivo para los días 2 a 5 via su “id”

!gdown "1zj4bxx0PUsg9dihKfQZfOp550BlMFMIu"

Lo descomprimimos en el homedir

from zipfile import ZipFile
import os

with ZipFile('datos_curso_grass_dia_2a5.zip', 'r') as f:
  #extract in current directory
  f.extractall()
  f.close()

Listo!