# 2. Introducción a Python, Google Colab y Linux

## <mark style="color:orange;">Objetivos</mark>

* Introducir definiciones y funciones básicas de Python.
* Presentar el concepto de librerías/paqueterías.
* Importar bases de datos existentes.

## <mark style="color:orange;">Introducción</mark>

[Python](https://docs.python.org/3/) es un lenguaje de programación interpretado y orientado a objetos. Fue desarrollado a finales de los 80´s por [Guido van Rossum](https://es.wikipedia.org/wiki/Guido_van_Rossum) y fue publicado por primera vez en 1991. La amplia aplicabilidad y el soporte de paqueterías con los que cuenta, permiten que se construyan productos y _software_ altamente versátiles y escalables en el mundo real. En la ciencia, cada vez es más recurrente el uso de Python en áreas como la Quimioinformática y la Bioinformática para el manejo y análisis de datos complejos, por ejemplo, datos genómicos, imágenes médicas, registros médicos electrónicos y bases de datos de miles (incluso millones) de compuestos químicos.&#x20;

Las características generales de Python son:

* Lenguaje interpretado (rápido para programar): esto significa que no es necesario compilar el código fuente en un programa antes de ejecutarlo. En su lugar, el intérprete de Python lee y ejecuta el código directamente, lo que facilita el desarrollo y la depuración, ya que se puede probar el código por línea o en fragmentos.
* Tipado dinámico (lenguaje sencillo y fácil de aprender): en Python no es necesario declarar el tipo de una variable explícitamente (ver variables en la  sección [Fundamentos de Programación](2.-introduccion-a-python-google-colab-y-linux/2.1-fundamentos-de-programacion)).
* Multiplataforma: esto significa que se puede escribir el código en Python en una plataforma (como Windows) y ejecutarlo en otra (como Linux) sin necesidad de realizar cambios significativos en el código fuente.
* Gratuito y de acceso libre.
* Orientado a objetos: el código en Python se organiza en objetos que pueden tener atributos (datos) y métodos (funcionalidades), lo que facilita la creación de programas modulares y estructurados.&#x20;

En las siguientes secciones se abordarán con mayor detalle los conceptos detrás de la programación con Python.

### <mark style="color:green;">Instalación de Python</mark>

Actualmente la mayoría de las computadoras Linux, macOS y algunas computadoras Windows tienen ya instalada una versión reciente de Python.&#x20;

{% hint style="warning" %}
No es necesaria la instalación de Python u otro programa para el seguimiento de este manual, a menos que se indique lo contrario.
{% endhint %}

Para comprobar que Python está instalado, es necesario ejecutarlo desde la línea de comandos.&#x20;

Aquí el ejemplo desde la terminal Linux:

```bash
python --version
```

&#x20;Si Python no está instalado es necesario descargarlo desde la siguiente página:

{% embed url="https://www.python.org/downloads/" %}

Las instrucciones son distintas dependiendo del sistema operativo. A continuación algunos recursos para instalarlo en su computadora si así lo desea:

{% embed url="https://keepcoding.io/blog-frr/aprende-a-instalar-python-en-tu-ordenador/" %}

{% embed url="https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/instalar-python/" %}

Una vez instalado Python, puede ejecutarse desde la terminal:

<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2F0gmI3StQHDObk0cpdad3%2Fimage.png?alt=media&#x26;token=ac19b5cc-bd56-4bae-a270-d971a6b56473" alt=""><figcaption><p>Python ejecutado en CMD Windows</p></figcaption></figure>

También puede ejecutarse desde el entorno de desarrollo y aprendizaje integrado de Python ([IDLE](https://www.mclibre.org/consultar/python/otros/python-idle.html), por sus siglas en inglés):

<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2FsSSVe82sDb5bKHWkUTAG%2Fimage.png?alt=media&#x26;token=6e05dd79-edf2-4f83-8631-c2b5da06a515" alt=""><figcaption><p>IDLE escribiendo el código</p></figcaption></figure>

<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2FEssYnm2v3u83Zbw2mZ5n%2Fimage.png?alt=media&#x26;token=33f88dfd-c0ce-4f72-bb87-56865254bcca" alt=""><figcaption><p>Ejecutando print ("Hello world") en IDLE</p></figcaption></figure>

También es posible utilizar editores como Visual Studio Code para escribir y ejecutar programas en Python:

<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2FZfjht3dxQEmXzFWbY47W%2Fimage.png?alt=media&#x26;token=2c7edd56-1811-4060-8ae6-20a58c68d246" alt=""><figcaption><p>Visual Studio Code</p></figcaption></figure>

{% embed url="https://www.mclibre.org/consultar/informatica/lecciones/vsc-instalacion.html" %}
Instalación para Windows
{% endembed %}

{% embed url="https://www.arsys.es/blog/como-instalar-visual-studio-code-en-ubuntu" %}
Instalación para Ubunut-Linux
{% endembed %}

Otra alternativa para ejecutar códigos de Python, cuando es necesario hacer varias pruebas rápidas y visualizar el resultado conforme se van ejecutando las celdas de código, son los cuadernos interactivos o _notebooks_. Un ejemplo es[ _Jupyter Notebook_](https://jupyter.org/), una herramienta web en la que se puede ejecutar código, incluir texto e imágenes. Para utilizar _Jupyter_ es necesario instalarlo, sin embargo, actualmente también es posible ejecutarlo en la nube con [Google Colab](https://colab.research.google.com/?utm_source=scs-index).

### <mark style="color:green;">Google</mark> <mark style="color:green;">Colaboratory</mark>

En este libro electrónico utilizamos “Google Colaboratory” como herramienta para escribir y ejecutar código Python en la nube de Google. Con esto, el usuario no requerirá instalar ambientes virtuales para ejecutar los códigos, únicamente se requiere una cuenta de correo electrónico en Gmail.

Otra ventaja de utilizar Google Colab es que permite incluir texto, enlaces a páginas web e imágenes para enriquecer el código y su entendimiento. En caso de necesitar altas prestaciones de cómputo, el entorno permite configurar algunas propiedades del equipo sobre el que se ejecuta el código.

Para crear un cuaderno de código Colab, se puede usar el menú Archivo que aparece en la parte superior izquierda al abrir Drive y en _more_ seleccionar _Google Colaboratory._



<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2FbJStAPW0vdlXp2CR4IZU%2F2023-09-29%2012_15_37-Window.png?alt=media&#x26;token=6f377928-1760-4a97-955c-4f36f400347e" alt=""><figcaption></figcaption></figure>

En caso de abrir un Colab mediante un vínculo (_link_), asegurarse de crear una copia en su propio Drive. De esta forma se asegurará que los cambios o ediciones al código se guarden de forma correcta.&#x20;



<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2Fy8VS5sE6hx9KoQzoCEqt%2F2023-09-29%2014_00_37-Window.png?alt=media&#x26;token=4861e399-4903-4674-968f-d8fab5fcc51f" alt=""><figcaption></figcaption></figure>

### <mark style="color:green;">Cargar archivos en Colab</mark>

Para trabajar con datos proveniente de archivos, estos se deberán subir desde la PC a Google Colab. A continuación se indica el procedimiento.&#x20;

1. Ir al último ícono de la barra lateral a la izquierda de la pantalla ("Archivos" o "Files").
2. Presionar el primer ícono (una hoja de papel con una flecha hacia arriba) y seleccionar el archivo de interés.

<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2FBbwjnX3bwixP1dvxhEh2%2F2023-09-29%2013_59_03-Window.png?alt=media&#x26;token=f4457079-3d35-4574-99e8-72d985a44c62" alt=""><figcaption></figcaption></figure>

3. Una vez que se termine de subir, hacer _click_ derecho sobre el archivo, y seleccionar "copiar ruta".
4. Pegamos la ruta en el argumento de `pd.read_csv()`, y agregamos otro parámetro: `delimiter=""` , donde será necesario poner entre las comillas el caracter que limita las distintas columnas del archivo.

## <mark style="color:orange;">Ejercicio</mark>

Abrir la cuenta de Google Drive y crear un primer Colab. En este primer cuaderno, escribir la primera línea de código:

```python
print('Hola mundo')
```

Ahora cargaremos un archivo al cuaderno de código. Primero, es necesario descargar el archivo y guardarlo en la computadora local:

{% file src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2FGBF6DXAucjDfLbQUFzPE%2FDATA.csv?alt=media&token=ed90e6db-76e3-416a-846b-50c349c2fa70" %}

Subir el archivo descargado al ambiente Colab como se describió en la sección anterior. Usar la instrucción `pd.read_csv()` para leer el archivo. Se debe ejecutar la siguiente orden antes de leer el archivo .csv:

```python
import pandas as pd
```

## <mark style="color:orange;">Para saber más:</mark>&#x20;

* Beginner's Guide to Python. [https://wiki.python.org/moin/BeginnersGuide](https://wiki.python.org/moin/BeginnersGuide)  Fecha de acceso: Noviembre de 2023.
* Joshi J (2021) [Chapter 9 - Python, a reliable programming language for chemoinformatics and bioinformatics.](https://www.sciencedirect.com/science/article/abs/pii/B9780128217481000130?via%3Dihub) In Sharma N, Ojha H, Raghav PK, Goyal RK (Eds.), Chemoinformatics and Bioinformatics in the Pharmaceutical Sciences. Academic Press. doi: [https://doi.org/10.1016/B978-0-12-821748-1.00013-0](https://doi.org/10.1016/B978-0-12-821748-1.00013-0).
* Python Cheat Sheet. InterviewBit. [https://www.interviewbit.com/python-cheat-sheet/](https://www.interviewbit.com/python-cheat-sheet/) Fecha de acceso: Agosto de 2023.&#x20;
* Te damos la bienvenida a Colaboratory. [https://colab.research.google.com/?hl=es#scrollTo=-Rh3-Vt9Nev9](https://colab.research.google.com/?hl=es#scrollTo=-Rh3-Vt9Nev9) Fecha de acceso: Diciembre de 2023.
