You are on page 1of 44

Introduccin a la gentica de poblaciones: entendiendo la

teora y aprendiendo a analizar los datos.

Prctica de gentica de poblaciones en R

Enrique Scheinvar, Gabriela Castellanos-Morales


y Luis Eguiarte, 2017

VI Congreso Nacional de Ecologa


ndice

1.- Empezando con R..............................................................................................................1


Qu es R.......................................................................................................................................1
Descargar e instalar R..................................................................................................................1
Descargar para windows (no recomendado).....................................................................................2
Descargar para mac (recomendado a medias)..................................................................................2
Descargar para linux (el ms recomendado)....................................................................................2
Para linuxes sabor ubuntu va repositorios.......................................................................................3
Para linuxes, instalacin manual......................................................................................................3
Descargar e instalar manejador de R (opcional)..........................................................................3
Iniciar R.......................................................................................................................................4
Generando objetos (guardar variables)........................................................................................4
Terminar R...................................................................................................................................6
Comandos generales tiles...........................................................................................................6
Instalando y activando libreras...................................................................................................7
2.- Entorno de R....................................................................................................................10
Iniciar R.....................................................................................................................................10
Datos en R..................................................................................................................................10
vectores......................................................................................................................................11
Matrices......................................................................................................................................13
data.frame...................................................................................................................................14
Listas..........................................................................................................................................15
Scripts........................................................................................................................................16
Leyendo archivos csv.................................................................................................................17
Escribiendo archivos csv............................................................................................................17
Descriptivos y Grficos bsicos.................................................................................................18
3.- Bases de datos de Gentica de Poblaciones.....................................................................20
El formato Genepop...................................................................................................................20
Ingresar a R desde formato Genepop {adegenet}......................................................................22
El formato Arlequn...................................................................................................................23
El formato Fasta.........................................................................................................................25
Leer cromatogramas {sangerseqR}...........................................................................................26
Generar un archivo fasta............................................................................................................27
Ingresar secuencias a R desde formato fasta {ape}...................................................................28
Ingresar secuencias a R desde el genebank {ape}.....................................................................29
Ingresar snp como data.frame {base}........................................................................................29
4.- Medidas de variacin y equilibrio de Hardy-Weinberg...................................................32
Ver mapa de poblaciones en google maps {RgoogleMaps}......................................................32
Ingresar datos genotpicos {adegenet}......................................................................................34
Calcula frecuencias alelicas.............................................................................................34
Calcula Heterocigosis y polimorfismo.............................................................................35
Calcula desviacin de HW...............................................................................................36
Calculo de distancias genticas (nei, coancestra de Reynold's, etc. ).............................37
Calculo de estructura gentica.........................................................................................37
Prueba de mantel..............................................................................................................38
calculo de AMOVA..........................................................................................................39
componentes principales de las frecs alelicas..................................................................39
analisis de componentes principales con discriminantes.................................................40
calculo el coeficiente de endogamia de cada individuo...................................................40
exportamos formato de datos para usar en otros programas:...........................................41
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

1.- EMPEZANDO CON R


En esta prctica, se indica en texto blanco sobre fondo negro las instrucciones que debes de
escribir en la consola de R. El smbolo > de la consola de R se conoce como prompt y es un
indicador de que el programa R est listo para recibir rdenes. Se indica en texto blanco sobre
fondo gris, los textos de salida que muestra la consola de R (y que no necesitamos ingresar); en
fondo gris con relieve blanco, se muestran las teclas a escribir.

Antes de empezar, el curso, es necesario que generes una carpeta llamada genpobs en la que vas a
copiar todos los archivos que se te vayan dando a lo largo del curso y en donde vas a realizar todas
las prcticas. Si ests en sistema Unix (linux / Mac), genera la carpeta en tu home: $ mkdir
~/genpobs . Si ests en windows, abre el navegador de archivos y genera la carpeta en
C:/genpobs . Revisa que tengas permiso de lectura escritura y ejecucin sobre esa carpeta ( $
chmod u+rwx ~/genpobs/ ). A partir de ahora, esta carpeta va a ser tu ruta de trabajo

QU ES R
http://www.r-project.org/
language and environment for statistical computing and graphics. It is a GNU
R is a
project (http://www.gnu.org) which is similar to the S language and environment which was developed at
Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be
considered as a different implementation of S. There are some important differences, but much code written
for S runs unaltered under R.
R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series
analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. The S language is
often the vehicle of choice for research in statistical methodology, and R provides an Open Source
route to participation in that activity.
One of R's strengths is the ease with which well-designed publication-quality plots can be produced, including
mathematical symbols and formulae where needed. Great care has been taken over the defaults for the minor
design choices in graphics, but the user retains full control.
R is available as Free Software under the terms of the Free Software
Foundation's GNU General Public License in source code form. It compiles and runs
on a wide variety of UNIX platforms and similar systems (including FreeBSD and Linux), Windows and
MacOS.

DESCARGAR E INSTALAR R
R se puede descargar a partir de varios servidores repartidos al rededor de todo el mundo llamados
The Comprehensive R Archive Network alias CRAN . En teora, todos los
servidores tienen la misma informacin en el mismo idioma (ingls) por lo que se recomienda
utilizar cualquiera de ellos.

DESCARGAR PARA WINDOWS (NO RECOMENDADO)...


Windows es un sistema pesado, caro, de cdigo fuente cerrado (no puedes leer el cdigo fuente), y
lleno de virus. Te recomendamos ampliamente instalar una mquina virtual (i.e. VirtualBox),
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 1
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

descargar un sistema linux (www.ubuntu.com www.linuxmint.com o cualquier otro de los cientos


que existen) e instalarlo en la mquina virtual (no necesitas desinstalar windows; desde windows
ejecutas el programa VirtualBox y luego le dices al programa que ejecute Linux mientras sigues
trabajando en windows) para que pruebes y en un futuro te cambies a linux (recuerda que mientras
est prendida la mquina virtual, tu mquina va a trabajar un poco ms lento, pues tu mquina va a
estar trabajando a lo doble cargando el tedioso windows, la mquina virtual y el linux)
Para instalar en windows:
Ir a la pgina de R: http://www.r-project.org/ hacer click en la opcin CRAN del
men de la izquierda y seleccionar cualquiera de los servidores. Hacer click en Download R
for Windows , luego haz click en la opcin base y luego en Download R #.#.#
for Windows y guarda el archivo R-#.#.#-win.exe en alguna carpeta (si windows no te
pregunt donde se guard, es posible que est en la carpeta Descargas:
C:\Users\NombreDeUsuario\Downloads). Se usa el mismo archivo para mquinas de 32 o 64 bits.
Haz doble click sobre el archivo R-#.#.#-win.exe que descargaste y sigue las instrucciones de
instalacin (pica Aceptar y/o ejecutar y/o next en todo). En algn momento, te va a solicitar que
decidas si quieres instalar 32 o 64 bits (para saber que sistema tienes, checa: Inicio -> Panel de
control -> Sistema y seguridad -> Sistema y checa Tipo de sistema) revisa que te instale Core
Files y 32 o 64-bit Files (dependiendo del que tengas); Cuando pregunte Desea utilizar las
opciones de configuracin? pica NO. En todo lo dems pica Aceptar y/o s ejecutar y/o next.

DESCARGAR PARA MAC (RECOMENDADO A MEDIAS)...


Mac no es la panacea. antes decan que lo mejor de mac era son sus procesadores y sus sistema
MacOs, eran bonitas y nunca fallaban; pues result que era tan buenos que Mac sustituy su
super sistema MacOs por uno tipo Unix (la misma base que ya usaba linux), pero los usuarios de
Mac seguan diciendo que lo mejor de mac son sus procesadores; igualmente, result que eran
tan buenos que sustituyeron sus super procesadores por unos marca intel (los mimos que usa
cualquier otra de las computadoras no tan buenas). Hoy en da lo mejor de mac es que son
bonitas, fciles de usar y no tienen virus.
Mac, lo que te ofrece es una marca (sin duda, bonita, fcil y sobre todo, cara). Para instalar en mac:
Ir a la pgina de R: http://www.r-project.org/ hacer click en la opcin CRAN del
men de la izquierda y seleccionar cualquiera de los servidores. Hacer click en Download R
for (Mac) OS X . Selecciona la versin de mac que tienes (snow lepard, maverick, etc..).

DESCARGAR PARA LINUX (EL MS RECOMENDADO)


Aunque linux no es bonita ni fcil, su sistema tipo Unix (al igual que mac) permite aprovechar a
lo mximo los recursos de la computadora (linux es multi-usuario, multi-tarea y multi-proceso).
Como su cdigo fuente es abierto (Open Source )(la gente de linux invent la
licencia GNU bajo la cual tambin est R), ha podido ser mejorada por TODA la gente del mundo
(igual que R): cuando un programa presenta un error cualquier programador de cualquier parte del
mundo puede leer el programa, corregir el error, mejorar el programa y colocarlo gratuito (o no)
para que cualquier persona lo pueda utilizar. Como es gratuito , mucha gente lo utiliza (y
muchas empresas como Mac o Windows, lo atacan) y existen cientos de miles de manuales, ayudas,
tutoriales y cursos en lnea completamente gratuitos en prcticamente cualquier idioma del mundo.
Debido a que es el sistema preferido por los hackers, su diseo (desde el ncleo) est realizado para
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 2
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

ser compatible con diversos lenguajes de programacin (como R). Como


est basado en el sistema UNIX, todos los archivos estn protegidos, por lo que no puedes ser
atacado por ningn virus ( salvo que lo guardes, ejecutes y autorices su uso igual que mac- ), etc...
etc... etc... etc... Linux es el sistema del futuro :-). Linux es copyleft . Adems, R es parte de
muchas distribuciones de Linux.

PARA LINUXES SABOR UBUNTU VA REPOSITORIOS


Este mtodo de instalacin, se recomienda porque es especfico para el sistema y baja toooooodos
los archivos necesarios para una instalacin completa, los instala y configura.
Abre una consola de texto y escribe:
$ sudo gedit /etc/apt/sources.list

Esto va a abrir el archivo sources.list desde el editor de textos. Ve al final del documento y aande
la siguiente lnea:
deb http://cran.cnr.berkeley.edu/bin/linux/ubuntu/ version/
En donde dice versin debes escribir tu versin de ubuntu (lucid, precise, quantal, saucy, trusty).
Guarda y cierra el editor de texto.
En la consola escribe SOLO UNA de estas dos lneas:
$ gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9

$ gpg --hkp://keyserver keyserver.ubuntu.com:80 --recv-key E084DAB9

Y luego escribe:
$ gpg -a --export E084DAB9 | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install R-base

PARA LINUXES, INSTALACIN MANUAL


Ir a la pgina de R: http://www.r-project.org/ hacer click en la opcin CRAN del
men de la izquierda y seleccionar cualquiera de los servidores. Hacer click en Download R
for Linux luego selecciona el sabor de tu linux ( debian | redhat | suse | ubuntu ),
luego selecciona la versin particular de tu sabor; finalmente, descarga el archivo r-
base-core en su versin ms reciente (nmero ms grande), ya sea para computadoras de 64
bits (amd64 ) o de 34 bits (i386 ). Guarda el archivo y luego hazle doble click y sigue las
instrucciones.

DESCARGAR E INSTALAR MANEJADOR DE R (OPCIONAL)


Ya que tengas instalado el sistema R, puedes optar por utilizar un manejador de R. R funciona va
consola, sin embargo, existen muchos manejadores de R (Rstudio, Rcomander, Rgedit, RKward,
etc...), que aunque siguen siendo de consola (los buenos), tienen varias accesorios que te facilitan el
uso de R(aunque gastan recursos como el ram). Recuerda que si quieres aprender R NO TE VAS A
SALVAR DE LA CONSOLA, y no solo eso... te aseguramos que vas a aprender a preferir la
consola por sobre los botones y el mouse, ya que termina siendo ms eficiente y rpido. En este

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 3


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

ejemplo, vamos a instalar


Descarga el archivo de Rstudio : www.rstudio.com/
pica en Download Rstudio y luego en Download RStudio Desktop. En la
seccin de Installers, haz click en donde est tu sistema operativo (windwos, mac, ubuntu), descarga
el archivo. Cuando finalice la descarga, haz doble click sobre el cono de instalacin e instala (pica
a todo s y/o Aceptar y/o Siguiente).

Ejercicio 1. Instala R en tu mquina. Si as lo deseas, instala Rstudio. Reporta el


sistema operativo que utilizas, la versin de R (y de Rstudio en su caso) que utilizaste,
las dificultades que surgieron durante la instalacin y cmo las solucionaste.

INICIAR R
Si ests en windows o mac, haz click sobre el cono de R: o del manejador que ests usando.
Si ests en linux, abre una consola y escribe: R , si tienes el manejador de R, escribe su nombre: $
rstudio haz doble click sobre el cono del manejador (ej. Rstudio).
El smbolo > se conoce como prompt (en y es indicador de que R est listo para recibir
instrucciones.

GENERANDO OBJETOS (GUARDAR VARIABLES)


R funciona a base de los llamados objetos de R, es decir, que todo lo que le metemos a R queda
guardado en distintos objetos (que pueden ser de muchos tipos: vectores, matrices, dataframes,
funciones, etc...).
Para generar un objeto se utiliza los smbolos: <- (menor que y ralla media) y la sintaxis:
> NombreDelObjeto <- ContenidoDelObjeto
Nota: R tambin puede usar el smbolo = como alias de <-. pero NO TE LO RECOMENDAMOS,
ya que muchsimos paquetes usan el smbolo = = como IGUALDAD matemtica y si te
acostumbras a utilizarlo, puedes llegar a COMETER ERRORES mejor usa <- .

De esta forma, podemos guardar los datos de un nio de 3 aos llamado Camilo en diferentes
variables:
> nombre <- Camilo # las variables de tipo caracter se indican entre comillas. Si no las
escribes entre comillas, entonces R entiende que se trata del objeto
cuyo nombre el Camilo.
> nombre # solicita el contenido del objeto nombre
> copiaNombre <- nombre # si indicas nombre sin comillas, entonces R guarda el objeto
llamado nombre en el objeto llamado copiaNombre (hace una
copia del objeto)
> copiaNombre # solicita el contenido del objeto copiaNombre
> copiaNombre <- nombre # si utilizas el mismo nombre de objeto, R sobreescribe el
anterior.
> copiaNombre # solicita el contenido del objeto copiaNombre
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 4
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

> edad <- 3 # las variables numricas no se indican entre comillas.


> edad
> masculino <- TRUE # las variables lgicas utilizan TRUE, FALSE
> masculino
> ls ( ) # El comando ls (con argumento vaco) enlista todos los objetos generados en la sesin.

El principio bsico de R es que se pueden hacer operaciones matemticas con las variables:
> edad * 10
> resultado <- (edad * 10) + ( (4 1) / 1.5 )
> resultado
> edad == 4 # la operacin de igualdad se indica con doble igual
> edad < 5
> nombre == Camilo | nombre == Ernesto & edad < 5 # la operacin lgica (OR)
se indica con el
smbolo | (pipe) y el
smbolo Y (AND) se
indica con & (and)
Para borrar objetos del sistema se usa rm (remove):
> ls ( ) # para ver los objetos creados.
[1] "copiaNombre" "edad" "masculino" "nombre"
[5] "resultado"
> rm ( resultado , copiaNombre , masculino ) # borra los objetos enlistados. Siempre
van entre comillas y separados por
comas.
> ls ( )

Ejercicio2. En un archivo de texto simple, escribe los comandos para generar los
siguientes objetos (no escribas el smbolo de prompt y escribe un solo comando en
cada lnea): a) objeto nombre que contenga tu nombre completo; b) objeto
apellido donde introduzcas tu primer apellido; c) objeto nace en el que
introduzcas el ao de tu nacimiento. d) objeto edad en donde se calcule tu edad a
partir del objeto nace; e) objeto mayoria1 donde se calcule, a partir del objeto edad,
si eres (TRUE) o no eres (FALSE) mayor a 17 aos pero menor a 20; f) objeto
mayoria2 donde se calcule, a partir del objeto edad, si eres mayor o igual a 20 aos
pero menor a 22; g) objeto mayoria3 donde calcule, a partir del objeto edad, si eres
mayor o igual a 22 aos; h) objeto freqH que calcule la frecuencia de hombres de un
saln con 15 hombres y 24 mujeres

TERMINAR R
desde la consola de R, escribe:
> q ()
Save workspace image? [y/n/c]: # en esta opcin te est preguntando si quieres guardar toda tu

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 5


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

sesin (s/no/cancelar). En caso de que indiques y,


genera un archivo oculto en la carpeta de trabajo y si
vuelves a ejecutar R desde esa carpeta, entonces
recuperas todo lo que habas hecho)

COMANDOS GENERALES TILES


A continuacin enlistamos algunos comandos generales del sistema que te van a ser tiles siempre
que uses R.
> help ( ) # help muestra la ayuda del comando indicado dentro del parntesis. Si no se indica
nada, muestra la ayuda del comando help. Pica la tecla q para salir de la ayuda.
> help ( lm ) # muestra la ayuda del comando lm
> ? lm # ? es sinnimo de help.
> example ( lm ) # muestra y ejecuta un ejemplo del comando indicado. En este caso, el de el
comando lm (linear model)

> data ( ) # Cuandodata se ejecuta vaco, genera el listado de todos los datos de ejemplo que
tiene cargado R. Pica la tecla q para salir.
> data ( women ) # Cuando se ejecuta con el nombre de uno de los datos de ejemplo, carga los
datos en un objeto de R con el mismo nombre.
> ls ( ) # ls muestra el listado de objetos de R guardados en el sistema.
> women # luego de cargar data, se pueden ver los datos invocndolos con su nombre.

> vignette ( ) # Cuando vignette se ejecuta vaco, muestra un listado con todos los distintos
tutoriales de cada uno de los paquetes.
> R.Version ( ) # R.Version muestra todas las caractersticas del sistema y de R

> history ( ) # history muestra el historial de todos los comandos que se han escrito en la
sesin de R.
> savehistory ( ArchivoConHistorial_clase1.txt ) <- savehistory guarda el historial en
un archivo de texto simple en la carpeta de
trabajo.

flecha arriba y flecha abajo # las flechas hacia arriba y hacia abajo van mostrando los
comandos previamente utilizados en la sesin de R.
Son muy tiles para no estar escribiendo varias veces el
mismo comando.
TabuladorTabulador.
TabuladorTabulador R, tiene un sistema inteligente de prediccin de escritura. Cuando
picas tabulador dos veces, el sistema busca predecir lo que le quieres
escribir, por ejemplo, vamos a buscar el comando mahalanobis:
> mTabTab # escribe m y luego pica dos veces tabulador. R comprende que ests buscando un
comando que inicia con m, as que te muestra todos los que inician con m.

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 6


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

> maTabTab # escribe ma y luego pica dos veces tabulador.


> mahTabTab # escribe mah y luego pica dos veces tabulador.
> mahalanobis ( TabTab # escribe el comando completo, abre parntesis y luego dos veces
tabulador. R comprende que ya escribiste el comando y ahora lo
que quieres es ver las opciones del comando.

> getwd ( ) # getwd muestra la carpeta de tu computadora en la que ests ejecutando R, es


decir, muestra la ruta activa de ejecucin de R. Generalmente es la carpeta
desde la que iniciaste tu sesin de R. pero puede ser otra.
> setwd (../ruta/donde/quiero/ejecutar/R/) # setwd cambia la ruta de ejecucin de la
sesin de R por la nueva que se le indique (si usas
TabTab dentro de las comillas, R predice y te muestra las
opciones de ruta; usa doble punto .. para subir un nivel
de carpeta.)
> list.files() # muestra la lista de archivos y carpetas de la ruta activa.
Ejercicio. Revisa el comando help de los siguientes comandos e indica: a) para qu sirve el
comando b) cual es la sintaxis para su uso (usage) y c) cuales son los argumentos que se le tienen
que indicar:
sink(),

INSTALANDO Y ACTIVANDO LIBRERAS


Una de las grandes ventajas de R, es que cualquier persona puede escribir un conjunto de
instrucciones en un archivo y construir una funcin que puede compartir con cualquier otra persona.
Estas funciones (escritas en formato especial) se almacenan en archivos llamados libreras. Las
libreras suelen estar disponibles en el CRAN de R y cualquier usuario puede descargarlas,
instalarlas, activarlas y utilizarlas. Por ejemplo, la librera raster le ensea a R funciones para
procesar imgenes SIG tipo raster, la librera ape le ensea a R funciones filogenticas, etc...
etc.. etc....
Las libreras son archivos que se instalan en una carpeta predeterminada de R y que cuando se
requiera, se le puede solicitar a R que las active o desactive, de esta forma no todas las libreras
estn activas todo el tiempo y no saturamos la memoria de R.

> search ( ) # este comando (con argumento vaco) muestra la lista de paquetes activos (cargados
y listos para usarse)
> library ( ) # este comando (con argumento vaco) muestra la lista de todos los paquetes
instalados en R (activos o no)
Muchas libreras estn escritas directamente en R, por lo que no necesitan nada ms que el mismo
sistema R para ser instaladas, pero existen muchas otras que estn escritas en otros lenguajes de
programacin o utilizan libreras no incluidas en R que necesitas instalar en tu computadora primero
independientemente de R, por ejemplo, muchas de ellas requieren C++, algunas otras utilizan
fortran, etc... Para eso necesitar ir al CRAN y revisar, en la pgina especfica de la librera, las
dependencias que require (en Depends) y que si no tiene, vas a tener que instalar, as como las
funciones (y/o programas) que va a requerir importar (en Imports) e igualmente, si no las tienes,

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 7


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

vas a tener que instalar primero. En algunos casos, viene otro apartado SystemRequirements que
tambin debes de revisar.

Ejercicio3. Entra a la pgina: http://www.cran.r-project.org/ y luego en la opcin


CRAN -> Task Views. Revisa las secciones: Genetics, Phylogenetics, Spatial y una
cuarta ms que elijas. De cada una de las secciones, busca una librera que creas que
valga la pena instalar. Reporta el nombre de las libreras que seleccionaste y explica
para qu sirven.

A continuacin vamos a aprender a instalar una librera desde el CRAN. Por ejemplo, la librera
adegenet.
> install.package ( adegenet ) #install.package se usa para instalar un paquete. Eentra
a internet, baja el archivo del paquete y lo instala.
Installing package into /usr/local/R/linux-gnu-library/3.1
(as lib is unspecified)
--- Please select a CRAN mirror for use in this session ---
Va a salir una ventana con un listado de todos los servidores CRAN de R. Selecciona uno cualquiera
al azar. Cualquiera de ellos debe tener los mismos paquetes en el mismo idioma (no creas que los
servidores de Mxico -que, se encuentran en el ITAM o en el Colegio de Posgraduados- tienen los
paquetes en espaol). Todos los paquetes estn en ingls.
Revisa que la instalacin no indique ningn error. Felicidades, ya tienes instalado el paquete
adegenet!!!
Nota: Muchos paquetes requieren que tu mquina tenga instalado algn compilador de C++ y
muchos otros requieren de la instalacin previa de otros paquetes, revisa la pgina de informacin
del CRAN. Por ejemplo, adegenet, requiere de la instalacin previa de ade4.

Para activar un paquete ya instalado se usa el comando equire library:


> require ( adegenet ) # activa la librera indicada
Para ver el manual de comandos del paquete:
> help ( package = adegenet )
Para ver cmo citar el paquete:
> citation ( adegenet )

Ejercicio4. En caso de no tenerlos instalados (revisa si ya estn instalados), instala los


paquetes: adegenet, ape, pegas, Geneland, phangorn, hierfstat, PopGenKit y
RgoogleMaps. Para cada uno, reporta: a) para qu sirve; b) cmo se cita; c) si viene o
no con ejemplos. d) si viene o no con vignette (tutorial); e) describe un comando
importante de la librera (nombre, para qu sirve, sintaxis)

Instalacin de algunas libreras complicadas:


ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 8
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
1.- Empezando con R VI CONGRESO NACIONAL
DE ECOLOGA

Muchas libreras de R, requieren utilizar otro tipo de libreras que luego no estn incluidas en los
sistemas. te recomendamos ampliamente, que antes, instales las libreras
rgdal : En algunas mquinas, vas a necesitar primero ir a www.gdal.org y descargar e instalar gdal
primero. Busca en google: How to install rgdal in windows How to install rgdal in
linux. En linux, prueba instalando: $ sudo apt-get install rgl libproj-dev gdal
Fortran : Algunas pocas libreras requieren de la instalacin previa de fortran. Busca en google:
How to install fortran in windows
En caso de que marque algn error, lee la salida y escribe ese error en google, seguramente alguien
tuvo ese mismo error y ya lo solucion. Recuerda que en ingls suele haber ms informacin

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 9


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

2.- ENTORNO DE R
En esta prctica, se indica en texto blanco sobre fondo negro las instrucciones que debes de
escribir en la consola de R. El smbolo > de la consola de R se conoce como prompt y es un
indicador de que el programa R est listo para recibir rdenes. Se indica en texto blanco sobre
fondo gris, los textos de salida que muestra la consola de R (y que no necesitamos ingresar).
En primera instancia, establecemos la carpeta de trabajo:
> setwd ( C:/Genpobs ) # Si tu mquina est en windows
> setwd ( ~/Genpobs ) # Si tu mquina est en linux mac (el smbolo ~ quiere decir:
/home/usuario/).

Dentro de la ruta de trabajo, genera una carpeta llamada ~/Genpobs/prac2/.

INICIAR R
Si ests en windows o mac, haz click sobre el cono de R: o del manejador que ests usando.
Si ests en linux, abre una consola y escribe: $ R , si tienes el manejador de R, escribe su nombre:
$ rstudio haz doble click sobre el cono del manejador (ej. Rstudio)

DATOS EN R
R tiene diversas estructuras de datos:
a) Vectores : listado de elementos -una sola dimensin-, ya sean numricos, de texto o lgicos
(todos los elementos tienen que ser del mismo tipo); por ejemplo de texto: Gaby,
Jaime,Enrique, Lev o numrico: 1,5,3,5,7,3,6 o lgico:
TRUE,FALSE,TRUE,TRUE
b) Matrces : tabla de elementos, ya sean numricos, de texto o lgicos ordenados en columnas
y renglones 2 dimensiones- (todos los elementos tienen que ser del mismo tipo):
alumno sexo edad
1 1 26
2 1 25
3 2 25
4 1 27
5 2 20

c) Arreglos : conjunto de matrices de elementos, ya sean numricos, de texto o lgicos


ordenados en columnas y renglones 3 dimensiones- (todos los elementos de todas
las matrices tienen que ser del mismo tipo):
salon1:
sexo edad
1 1 25

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 10


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

2 1 26
salon2:
sexo edad
1 2 27
2 1 20
d) DataFrames : tabla en el que cada columna puede ser de un tipo distinto, ya sea
numricos, de texto o lgicos ordenados en columnas del mismo largo.
ID Nombre Edad Recursa
1 Pepito 25 FALSE
2 Josefita 47 TRUE
3 Miguelito 19 FALSE
e) Listas : Variable que guarda uno o ms de cualquiera de los elementos anteriores: vector(es),
matrz(ces), arreglo(s), dataframe(s) u otra(s) lista(s).

Tomado de Kabacoff RI (2011). R in Action. Data analysis and graphics with R. Edit. Manning Publications.

A continuacin, vamos a aprender a generar y manipular cada uno de estos elementos.

VECTORES
Para generar un vector, se utiliza la funcin combine: c ( )
> a <- c ( 4, 6, 3, -6, 0) #genera un objeto con un vector numrico.
>a
> b <- c ( Enrique, Gaby, Jaime, Lev ) # genera un objeto con un vector de
caracteres
>b
> c <- c ( TRUE, TRUE, FALSE, FALSE, TRUE) # genera un objeto con un vector lgico
>c
> d <- c (4, 5, 3, 4, 10, -3, a, 5, 3, 23, -9, 0) # genera un objeto con un vector de caracteres
>d

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 11


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

> e <- c ( b, azul, blanco, verde ) # genera un vector con el vector b.


>e

Para describir el contenido del objeto vector:


> class ( a ) # el comando class muestra el tipo de elementos que contiene el objeto.
> length ( b ) # length muestra el nmero de elementos que contiene el objeto
> is.numeric ( a ) # pregunta si el objeto es numrico (devuelve TRUE o FALSE)
> is.character ( a ) # pregunta si el objeto es caracter (devuelve TRUE o FALSE)
> f <- as.character ( a ) # lo trata como si fuera caracter.
>f

Se pueden generar secuencias de nmeros de manera muy simple:


> seq1 <- c ( 1:5, 9, 3, 1:-2 ) # va a generar el vector: 1,2,3,4,5,9,3,1,0,-1,-2
> seq2 <- seq(from=4, to=10, by=2) # va a generar el vector: 4,6,8,10
> seq3 <- rep(4, times=5) # va a generar el vector: 4,4,4,4,4

Los elementos de un vector estn numerados de uno hasta length(vector). Para solicitar elementos
particulares de un vector, se indica el nmero de elemento que se desea solicitar dentro de corchetes
vector [ ] :
> seq <- seq ( from = 1, to = 10, by = 0.1 ) # Generamos un vector.
> length ( seq )
> seq
> seq [ 2 ]
> seq [ 7 ]
> seq [ length (seq ) ]
Dentro de los corchetes se puede indicar un vector que solicite varias posiciones:
> seq
> seq [ c( 2, 7:9, 14 ) ]
Si se utiliza el smbolo menos dentro de los corchetes, se excluye el elemento negativo:
> seq [ c ( -1 : -80 ) ]
Tambin se puede hacer alguna proposicin lgico/matemtica dentro del corchete:
> seq [ seq > 7.5 ]
> seq [ seq > 1.5 & seq < 2.6 ]

Ejercicio 1. Genera tres vectores: uno de caracteres con los nombres de los integrantes
del grupo, un segundo vector lgico en el que indiques si son mujeres o no (TRUE,
FALSE), y un tercer vector numrico en el que indiques sus edades. Los datos de los
tres vectores deben estar en el mismo orden (una posicin por cada individuo).
Finalmente, escribe el cdigo para un cuarto vector que solo muestre, a partir de los

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 12


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

vectores anteriores, los nombres de las mujeres mayores a 23 aos.

MATRICES
Para generar una matrz, se utiliza el comando matrix y se utiliza la siguiente sintaxis:
matrix ( valores , nrow = #deRenglones, ncol = #deColumnas, byrow = TRUE )
> valores <- c (hora1, bicho1, hora2, bicho2, hora3, bicho3) # genero el
vector con los valores.
> ja <- matrix ( valores, nrow = 3, ncol = 2, byrow = FALSE )
> ja
> ja <- matrix ( valores, nrow = 3, ncol = 2, byrow = TRUE )
> ja
Podemos ver algunas caractersticas de la matrz:
> class ( ja ) # nos muestra el tipo de objeto
> ncol ( ja ) # muestra el nmero de columnas
> nrow ( ja ) # muestra el nmero de renglones
> length ( ja ) # muestra el nmero de celdas
> colnames ( ja ) # colnames muestra un vector con los nombres de lass columnas
> colnames ( ja ) <- c (Hora, Bicho) # le asignamos un vector de valores
> ja
> intermedio <- c ( 1 : nrow (ja) ) # genero un vector con nmeros desde 1 hasta 3
> rownames ( ja ) <- intermedio # asigno nombres a los renglones
> ja

Tambin se pueden generar matrices vacas:


> je <- matrix (nrow = 5, ncol = 4)
> je

Los valores de una matrz estn organizados en coordenadas (igual que excel) en el formato:
(rengln, columna). Para solicitar elementos particulares de una matrz, solo se tiene que indicar las
coordenadas entre corchetes: [ rengln , columna ] .
> ja
> ja [1,2] # solicita rengln uno columna dos
> ja [2,1] # solicita rengln dos, columna uno
Tambin puedes usar vectores dentro de este sistema:
> ja [ c(1,3) , 1 ] # solicita los renglones uno y tres de la columna uno
Si no indicas la columna o el rengln, R entiende que quieres todos:
> ja [ , 1 ] # toda la columna uno
> ja [ 1 , ] # todo el rengln uno.
Si las columnas o renglones tienen nombre, puedes solicitarlos por su nombre:

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 13


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

> ja [ 2, Bicho ] # solicita rengln dos de columna Bicho

De la misa manera, se puede asignar o modificar el valor de una matrz:


> je
> je [ 3 , 2 ] <- 456
> je
> je [ , 1 ] <- c(38,405,49,0,23)
> je
> je [ 4, 1 ] <- 567
> je

Ejercicio 2. Investiga para qu es y como funciona el comando sample. a) Escribe un


comando que genere una matrz nombrada MyDatos de 5 columnas por 10 renglones
con nmeros aleatorios entre uno y 20. Escribe un comando que reescriba con NA
todas las celdas de MyDatos con valores menores a 6. b) Escribe un comando que
genere una nueva matrz nombrada MyDatos2 con las columnas uno, tres y cinco
multiplicadas por 10 de la matrz MyDatos.

DATA.FRAME
Los dataframe son muy parecidos a las matrices pero tienen la ventaja de que cada columna puede
tener elementos diferentes (aunque dentro de la columna no se permite mezclar). Los datos de SNP
(Single Nucleotide Polymorphisms) suelen venir en data.frames.

Para generar un dataframe, se utiliza el comando data.frame :


> ja <- data.frame (
ID= c(1:5), # genera una columna llamada ID con nmeros 1 a 3
Nombre = c(Miguel, Francisco, Julieta, Ana, Raul),
Hombre = c (rep(TRUE,2),rep(FALSE,2),TRUE),
Puntos = c( 47, 53, 20, 45, 38 ),
Tareas = c( 10, 12, 6, 9, 7 ),
Puntualidad = c (F,T,T,F,T) # se puede usar F y T en lugar de TRUE y FALSE.
)
> ja

Para ver caractersticas:


> class ( ja )
> nrow ( ja )
> ncol ( ja )
> length ( ja )

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 14


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

> rownames ( ja )
> colnames ( ja )
> names ( ja ) # en data.frames, es sinnimo de colnames

Para solicitar o referirse a una columna en especfico, se usa el smbolo $ :


> names ( ja )
> ja$Nombre
> ja$Puntos
O tambin puedes usar el mismo sistema que en las matrices:
> ja [ 1, 4 ]
> ja [ ,2]
> ja [ 2,]
> ja [ 4 , Puntos]
> ja [ c(3,4), c(2,3) ]
> ja [ 5, 2 ] <- Julio
> ja

Ejercicio 3. Genera un data.frame nombrado grupo en el que cada rengln


represente a un miembro del grupo y donde incluyas los campos: ID, nombre, apellido,
sexo, estatura, edad, y presencia (TRUE) o ausencia (FALSE) de los siguientes
caracteres: pico de viuda, taco de lengua, y lobulo de oreja pegado.

LISTAS
Primero generamos dos vectores y dos data.frames
> estado <- c ( GRO, HGO )
> TamMtra <- c ( 340, 506, 320, 456, 672 )
> tratamiento <- matrix ( c(1:4), nrow=2, ncol=2 )
> mtras <- matrix( c(15:4), nrow=3, ncol=4)
Genero la lista:
> Mylista <- list (Edo=estado, N=TamMtra,
trat=tratamiento, mtras=matras )
> Mylista

describo la lista:
> class( Mylista )
> names ( Mylista )
> length ( Mylista )

solicito datos:
> Mylista
> Mylista [ [ 2 ] ]
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 15
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

> Mylista [ [ 2 ] ] [ 3 ]
> Mylista$Edo
> Mylista$Edo[ 1 ]
> names(Mylista)
> Mylista$mtras
> Mylista[ [ 4 ] ] [ 2, 4 ]

SCRIPTS
Cierra R. Abre un editor de texto simple (como Block de Notas, Word Pad, Gedit emacs
vi, etc... PERO NUNCA WORD!!!! ), escribe el texto que esgt en el recuadro de abajo (ten
mucho cuidado en copiarlo EXACTAMENTE IGUAL!!!! ) y gurdalo en un archivo llamado:
~/GenPobs/prac2/MyPrimerPrograma.R

MyPrimerPrograma.R:
########################################### Inicio de script
# toda linea que inicie con smbolo de nmero no se lee!!!
print ("Hola Mundo!!!");
nombre <- readline(prompt="Escribe tu nombre:")
edad <- readline(prompt="Escribe tu edad:")
edad<- as.numeric(edad)
fechaHoy<-Sys.time()
YearHoy <- format(fechaHoy,"%Y")
YearHoy <- as.numeric(YearHoy)
nace<-YearHoy-edad
print( paste("Hoy es:",fechaHoy,sep=" ") )
print( paste("Hola ",nombre,", naciste en ",nace,sep="") )
############################################ Termina el script

Entra a R y ve a la ruta de trabajo:


> setwd ( C:/GenPobs ) # Si tu mquina est en windows
> setwd ( ~/Genpobs ) # Si tu mquina est en linux mac
> help ( source ) # Revisa qu hace el comando source.

Ejecuta el comando source para ejecutar el archivo que acabas de escribir:


> source ( ./prac2/MyPrimerPrograma.R ) # ./ quiere decir, en esta carpeta

Felicidades !!! acabas de escribir tu primer cdigo fuente y de ejecutar tu primer programa de
cmputo!!!!!.

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 16


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

Ejercicio4. Investiga y reporta qu hacen las funciones: print, readline, Sys.time,


format, paste.

LEYENDO ARCHIVOS CSV


Seguramente te va a interesar saber cmo leer archivos CSV. Los CSV son archivos de texto
simple con campos en columnas y renglones separados por algn delimitador de campo (suele ser
alguno de los siguiente: coma, tabulador, espacio o punto y coma). Todos los documentos de excel,
pueden exportarse a CSV (en Archivo -> Guardar como -> Guardar como tipo: CSV Guardar
como tipo: texto).
Se usa el comando read.table . En este ejemplo, vamos a leer un archivo llamado
"~/GenPobs/basesdedatos/PotvinEtal1990_CO2Plantas.csv (Potvin, C., Lechowicz, M. J. and
Tardif, S. 1990. Ecology, 71:13891400). Primero, abre un editor de textos simple (Block de notas,
gedit, emacs, vi, etc...) y revisa el contenido y estructura del archivo, luego en Excel y abre el
mismo archivo; finalmente, ve a R y ejecuta:

> help (read.table)


> Mytabla <- read.table (
file = ~/Genpobs/basesdedatos/PotvinEtal1990_CO2Plantas.csv ,
header = TRUE , # como viste, el archivo s trae cabecera
sep = , , # como viste, el archivo est separado por comas (para tabulador, usa \t)
quote = FALSE , # para que no ponga en comillas el texto.
na.strings = NA , # smbolo de NA
)
> Mytabla
> names ( Mytabla )
> colnames ( Mytabla )
> rownames ( Mytabla )

ESCRIBIENDO ARCHIVOS CSV


Para escribir una matriz, data.frame, o casi cualquier tabla en un archivo de texto simple tipo csv, se
utiliza el comando write.table :
> help ( write.table )
Primero generamos una matriz:
> ja <- matrix(sample(1:100,200,replace=TRUE),nrow=20,ncol=10) #genero matriz
> rownames(ja)<- paste("Ind",1:nrow(ja),sep="") # le pongo nombres a los renglones
> colnames(ja)<- paste("Var",1:ncol(ja),sep="_") # le pongo nombres a las columnas

Escribo la matriz ja en un archivo:


> write.table (
x = ja ,
file = "~/GenPobs/prac2/MyMatriz.csv" , # ruta y nombre del archivo
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 17
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

quote = FALSE , # No queremos que ponga comillas al texto


sep = "\t" , # queremos que use tabulador como delimitador de campo
row.names = FALSE # no queremos que escriba nombre de renglones.
)

Ejercicio5. Guarda un archivo llamado ~/GenPobs/prac2/Datos_Grupo.csv que


contenga el data.frame que generaste en la seccin Data.frame de arriba.

DESCRIPTIVOS Y GRFICOS BSICOS


A continuacin, vamos a aprender a hacer algunos descriptivos estadsticos bsicos. Vamos a
utilizar el set de datos trees del paquete datasets (medidas de dimetro, altura y volumen de 31
rboles de cereza; Ryan TA, Joiner BL, Ryan BF. 1976. The Minitab Student Handbook. Duxbury
Press.)

Primero cargamos los datos:


> data ( trees )
> trees
> names( trees )
> class ( trees )
> nrow ( trees )
> ncol ( trees )

Calculamos algunos estadsticos bsicos:


> summary ( trees ) # calcula descriptivos bsicos.
> max ( trees$Volume, na.rm = TRUE ) # calcula valor mximo
> min ( trees$Volume, na.rm = TRUE ) # calcula valor mnimo
> mean ( trees$Volume, na.rm = TRUE ) # calcula valor promedio
> sd ( trees$Volume, na.rm = TRUE ) # calcula desviacin estndard
> var(trees, na.rm = TRUE ) # calcula matrz de varianzas
> cov (trees, use="everything", method="pearson") # calcula matr. de covarianzas.
> cor (trees, use="everything", method="pearson") # calcula matrz de varianzas.

Hacemos algunas grficas bsicas


> help ( hist )
> hist( trees$Girth )
> hist( trees$Height )
> hist( trees$Volume )
> help ( boxplot )
> boxplot (trees$Girth, trees$Height, trees$Volume, names =
c("Circ","Alt","Vol") )

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 18


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
2.- Entorno de R VI CONGRESO NACIONAL
DE ECOLOGA

> help ( plot )


> plot (trees$Girth,trees$Height)
> plot (trees$Girth,trees$Volume)
> plot (trees$Height,trees$Volume)
Podemos enviar algunas grficas a jpg, tiff, png, pdf o postscript:
> pdf ( "~/GenPobs/prac2/Trees1.pdf" ) # abre el pdf en la ruta y nombre indicados
> plot ( trees$Girth , trees$Volume ) # manda esta grfica al pdf
> boxplot (trees$Girth , trees$Volume ) # manda esta grfica al pdf
> dev.off ( ) # finaliza el pdf

> png ( "~/GenPobs/prac2/Trees1.png" )


> plot ( trees$Girth , trees$Volume )
> dev.off ( )

> jpeg ( "~/GenPobs/prac2/Trees1.jpg" )


> plot ( trees$Girth , trees$Volume )
> dev.off ( )

> postscript ("~/GenPobs/prac2/Trees1.ps" )


> plot ( trees$Girth , trees$Volume )
> dev.off ( )

Ejercicio6. Lee el archivo ~/GenPobs/prac2/Datos_Grupo.csv que tu mismo


generaste en la seccin Escribiendo archivos csv. Calcula parmetros estadsticos
bsicos, genera las grficas necesarias y describe los datos. Revisa para qu sirve la
funcion sink.

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 19


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

3.- BASES DE DATOS DE GENTICA DE POBLACIONES


En esta prctica, se indica en texto blanco sobre fondo negro las instrucciones que debes de
escribir en la consola de R. El smbolo > de la consola de R se conoce como prompt y es un
indicador de que el programa R est listo para recibir rdenes. Se indica en texto blanco sobre
fondo gris, los textos de salida que muestra la consola de R (y que no necesitamos ingresar); en
fondo gris con relieve blanco, se muestran las teclas a escribir.
En primera instancia, establecemos la carpeta de trabajo:
> setwd ( C:/Genpobs ) # Si tu mquina est en windows
> setwd ( ~/GenPobs ) # Si tu mquina est en linux mac (el smbolo ~ quiere decir:
/home/usuario/).

Dentro de la ruta de trabajo, genera una carpeta llamada ~/Genpobs/prac3/.

En gentica de poblaciones existen muchos formatos (quiz demasiados) para guardar informacin
de genotipos (prcticamente, cada programa utiliza uno propio): genepop, arlequin, fstat, beast,
mrbayes, tffpga, etc... En esta seccin vamos a aprender a generar bases de datos genotpicas a
partir de un gel electrofortico (a formato genepop y arlequn), de secuencia a partir de un
cromatograma (a formato fasta) y de SNP a partir de un data.frame. Luego vamos a aprender cmo
ingresar estos formatos a R.
Tambin existen muchas formas de ingresar esta informacin a R. En esta seccin vamos a ver
cmo ingresar la informacin de formato Genepop y fasta y tambin vamos a ver como convertirla
en otros formatos tiles para algunas otras libreras y/o programas de gentica de poblaciones.

EL FORMATO GENEPOP
El formato genepop, fue desarrollado para el ser utilizado en el programa Genepop
(http://kimura.univ-montp2.fr/~rousset/Genepop.htm) escrito por Raymond & Rousset (J Hered.
1995. 86:248-249 y Mol. Ecol. 2008. 8:103-106). Es un formato muy sencillo, escrito en un
archivo de texto simple (ej. block de notas, gedit o emacs) que permite describir datos genotpicos
de individuos en poblaciones (no se utiliza para secuencias).

El formato Genepop (http://genepop.curtin.edu.au/help_input.html) tiene las siguientes


caractersticas:
- Primer lnea: Texto libre con informacin sobre los datos.
- Segunda lnea: Nombre del primer locus
Tercera lnea: Nombre del segundo locus
etc...
- palabra POP par indicar inicio de primer poblacin
- nombre del individuo una coma y luego los genotipos de c/loci separados por espacios:
individuo1, 0202 4546 0102 5757 <-se genotiparon cuatro loci para el individuo1.

Si por algn motivo no se puede tener los datos de algn loci (missing data), se indica como 00. A
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 20
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

continuacin, te presentamos un ejemplo de formato gene pop.

minipop.gen :
Cinco loci, 2 poblaciones con 5 individuos en cada una
Loc1
Loc2
Loc3
Loc4
Y-linked

POP
AA8, 0405 0711 0304 0000 0505
AA9, 0405 0609 0208 1010 0505
A10, 0205 0609 0101 1010 0305
A11, 0405 0606 0102 1010 0504
A12, 0202 0609 0105 0000 0507
Pop
AF, 0000 0000 0000 1010 0505
AF, 0205 0307 0102 0000 0505
AF, 0202 0609 0202 0000 0505
AF, 0205 0909 0000 0000 0505
AF, 0205 0307 0202 1010 0505

Ejercicio 1. Para los datos contenidos en el recuadro anterior minipop.gen,


determina el nmero de poblaciones y nmero de loci; para cada loci de cada
poblacin calcula (a mano): nmero de alelos, frecuencias genotpicas observadas y
frecuencias allicas observadas.

Los archivos de entrada para los programas de gentica de poblaciones (como Genepop) son
archivos de texto simple, por lo que pueden ser generados, editados, y/o visualizados con un
programa de texto simple como Block de notas o Word pad (en windows), gedit, emacs, vi (en
linux) o textedit (mac). NUNCA se debe usar word para editar, abrir o guardar un archivo de
entrada, pues word (o cualquier otro equivalente) guarda en el archivo caracteres ocultos de formato
(tipo de hoja, tipo de letra, tamao, etc.. etc..).

Ejercicio 2. Con el objeto de conocer los niveles de variacin gentica de las


poblaciones de Bicho bola (diploides) localizadas en Tehuacn Puebla (18 25' 50'' N y
97 30' 13'' O) y en Metztitln Hidalgo (20 34' 10'' N y 98 45' 00'' O) , mediante PCR
se amplificaron cuatro loci de microsatlite (marcador que segrega de manera
codominante) desarrollados ex-profeso para el estudio: Ag24 [AC], Ag27 [TC], Ag49
[TGA] y Ag53 [GC]. En cada una de las poblaciones se colectaron 20 individuos. Los
geles electroforticos finales se muestran en el archivo:

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 21


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

~/GenPobs/basesdedatos/MicrosBichoBola_2pobs.pdf. Genera el archivo genepop


de este experimento en: ~/GenPobs/prac3/MicrosBichoBola_2pobs.gen)

INGRESAR A R DESDE FORMATO GENEPOP {ADEGENET}


Existen varias libreras diseadas para leer y entender el formato GenePop en R. En esta practica
vamos a usar la librera adegenet . Si no la tenemos instalada, entonces la instalamos:
> install.packages ( adegenet, dependencies=TRUE ) # instala el paquete adegenet y
todos lo dems
paquetes que requiere
adegenet
Nota: revisa http://cran.r-project.org/web/packages/adegenet/index.html; adegenet, requiere la
instalacin previa del paquete ade4.

Ejercicio 3. Abre un editor de texto simple y revisa el contenido del archivo


~/GenPobs/basesdedatos/Agaves_genepop.gen. Cuntos loci tiene? cuantas
poblaciones? cuntos individuos en cada poblacin? cuntos alelos tienen los loci?

Para leer un archivo de genepop con la librera adegenet, usamos el comando read.genepop :
> require (adegenet) #cargar la librera
> help ( adegenet ) # ver manual del paquete
> help (read.genepop) # ver manual del comando

Ejercicio 4. Qu funcin tiene la opcin missing del comando read.genepop?.

> gen <- read.genepop (file="~/GenPobs/basesdedatos/Agaves_genepop.gen",


ncode=3) # Leemos el archivo tipo genepop y generamos
un objeto de R tipo genind (tipo especial del paquete adegenet)
> class ( gen )
> gen

Los objetos genind son objetos especiales de R generados y ledos por la librera
adegenet que contienen toda la informacin (y de hecho un poco ms) contenida en el archivo
genepop; para ver toda la informacin de un objeto de este tipo, usamos el smbolo @ precedido
por el nombre del objeto del que queremos obtener la informacin:
> gen@tab # contiene la matriz de frecuencias allicas ; Si se ingresan individuos,
la matrz muestra la frecuencia del alelo por individuo (si son diploides:
1=homcigo; 0.5= hetercigo); cada columna es un alelo de un locus, por
ejemplo: L01.1 (Locus1.alelo1). Si se ingresan poblaciones, muestra las
frecuencias allicas por poblacin.
> gen@tab[1:5,1:10] # Matriz de frecs. alelics. solo pedimos los renglones uno a cinco y las
columnas uno a diez
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 22
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

> gen@loc.n.all # muestra el nmero de alelos totales por poblacin


> gen@type # Indica el tipo de datos codominantes o dominates (pres/aus)
Para ver el TOODA la informacin contenida en el objeto, usamos el comando attributes :
> gen
> attributes ( gen )

Otros comandos para solicitar Y EDITAR informacin de un objeto tipo genind son:
> nInd(gen) # muestra el nmero total de individuos
> nLoc(gen) # muestra el nmero de loci
> indNames(gen) #muestra el nombre de los individuos
> locNames(gen) # muestra el nombre de cada uno de los loci
> alleles(gen) # muestra una lista con los nombres de cada uno de los alelos para cada uno de los
loci
> alleles(gen)[[ 1 ]] # llamamos los nombres de cada uno de los alelos del primer locus
> ploidy(gen) # muestra la ploda
> pop (gen) # Indica la poblacin de cada uno de los individuos

Si deseas cambiar alguno de estos elementos (por ejemplo, el nombre de los loci):
> locNames(gen)
> locNames(gen) <- c( micro1, micro2, micro3, micro4,
micro5, micro6, micro7, micro8,
micro9, micro10 )
> locNames(gen)

Para cambiar el nombre de los individuos, podemos usar indNames(gen) <- c(nuevos valores ) .
> indNames (gen)
> pop ( gen ) <- c( rep(Pob1, 30 ) , rep(Pob2 30), .... )

Ejercicio 5. Genera un objeto genind con el archivo formato genepop


"~/GenPobs/prac3/MicrosBichoBola_2pobs.gen" que generaste en el ejercicio 2.
Modifica el nombre de los loci (loci1, loci2...etc..) y de las poblaciones y escribe
los comandos para describir los datos (poblaciones, nmero de loci, nmero de alelos,
ploida, etc... ).

EL FORMATO ARLEQUN
Arlequin es otro programa de amplio uso en gentica de poblaciones. Fue escrito por Laurent
Excoffier (Mol. Ecol Res. 2010. 10:564-567) y se puede descargar de manera gratuita en :
http://cmpg.unibe.ch/software/arlequin35/. El formato de arlequn tiene mas opciones que el
formato genepop (como ingresar datos de estructura, matrices de distancia, etc...) y se puede utilizar
para datos de tipo genotpico o de secuencias. Para conocer el formato Arlequn con detenimiento,
te invitamos a revisar el manual del programa. En esta ocasin no vamos a analizar el formato
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 23
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

Arlequn, sin embargo, basta mencionar que desde R puedes convertir un archivo en formato
genepop con extensin (*.gen) en un archivo formato Arlequn (extensin *.arp).

De momento, te ponemos un ejemplo del formato:


[profile] ##################### Inicia seccin profile
Title = Formato de Arlequin # Poner cualquier ttulo
NbSamples = 3 # Nmero de poblaciones
DataType = STANDARD # (DNA, RFLP, MICROSAT, STANDARD
GenotypicData = 1 FREQUENCY)
LocusSeparator = WHITESPACE # 1=genotipos 0= No genotipos
GameticPhase = 0 #TAB, NONE o algn caracter que no sea: #
RecessiveData = 0 # 0= no se conoce 1= si se conoce
[Data] #0 = datos codominantes, 1=datos dominantes
[[Samples]] ##################### Inicia seccin de datos
SampleName=Pob1 ############## Sub-seccin de definicin de poblaciones
SampleSize = 3 # nombre de la poblacion uno
SampleData = { # tamao de muestra de la poblacin
tipo1 2 10 29 43 # inicia poblacin Pob1
10 30 45 # nombre, frecuencia , genotipos (tipo1 est dos veces, y es
homcigo10, hetercigo 29-30 y hetercigo 43-45
tipo2 1 10 30 43
10 30 45
}
#termina Pob1
SampleName=Pob2
# Inicia siguiente poblacin
SampleSi....
.....
[[Structure]]
############### Defino estructura de pobs.
StructureName =Norte-Sur
(OPCIONAL)
NbGroups = 2
# le pongo un nombre a mi estructura
Group={
# nmero de grupos de la estructura
Pob1 Pob2
# defino las poblaciones del primer grupo
}
#nombres EXACTAMENTE IGUALES a como los defin
Group={ arriba
Pob3
}
[[Mantel]]
MatrixSize=3
MatrixNumber= 2 ############### Si deseo hacer mantel (OPCIONAL)
YMatrix= Fst #Tamao de la matrz de distancias (# de renglones)

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 24


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

YMatrixLabels = { # No. de matrices a usar (2 para normal, 3 o mas para


Pop1 Pop2 Pop3 parciales)
} # tipo de distancia de una de las matrices (log_fst,custom,
etc.)
DistMatMantel={
# etiquetas a usar en las matrices
0.00
3.20 0.00
0.47 0.76 0.00
#Matriz de distancias (en este caso, distancia lineal -en
}
Km- entre las poblaciones)
UsedYMatrixLabels={
Pop1 Pop2 Pop3
}

#Etiquetas para la segunda matriz

Vamos a convertir el archivo genepop: ~/GenPobs/basesdedatos/Agaves_genepop.gen en un


archivo formato de programa Arlequn utilizando el comando convert de la librera
PopGenKit :
> install.packages ( PopGenKit )
> require ( PopGenKit )
> convert (~/GenPobs/basesdedatos/Agaves_genepop.gen)
Se acaba de crear el archivo: ~/GenPobs/basesdedatos/Agaves_genpob.arp de Arlequn. Psalo a
la carpeta ~/GenPobs/prac3/ brelo con un editor de texto simple y revsalo. Si tienes mucha
curiosidad, brelo desde el programa Arlequn y ejectalo.

Ejercicio 6. Convierte el archivo de formato genepop


~/GenPobs/prac3/MicrosBichoBola_2pobs.gen en formato Arlequn y agrgale la
seccin de estructura poblacional (inventa una estructura).

EL FORMATO FASTA
El formato fasta es el formato de secuencias ms simple para guardar la informacin de DNA, RNA
o aminocidos. Las secuencias de DNA o RNA se obtienen mediante los mtodos de
secuenciacin. La secuenciacin es un conjunto de metodologas que se encuentra en constante
cambio y desarrollo, sin embargo, uno de los formatos de salida ms comunes en la secuenciacin
clsica tipo sanger es el formato ABIF. El formato ABIF tambin conocido como AB1 es un
archivo binario (con ceros y unos pero solo leble por la computadora, no por el ojo humano), que
contiene, entre muchas otras cosas, las longitudes de onda de cada una de las letras que se leyeron
en la muestra de DNA durante el proceso de secuenciacin. Para poder visualizar un cromatograma,
requieres de un programa especfico (puedes ser BioEdit, Consed algn otro programa diseado
para leer cromatogramas).

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 25


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

Leer cromatogramas {sangerseqR}


Para que R pueda leer un cromatograma, requiere de instalar la librera sangerseqR que se
encuentra en el repositorio de bioconductor. Para instalar sangerseqR desde bioconductor:
> source("http://bioconductor.org/biocLite.R")
> biocLite(sangerseqR)
> require (sangerseqR)

Leemos el archivo ab1 de secuenciacin sanger ~/GenPobs/basesdedatos/L02_02_ShawNa.ab1


con el comando read.abif :
> archAb1 <- read.abif( filename = "basesdedatos/L02_02_ShawNa.ab1")
Generamos un segundo objeto basado en el anterior, pero particular para la librera sangerseq:
> data <- sangerseq( archAb1 )
> data

Guardamos un objeto con la secuencia leda por el secuenciador en formato DNAstring :


> seq <- primarySeq( data )
> seq
Vemos las letras de la secuencia leda por el secuenciador:
> primarySeq( data, string=TRUE )
vemos el reverso complemento de la secuencia:
> reverseComplement( seq )
> reverse( seq )
> complement( seq )

Imprimmos el cromatograma para realmente ver la calidad de lo que ley el secuenciador:


> chromatogram ( data, width=50,
filename="~/GenPobs/prac3/cromato_L02_02_ShawNa.pdf")

Se va a generar un archivo pdf en la carpeta de trabajo.


Ejemplo de cromatograma:

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 26


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

Recuerda que las primeras y ltimas letras de una secuenciacin suelen tener muchos errores.
Revisa el cdigo IUPAC para cidos nuclicos: se suele utilizar la letra N para indicar una letra
desconocida (cualqier letra), R para una purina cualquiera (A o G), Y para una purimidina
cualquiera (C, T, U).

Ejercicio 7: Lee el archivo ~/GenPobs/basesdedatos/L02_3_ShawNa.ab1, genera


un cromatograma e identifica los errores de secuenciacin as como las lecturas
correctas. Investiga qu hace la funcin pairwiseAlignment()

Generar un archivo fasta


El formato fasta es el formato de secuencias ms simple. Tiene dos elementos: cabecera y
secuencia. La cabecera va a estar en una sola lnea y se identifica porque inicia con el smbolo >
(mayor que) y contiene el nombre de la secuencia. En la lnea inmediata siguiente inicia el texto de
la secuencia de DNA, RNA o aminociodos; la secuencia termina en cuanto se ingrese una nueva
cabecera (>) o termine el archivo. Te recomendamos AMPLIAMENTE que el nombre de tu
cabecera sea lo ms corto posible y evites utilizar cualquier smbolo (!#$%&/()-@,etc..) o espacio;
est estrictamente prohibido usar > como parte del nombre.

Ejemplo de formato fasta de dos secuencias de 10 pares de bases cada una:


> SecUno
ACACTGAACT
>SecDos
ACA-NG
TATG

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 27


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

Ejercicio 8: Lee el archivo ~/GenPobs/basesdedatos/L02_36_ShawNa.ab1, genera


un cromatograma, lee nicamente las 150 primeras posiciones y corrige y escribe las
letras de secuencia en formato fasta en un archivo nombrado
~/GenPobs/prac3/L02_36ShawNa.fasta.

INGRESAR SECUENCIAS A R DESDE FORMATO FASTA {APE}


Existen varias libreras diseadas para leer y entender el formato de secuencias fasta (sequinr, ape,
etc...). En esta practica vamos a usar la librera ape . Si no la tenemos instalada, entonces la
instalamos:
> install.packages ( ape ) # instala el paquete ape

Ejercicio 9. Abre un editor de texto simple y revisa el contenido del archivo


~/GenPobs/basesdedatos/Agaves_psbA.fasta. Cuntos loci tiene? cuantos
individuos? Qu largo tienen?. Investiga qu es y donde est la regin psbA.

Para leer un archivo fasta con la librera ape, usamos el comando read.fasta . Este comando
genera objetos tipo DNAbin (Dna binario)
> secs <- read.FASTA( "~/GenPobs/basesdedatos/Agaves_psbA.fasta" ) # guarda el fasta
en el objeto DNAbin
> class (secs )
> secs
> names ( secs ) # muestra las cabeceras
> length ( secs ) # muestra el nmero de secuencias
> length ( secs [[ 1 ]] ) # muestra el largo de la primer secuencia

> sectres <- secs [ 3 ] # extrae la tercer secuencia y la guarda en un nuevo objeto.
> sectres
> potatorum <- secs$Apotatorum_psbA_trnH # guarda en un nuevo obj. la secuencia
llamada Apotatourm_psbA_trnH
> potatorum

Ejercicio 10. Investiga la funcin cat y sin ejecutarla, deduce qu hara la funcin:
> cat ( as.character(secs)[[1]], sep="" )

Para escribir un nuevo archivo en formato fasta usamos el comando write.dna :


> write.dna ( sectres,
file="~/GenPobs/prac3/juego1.fasta", format="fasta" )

Ejercicio11. Lee el archivo ~/GenPobs/basesdedatos/Agaves_psbA.fasta y genera


un nuevo archivo tipo fasta con las secuencias de Agave potatorum, A. nizandensis, A.
gentryi y A. lechuguilla. Busca la forma de cambiar el nombre de las secuencias por
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 28
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

uno, dos, tres y cuatro desde el objeto DNAbin y escribe el nuevo archivo
como ~/GenPobs/prac3/Agave_psbA_seleccion.fasta

INGRESAR SECUENCIAS A R DESDE EL GENEBANK {APE}


La librera ape, permite descargar secuencias del genebank (http://www.ncbi.nlm.nih.gov/) tan
solo ingresando los nmeros de accesin (generalmente aparecen en los artculos) mediante el
comando read.GenBank :
Vamos a descargar las secuencias cuyas claves de accesin son: KJ137197, KJ137196 y KJ137195:
> secs<-c("KJ137197","KJ137196","KJ137195")
> bajadas <- read.GenBank( secs )
> attributes ( bajadas )
> write.dna ( bajadas, file="~/GenPobs/prac3/FouquieriaShrevei.fasta",
format="fasta" )

Ejercicio12. Entra al genebank y descarga las misma secuencias desde el servidor


(http://www.ncbi.nlm.nih.gov/) en el archivo
"~/GenPobs/prac3/FouquieriaShrevei_Manual.fasta". Luego, busca un artculo de
gentica de poblaciones con secuencias y descarga sus secuencias.

INGRESAR SNP COMO DATA.FRAME {BASE}


Un data.frame es una tabla en la que cada columna puede ser de distinto tipo (numrica, lgica,
de texto, etc...) aunque dentro de cada columna, todos los elementos son del mismo tipo y todas las
columnas tienen el mismo nmero de registros. Las columnas requieren de un nombre y los
renglones pueden o no tenerlo.Los datos de SNP, se guardan en formato tipo data.frame (tablas).
Ejemplo de un data.frame de 4 SNP en cinco individuos:
Individuo1 Individuo2 Individuo3 Individuo4 Individuo5
locus1 AB AA AA AA AB
locus2 AB BB BB BB AB
locus3 BB AB AB BB BB
locus4 BB AB AB BB AB

Para generar un data.frame se usa el comando data.frame . Vamos a generar un dataframe de de


dos renglones y tres columnas. Hay muchas formas de hacer un data.frame:

> Mydata <- data.frame( SNP1=c("AB","AB"), SNP2=c("AA","BB"), SNP3=c("AA","AA") )


> Mydata
:
> SNP1<-c(AB, AB)
> SNP2 <- c(AA,BB)
> Mydata2 <- data.frame ( SNP1, SNP2 )
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 29
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

> Mydata2
> Mydata2$SNP3 <- c(AA, AA) # agreagamos de ltimo momento
> Mydata2
> rownames ( Mydata2 ) <- c( "uno", "dos" )
> Mydata2
va una matrix:
> Mydata3 <- matrix(nrow=2, ncol=2)
> Mydata
> Mydata3[,1] <- SNP1
> Mydata3[,2] <- SNP2
> Mydata3
> colnames(Mydata3) <- c("SNP1","SNP2")
> rownames(Mydata3) <- c("uno","dos")
> Mydata3 <- as.data.frame (Mydata3)
> Mydata3

y podemos guardarlo como archivo csv usando el comando write.table :


> help ( write.table )
> write.table(Mydata3, file="~/GenPobs/prac3/JuegoSNP.csv", quote=FALSE,
sep="\t", ,row.names=FALSE) # acabamos de generar un archivo llamado JuegoSNP.csv
donde el texto NO tiene comillas (quote=FALSE), el separador de campos es tabulador (sep= \t) y
no queremos que imprima el nombre de los renglones.

Tambin podemos leerlo desde un archivo. Por ejemplo, vamos a leer la base de datos
~/GenPobs/basesdedatos/BichoBola_SNP.csv, pero primero, brelo con un editor de textos
simple para ver su contenido.
Nota: los archivos csv tambin se pueden abrir con el programa EXCEL. En caso de que lo hagas,
ten cuidado de no cambiar el formato del archivo (a xls u algn otro). Mejor brelos con un editor
de texto simple.

> Mydata4 <- read.table ( "~/GenPobs/basesdedatos/BichoBola_SNP.csv",


header=T, sep="\t")
> class ( Mydata4 )
> ncol ( Mydata4 )
> nrow ( Mydata4 )
> colnames ( Mydata4 )
> rownames ( Mydata4 )
> Mydata4[ , 1 ]
> rownames (Mydata4) <- Mydata4 [ , 1 ]
> rownames ( Mydata4 )

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 30


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
3.- Bases de datos de Gentica de Poblaciones VI CONGRESO NACIONAL
DE ECOLOGA

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 31


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

4.- MEDIDAS DE VARIACIN Y EQUILIBRIO DE HARDY-WEINBERG


En esta prctica, se indica en texto blanco sobre fondo negro las instrucciones que debes de
escribir en la consola de R. El smbolo > de la consola de R se conoce como prompt y es un
indicador de que el programa R est listo para recibir rdenes. Se indica en texto blanco sobre
fondo gris, los textos de salida que muestra la consola de R (y que no necesitamos ingresar); en
fondo gris con relieve blanco, se muestran las teclas a escribir.
En primera instancia, establecemos la carpeta de trabajo:
> setwd ( C:/Genpobs ) # Si tu mquina est en windows
> setwd ( ~/GenPobs ) # Si tu mquina est en linux mac (el smbolo ~ quiere decir:
/home/usuario/).

Dentro de la ruta de trabajo, genera una carpeta llamada ~/Genpobs/prac4/.

VER MAPA DE POBLACIONES EN GOOGLE MAPS {RGOOGLEMAPS}


Aunque formalmente no es un anlisis de gentica de poblaciones, si se cuenta con las coordenadas
geogrficas de las poblaciones y/o individuos, siempre puede ser til visualizarlas en un mapa. En
este caso, vamos a utilizar la extensin RgoogleMaps . (para anlisis ms formales, es ms
recomendable usar el paquete sp ).
> install.packages ("RgoogleMaps")

Para generar el mapa, necesitamos un vector con la latitud en sistema decimal de las poblaciones,
otro vector con la longitud en sistema decimal.
En un estudio de conservacin de la zorra gris (Urocyon cinereoargenteus), se capturaron 6
individuos para su genotipificacin con SNP; sus datos se encuentran en el archivo
~/GenPobs/basesdedatos/ZorraGris_SNP.csv)
1.- Primero, cargamos los datos en forma de data.frame:
> Mydatos<- read.table ( "~/GenPobs/basesdedatos/ZorraGris_SNP.csv",
header=T, sep=",")
> names(Mydatos)
> Mydatos
2.- Cargamos la librera:
> require(RgoogleMaps)
> help (bbox)
> help (GetMap)
> help (PlotOnStaticMap)
3.- Determinamos el rea que queremos dibujar con el comando qbbox :
> area <- qbbox (lat=Mydatos$lat, lon=Mydatos$lon)
> area
4.- Generamos una variable con los datos de los puntos que queremos graficar:
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 32
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

> puntos <- cbind.data.frame (lat=Mydatos$lat, lon=Mydatos$lon,


size="big", color="red" )
> puntos
5.- Descargamos el mapa en un objeto y en un archivo (Revisa la diferencia entre
maptype=satellite, terrain, mobile roadmap)
> mapaGoogle <- GetMap.bbox( lonR=area$lonR , latR=area$latR ,
markers=puntos , maptype="hybrid",
destfile= "~/GenPobs/prac4/MapaZorraGris.png" )
6.- Lo imprimimos:
> PlotOnStaticMap (mapaGoogle, mar=c(2,2,2,2), axes=T, axis.cex=0.5)
Investiga lo que sucede si indicas mar=c(0,0,0,0) o mar=c(3,3,1,0)
7.- Le agregamos texto:
> TextOnStaticMap(mapaGoogle , lat=Mydatos$lat , lon=Mydatos$lon ,
labels=Mydatos$ind)

Fig. Localizacin de muestras.

Ejercicio 1. Genera el mapa de los datos del ejercicio 2 del captulo 3 Bases de datos

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 33


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

de Gentica de poblaciones .

INGRESAR DATOS GENOTPICOS {ADEGENET}


En la prctica 3 ya vimos como ingresar datos en formato genepop va la librera adegenet.
> require(adegenet)# activamos la librera adegenet
> adegenetWeb() # Este comando te lleva a la pgina web de adegenet (revisa
Documents, manual y Documents Tutorials)

Leemos el archivo formato genpop y generamos un objeto tipo genind


> data.adegenet <- read.genepop("~/GenPobs/basesdedatos/Agaves_genepop.gen",
ncode=3)
Este objeto contiene los datos de todas las poblaciones juntas, por lo que vamos a generar un nuevo
objeto que contenga cada poblacin en un apartado genind diferente para poder hacer anlisis
dentro de las poblaciones:
> data.adegenetpop <- seppop(data.adegenet)
> data.adegenetpop[1] < - muestra los datos de la primer poblacin

Si observas el formato genind (particularmente la seccin @tab) podrs notar que tiene una
estructura organizada por individuos:
> data.adegenet@tab
A continuacin vamos a convertir nuestro objeto genind en un objeto de R llamado genepop
(no confundir con el formato del ARCHIVO genpop) que contiene la misma informacin pero por
poblaciones (va a perder los datos individuales).
> data.genepop <- genind2genpop(data.adegenet)
>data.genepop@tab

Generamos un objeto genpop pero con datos por poblacion


data.genepoppop <- lapply(data.adegenetpop, genind2genpop)

##### CALCULA FRECUENCIAS ALELICAS


require(adegenet)
#Calculamos frecuencias alelicas por poblacion
frec <- makefreq(data.genepop);
### explora:
colnames(frec) #muestra los nombres de columna
pie(frec[1, 1:36], main="Poblacin 1 locus 1") #Genera un grafico de pie de los datos indicados
pie(frec[2, 1:36], main="Poblacin 2 locus 1")
pie(frec[3, 1:36], main="Poblacin 3 locus 1")
pie(frec[4, 1:36], main="Poblacin 4 locus 1")
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 34
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

pie(frec[5, 1:36], main="Poblacin 5 locus 1")

Ejercicio 1. Grafica las frecuencias allicas de cada uno de los loci, en cada una
de las poblaciones.

##### CALCULA HETEROCIGOSIS Y POLIMORFISMO


require(adegenet)
### obtenemos Heterocigosis observada y esperada total
resum <- summary(data.adegenet) ### resum es una lista con 7 elementos
resum$Hobs
resum$Hexp
### obtenemos heterocigosis obs y esp por poblacin
resum.pop <- lapply(data.adegenetpop, summary) ### resum.pop es una lista de summarys de
poblaciones
resum.pop[[1]]$Hobs ### muestra la Hobs de la poblacin 1
resum.pop[[1]]$Hexp
### hacemos una grafiquita con los datos de heterocigosis observada contra esperada
plot (resum$Hobs, resum$Hexp, xlim=c(0,1), ylim=c(0,1), xlab="H observada",
ylab="H esperada")
segments (0,0,1,1, lty=3)
### agregamos puntos a la grafica
points (resum.pop[[1]]$Hobs, resum.pop[[1]]$Hexp, col="red", pch=16)
points (resum.pop[[2]]$Hobs, resum.pop[[2]]$Hexp, col="blue", pch=16)
points (resum.pop[[3]]$Hobs, resum.pop[[3]]$Hexp, col="green", pch=16)
points (resum.pop[[4]]$Hobs, resum.pop[[4]]$Hexp, col="gray", pch=17)
points (resum.pop[[5]]$Hobs, resum.pop[[5]]$Hexp, col="violet", pch=17)
points (resum.pop[[6]]$Hobs, resum.pop[[6]]$Hexp, col="orange", pch=17)

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 35


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

Fig. Correlacin (r =1.0; p<<0.05) entre Fig. Heterocigosis observada (cuadros verdes) y
polimorfismo y Heterocigosis. esperada (crculos rojos) por loci.

### agregamos una lnea de 0,0 a 1,1 (diagonal)


### Determina los loci polimrficos al 10% para toda la poblacin
isPoly (data.adegenet, thres=10/100)
### Determina los loci polimrficos al 90% para cada poblacin
pol <- lapply(data.adegenetpop, isPoly)
pol[[1]]

Ejercicio 2. Genera una tabla en la que pongas el polimormismo, heterocigosis


observadas, esperadas y el ndice de fijacin (F= 1 - (Hobs / Hesp) ) para cada
poblacin y para el total de poblaciones. Investiga que hace la ecuacin: sum ( pol [[ 1
]] ) / length ( pol [[ 1 ]] )

##### CALCULA DESVIACIN DE HW


require (pegas)
### Calcula desviacin HW para cada locus en cada poblacin
hw <- hw.test(as.loci(data.adegenet), B=1000)

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 36


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

##### CALCULO DE DISTANCIAS GENTICAS (NEI, COANCESTRA DE


REYNOLD'S, ETC. )
require (adegenet)
dist.reyn <- dist.genpop(data.genepop, method =3, upper = T)
dist.reyn
### Grafico con Neighborjoining las distancias de nei
require (ape)
neighbor <- nj(as.dist(dist.reyn))
plot (neighbor)
### guardamos el arbol en archivo tipo tree
write.tree ( as.phylo(neighbor), file="NJ_ReynoldsDist.tree")

Fig. Dendograma upgma de las distancias Fig. rbol del vecino ms cercano de las
genticas de nei entre las poblaciones. distancias genticas de nei entre las poblaciones.

##### CALCULO DE ESTRUCTURA GENTICA


require (hierfstat)
### calculamos Fst, Fis y Fit
fstat (data.adegenet)
### calculamos Fst pareada entre poblaciones
fst <- pairwise.fst (data.adegenet, res.type = "matrix")
### Graficamos las Fst pareadas mediante UPGMA (as.dist convierte la matriz en un objeto de
distancias)
upgma <- hclust ( as.dist(fst) , method = "average")
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 37
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

plot (upgma)
### guardamos el arbol en archivo
require (ape)
write.tree ( as.phylo(upgma) , file="Upgma_Fst.tree")

Fig. 5. Dendograma UPGMA del anlisis de


agrupoamientos jerrquicos de las distancias
euclidianas de las frecuencias allicas.

##### PRUEBA DE MANTEL


### Calculamos distancias en km entre poblaciones
geo <- read.table ("Perritos_Poblaciones.csv", header=T, sep=",")
require (fossil)
km <- earth.dist(geo[,c("X","Y")], dist = F)
km
### Calculamos mantel con ade4 (mejor)
require(ade4)
man <- mantel.randtest(as.dist(fst), as.dist(km), nrepet = 10000)
### Graficamos x contra y
plot (km, fst, xlab="Distancia Geografica (km)", ylab="Dist. Genet. (Fst)")
### Hacemos regresin lineal simple (solo para ver la lnea) entre los valores de las matrices
(como vectores)
lineal <- lm( as.vector(fst) ~ as.vector(km) )
abline (lineal, col=2, lwd=2)

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 38


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

##### CALCULO DE AMOVA


require (pegas)
dist <- as.dist(fst)
### probamos una estructura
frontera <- c("MEX","MEX","MEX","USA","USA","USA")
AMOVA <- amova(dist~frontera, nperm = 10000)
AMOVA
### probamos otra estructura
subregion <- c("MEX","MEX","MEX","USA1","USA2","USA1")
AMOVA2 <- amova(dist~subregion, nperm = 10000)
AMOVA2

Ejercicio 5. Analiza la salida del AMOVA. que regionalizacin explica la


varianza gentica?. Calcula el porcentaje de variacin de cada tratamiento
(SSD_tratam / SSD_total); SSD - (k-1)MSE / SSDtot + MSE #k=num. condi #
http://onlinestatbook.com/2/effect_size/variance_explained.html

##### COMPONENTES PRINCIPALES DE LAS FRECS ALELICAS


require(adegenet)
pca <- princomp(data.adegenet)
plot (pca$scores[,1], pca$scores[,2], bg=data.adegenet$pop, pch=21)

Ejercicio 4. Grafica el segundo componente contra el tercero. Revisa los valores


del anlisis de componentes principales y reporta el porcentaje de variacin de los
primeros tres componentes. Detecta en qu componente tienes cuando menos el 80%
de la variacin.

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 39


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

Fig. Anlisis de componentes principales de las frecuencias allicas

##### ANALISIS DE COMPONENTES PRINCIPALES CON DISCRIMINANTES


require(adegenet)
### Calculamos componentes principales y con los primeros 30 componentes, hacemos 3 funciones
discriminantes
discriDePca <- dapc (data.adegenet)
scatter (discriDePca)
### buscamos la optimizacin en el nmero de componentes a utilizar
optim.a.score (discriDePca)
### Re calculamos pero ahora con 7 componentes y 3 discriminantes
discriDePca <- dapc (data.adegenet, n.pca = 7, n.da = 3)
scatter (discriDePca)
### Generamos una grfica de probabilidad de asignacin a cada grupo
assignplot (discriDePca)

##### CALCULO EL COEFICIENTE DE ENDOGAMIA DE CADA INDIVIDUO


require (adegenet)
help (inbreeding)
### calculamos 200 valores de coef. de endog para c/individuo (obtenidos de la funcin de
verosimilitud)
coef_f <- inbreeding(data.adegenet, N = 500)
### revisamos la funcin de densidad de los 200 valores para el primer individuo
plot (coef_f[[1]], type="l", main="Valores f para el individuo 1")
funDdensi <- density(coef_f[[1]])
ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 40
Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos
4.- Medidas de variacin y equilibrio de Hardy-Weinberg VI CONGRESO NACIONAL
DE ECOLOGA

plot (funDdensi, main="Fun. de densi. de verosim. f\npara el individuo 1")


### calculamos el promedio de los 200 valores para c/individuo
f_prom <- sapply(coef_f, mean)
### Graficamos las f promedio de cada individuo y las coloreamos por poblacin
barplot (f_prom, col=data.adegenet$pop, main="Coef. de endogamia promedio f")

##### EXPORTAMOS FORMATO DE DATOS PARA USAR EN OTROS


PROGRAMAS:
### Exportamos a formato de programa structure
require (hierfstat)
data.hierfstat <- genind2hierfstat(data.adegenet)
write.struct (data.hierfstat, fname="Perritos_structure.str")
### Exportamos para Arlequin
require (PopGenKit)
convert ("Perritos_Microsats.gen")

ENRIQUE SCHEINVAR, GABRIELA CASTELLANOS-MORALES Y LUIS EGUIARTE, 2017 Pg. 41


Introduccin a la gentica de poblaciones: entendiendo la teora y aprendiendo a analizar los datos

You might also like