INTRODUCCIÓN A LINUX

Aplicando lo Aprendido (Tareas):

1. Descargar (utilizando wget) el siguiente archivo fasta:

https://tritrypdb.org/common/downloads/release-53/TcruziCLBrener/fasta/data/TriTrypDB-53_TcruziCLBrener_AnnotatedCDSs.fasta

wget https://tritrypdb.org/common/downloads/release-53/TcruziCLBrener/fasta/data/TriTrypDB-53_TcruziCLBrener_AnnotatedCDSs.fasta

a. ¿Qué permisos tiene?

Para ver los permisos que tiene un archivo utilizamos el comando ls con la opción -l

ls -l TriTrypDB-64_TcruziCLBrenerEsmeraldo-like_AnnotatedCDSs.fasta

b. ¿Cuantas veces aparece la secuencia GGCCA? ¿En cuantas líneas?

Para buscar patrones en un archivo de texto utilizamos el comando grep. Para el primer caso es conveniente utilizar grep con la opción -o y para el segundo la opción -c. La diferencia radica en que -c cuenta la cantidad de líneas donde aparece determinado patrón, mientras que -o cuenta la cantidad de veces que aparece el patrón; si en una misma línea aparece GGCCA dos veces, grep -c me devolverá 1 y grep -o me devolverá 2.

grep -o 'GGCCA' TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta | wc -l
grep -c 'GGCCA' TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta

c. ¿Cuantos genes hay?

En archivos .fasta cada secuencia (en este caso gen) esta asociada a un único header que consiste en una línea que comienza siempre con el signo > seguido del nombre del gen y otra información. Por lo tanto, contar la cantidad de líneas que comienzan con > nos daría cuantos genes hay:

grep -c '>' TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta

Otra opción

grep '>' TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta | wc -l

d. ¿Cuál es el último gen? ¿Y el primero?

Para este caso hay que recordar los comandos ‘head’ y ‘tail’, y combinarlos con lo visto anteriormente.

  • Para el primero:
grep '>' TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta | head
  • Para el último:
grep '>' TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta | tail

2. Cree un archivo que tenga solo las primeras 200 líneas del archivo original

En este caso utilizamos el comando ‘head’, especificando la cantidad de líneas que queremos que tome del archivo, y redirijimos la salida a un nuevo archivo de texto.

head -200 TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta > 200_lineas.txt

a. ¿Cuantos genes hay?

Procedemos de igual forma a lo visto unos ejercicios atrás:

grep -c '>' 200_lineas.txt

o

grep '>' 200_lineas.txt | wc -l

b. ¿Cuantas veces aparece la secuencia GGCCA?

Para este caso, es conveniente utilizar grep con la opción -o en lugar de -c. La diferencia radica en que -c cuenta la cantidad de líneas donde aparece determinado patrón, mientras que -o cuenta la cantidad de veces que aparece el patrón; si en una misma línea aparece GGCCA dos veces, grep -c me devolverá 1 y grep -o me devolverá 2. Lo que hace la opción -o cada vez que encuentra un patrón es imprimirlo en pantalla en una línea, por lo que lo combinaremos con wc -l:

grep -o 'GGCCA' 200_lineas.txt | wc -l

c. ¿Cuantas veces aparece la secuencia GGCCA en el primer gen?

Este ejercicio debemos realizarlo en tres pasos:

1- Como se trata de un archivo fasta donde las secuencias de cada gen están en múltiples líneas, debemos primero visualizar en cuantas líneas consiste el primer gen:

head 200_lineas.txt

2- Vemos que la secuencia del gen sigue más allá de las 10 primeras líneas que devuelve el comando head solo. Probamos incorporarle al comando head el argumento -20 que devuelve las primeras 20 lineas:

head -20 200_lineas.txt

Vemos que el primer gen consiste en 11 líneas (contando el header)

3- Nos quedamos entonces con las primeras 11 líneas y contamos la cantidad de veces que aparece el patrón:

head -11 200_lineas.txt | grep -o 'GGCC' | wc -l

3. Cree un archivo que contenga solo el primer y último gen

Este ejercicio requiere varios pasos:

1- Vamos probando con los comandos head y tail, y la opción de cuántas líneas queremos visualizar, hasta ver el primer gen con su secuencia completa y el último gen con su secuencia completa:

head -20 TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta

Vemos (de nuevo) que el primer gen consiste en 11 líneas incluyendo el header.

tail -20 TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta

Vemos que el último gen consiste en menos de 20 líneas, específicamente en 14.

2- Ahora que ya sabemos en cuantas líneas consiste el primer y último gen, crearemos un archivo de texto nuevo que los incluya:

head -11 TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta > primer_ultimo.txt
tail -14 TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta >> primer_ultimo.txt

Recordemos que para crear un archivo nuevo a partir de la salida de un comando utilizamos >, mientras que para agregarla a un archivo ya existente utilizamos >> (sino sobrescribimos el archivo).

Para este tipo de actividades es más fácil y conveniente trabajar con archivos fasta donde las secuencias de cada gen no estén en múltiples líneas, sino que cada gen consista en una línea con el header y una línea con la secuencia asociada. De esta forma se simplifica mucho el análisis:

  • Para obtener el primer gen con su secuencia:
head -2 archivo_fasta > archivo_nuevo
  • Para obtener el ultimo gen con su secuencia:
tail -2 archivo_fasta >> archivo_nuevo

Los comandos para convertir un archivo fasta de secuencias en multilíneas a un archivo fasta del tipo mencionado anteriormente (que cada gen consista en una línea con el header y una línea con la secuencia asociada), excede lo visto en este práctico, pero es conveniente tener un pipeline para cuando nos enfrentemos a este tipo de situaciones. Aquí va un ejemplo:

sed 's/>..*/&____/g' ENTRADA | sed ':a;N;$!ba;s/\n//g' |sed 's/____/\n/g' | sed 's/>/\n>/g' | egrep .> SALIDA

En ENTRADA debemos ingresar el nombre del archivo fasta de secuencias en multilíneas, y en SALIDA debemos ingresar el nombre que queremos asignarle al nuevo archivo fasta con las secuencias en una sola línea.

a. ¿Cuánto pesa el archivo?

Para esto corremos el siguiente comando:

ls -sh TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta

b. ¿Como cambiaría los permisos para que sólo usted pueda modificar ese archivo?

Para cambiar los permisos utilizamos el comando chmod, y eliminamos los permisos de escritura -w a group y others, dejándolo solo para user:

chmod go-w TriTrypDB-64_TcruziCLBrener_AnnotatedCDSs.fasta