-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall_colab_and_mount_gdrive.qmd
184 lines (144 loc) · 5.06 KB
/
install_colab_and_mount_gdrive.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
---
title: "Instalar software en Colab"
author: Verónica Andreo
date: today
format:
html:
code-tools: true
code-copy: true
code-fold: false
execute:
eval: false
cache: false
keep-ipynb: true
jupyter: python3
---
## 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.
```{python}
%%bash
DEBIAN_FRONTEND=noninteractive
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
apt update
apt install grass subversion grass-dev
apt remove libproj22
```
:::{.callout-note}
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](https://github.com/nextgis/pygdal):
```{python}
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`.
```{python}
# 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.
```{python}
# 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.
```{python}
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:
![](assets/img/colab_mount_gdrive.png)
## 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`](https://googledrive.tidyverse.org/index.html) que permite
la conexión, éste no funciona para conectarnos a nuestro grassdata e iniciar
una sesión de GRASS allí.
```{python}
# 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](https://rpy2.github.io/), 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
R^[Ver <https://www.thediar.com/es/blog/google-colab-drive-r/> y <https://blog.revolutionanalytics.com/2016/01/pipelining-r-python.html>].
```{python}
!pip install rpy2==3.5.1
%reload_ext rpy2.ipython
```
Esto será necesario para nuestra sesión de [OBIA](unidad_3/exercise_obia.html),
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](unidad_5/grass_and_r_sdm.html).
## 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
```{python}
!pip install -U --no-cache-dir gdown --pre
```
Montamos nuestro drive
```{python}
# 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
```{python}
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"
```{python}
!gdown "1zj4bxx0PUsg9dihKfQZfOp550BlMFMIu"
```
Lo descomprimimos en el `homedir`
```{python}
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!