19 de agosto 2015

Introducción

Antes de conocer el programa que estaremos cubriendo, vale la pena hacernos algunas preguntas que nos ayuden a entender la importancia y relevancia que juega el cómputo en la ciencia actual.

  • ¿A qué nos referimos con cómputo científico?

  • ¿Cuáles son las áreas de la ciencia dónde se usa?

  • ¿En cuáles áreas de la física se usa?

Temas

  1. Herramientas básicas
    • GNU/Linux
    • Shell scripting
    • Python
    • R
    • Git
  1. Ajustes de curvas
    • Mín. cuadrados
    • Máx. verosimilitud
    • Cálculo de incertidumbres
    • Pruebas de hipótesis
  1. Monte Carlo
    • Integración
    • Accept/Reject
    • Pseudo experimentos
  1. Metodos de clasificación
    • Árboles de decisión
    • Random Forest
    • Redes neuronales
  1. Ecuaciones diferenciales
    • Runge-Kutta

GNU/Linux

GNU/Linux

  • Usaremos Ubuntu 14.04 (trusty) como nuestro estándar. Sin embargo, bajo su propia responsabilidad, también puede usarse distribuciones como Debian, Suse, Fedora, Scientific Linux, Gentoo, Mandriva, etc.
  • Si no les es posible instalar una distribución porque no tienen total control de su equipo, pueden usar servicios como https://c9.io/
  • Nuestra interfaz básica con el sistema será a través de la terminal o consola
  • Una lista de comados que nos serán útiles son los siguientes:
    • ls, cd, echo, grep, more, less, cat, mkdir, touch, cp, mv, sed, awk, chmod, chown, ps, kill, xargs, sudo, rm entre otros
    • man y whatis nos sirven para ver cómo usar los comandos,
    whatis ls
    ## ls (1)               - list directory contents
  • Cada distribución de linux tiene su manejador de paquetes, 1, 2. En Ubuntu es apt-get y es en donde yo pondré los ejemplos. Si deciden usar otra distribución, familiarícense con su manejador de paquetes.

GNU/Linux

Para conocer qué version de GNU/Linux tenemos instalado podemos explorar los archivos del sistema

cat /etc/*release
## DISTRIB_ID=Ubuntu
## DISTRIB_RELEASE=14.04
## DISTRIB_CODENAME=trusty
## DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
## NAME="Ubuntu"
## VERSION="14.04.3 LTS, Trusty Tahr"
## ID=ubuntu
## ID_LIKE=debian
## PRETTY_NAME="Ubuntu 14.04.3 LTS"
## VERSION_ID="14.04"
## HOME_URL="http://www.ubuntu.com/"
## SUPPORT_URL="http://help.ubuntu.com/"
## BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
  • Tarea 1, investigar qué hace el programa cat, ¿qué significa * en el comando anterior?
    Ayuda: regex

#!/usr/bin/env bash

Nuestro primer bash script

vi hello_world.sh (presionar i, intertar texto, presionar esc w q enter en orden consecutivo).

#!/usr/bin/env bash
#This is a comment
hello="Hello World!" # creating a local variable
echo hello #We are not calling the variable
echo $hello  #This is the correct way to call a variable
## hello
## Hello World!
  • ¿Qué significa #!?
  • ¿Qué hace el símbolo #?
  • ¿Cómo se ejecuta?
  1. source hello_world.sh
  2. chmod +x hello_world.sh
    ./hello_world.sh

#!/usr/bin/env python

Python

Python 3 está instalado por default en las nuevas versiones de Ubuntu, sin embargo la versión por defecto sigue siendo la 2.7.x, en este curso usaremos 2.7 por facilidad.

python -V
## Python 2.7.6

Si no tienen una versión 2.7.x: sudo apt-get install python2.7 o el correspondiente de su GNU/Linux distro.
Aquí es necesario notar algo nuevo: el prefijo sudo.
Usualmente un usuario normal no tiene permisos de administración, con el prefijo sudo, dicho usuario puede ejecutar un comando con permisos de administrador.

Sandwich (xkcd.com)

https://xkcd.com/149/

El prefijo sudo puede ser bastante útil en muchas situciones.

Regresando a python

#!/usr/bin/env python3
hello = "Hello world!"
print hello
## Hello world!

¿Porqué escogí python como lenguaje de propósitos generales para este curso?

  • Es fácil deaprender y permite desarrollar programas casi de inmediato. (También Ruby. C/C++ tiene un costo de entrada más alto).
  • Tiene una comunidad muy amplia, incluso tiene una amplia comunidad dedicada al análisis de datos. (Ruby no, C/C++ sí).
  • No tiene tan buen desempeño como C++ o Java, pero la velocidad para desarrollar programas hace que valga la pena el sacrificio. (Ruby es más sencillo, pero sus desempeño es incluso peor).
  • Es muy sencillo instalar nuevas librerías con pip o easy_install. (También en Ruby gem, C/C++ no tiene un manejador de paquetes equivalente).

Tarea 2: instalar pip. (Antes de instalar cualquier cosa hacer sudo apt-get update y sudo apt-get upgrade.)

#!/usr/bin/env Rscript

Instalando R

sudo apt-get update
sudo apt-get install r-base
sudo apt-get install r-base-dev

Backports: añadir
deb http://archive.ubuntu.webxcreen.org/ trsuty-backports main restricted universe
en
/etc/apt/sources.list
Rserver

sudo apt-get install gdebi-core
http://download1.rstudio.org/rstudio-0.99.467-amd64.deb`
sudo dpkg -i rstudio-0.99.467-amd64.deb
rm rstudio-0.99.467-amd64.deb

git

Instalando git

sudo apt-get install git

Empecemos clonando el repo de esta clase

mkdir repos
cd repos
git clone git@gitlab.com:iorch/udg.git

como no tenemos permisos debe salir algo como esto:

Cloning into 'udg'...
The authenticity of host 'gitlab.com (54.93.71.23)' can't be established.
ECDSA key fingerprint is f1:d0:fb:46:73:7a:70:92:5a:ab:5d:ef:43:e2:1c:35.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.com,54.93.71.23' (ECDSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights

ssh keys

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/iorch/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/iorch/.ssh/id_rsa.
Your public key has been saved in /home/iorch/.ssh/id_rsa.pub.
The key fingerprint is:
ec:00:00:00:00:00:00:00:00:00:00:00:00:00:00:0f iorch@ubuntosa
The key's randomart image is:
+--[ RSA 2048]----+
| ........        |
|     ...+..      |
|      ...B . ..  |
|   ..  o=.B   E  |
| o o    S= o . o |
|   +  o.  o =   .|
|   +  . oo +     |
|     ...... .    |
|         ...     |
+-----------------+

github, gitlab

El servicio más usado como servidor de repositorios remotos es github.com; sin embargo nosotros usaremos gitlab por permitir repos privados de forma gratuita.

  • Crear cuenta en gitlab.com
  • Añadir llaves de ssh
  • Esperar mi invitación al repo
  • Clonar el repo