Seminari 3
Unix II
-Comandes i manipulacions bàsiques de
fitxers al Unix-

Bioinformàtica - 1er trimestre curs 2012/2013 - UPF

Els conceptes i competències que heu d'adquirir al llarg d'aquesta pràctica són:


Editor de texte EMACS

L'emacs és un editor per a fitxers de texte. Per engegar-lo hem d'escriure des del shell:

$ emacs nomdelfitxer

Ens apareixerà una nova finestra amb l'emacs i podrem començar immediatament a escriure. Moltes opcions són al menu desplegable que apareix a la primera línia de la finestra, però no totes. La forma ''standard'' d'accedir i executar comandes a l'emacs es utilitzant una combinació de tecles, prement primer la tecla de control Ctrl i mentres la mantenim apretada, prémer la tecla corresponent de l'alfabet. La nomenclatura C-x, per exemple, vol dir prémer la tecla x mentre estem prement la tecla de control Ctrl. Teniu en compte que x vol dir x en minúscules.

Als menús de l'emacs un fitxer es referit com a buffer, apart de file. Per exemple, quan volem enregistrar allò que hem escrit, hem d'anar a l'opció Files i Save Buffer, o be apretar C-x C-s.

Per tal de practicar una mica heu de crear els seguents fitxers, cadascun dels quals correspon als codons que codifiquen un aminoàcid determinat (especificat al nom del fitxer):

Podeu editar mes d'un fitxer al mateix temps. Escolliu l'opció Files i Split Window (o be premeu C-x C-2) i se us dividira la finestra en dos. Podeu cambiar entre les noves finestres dins l'editor picant amb el ratoli a la que voleu canviar (o be premeu C-x C-o). Per tal de carregar o crear un nou fitxer a una de les noves finestres heu d'anar a Files i Open File (o be premeu C-x C-f) i a l'última linia de la finestra haureu d'escriure el nom del fitxer. Fixeu-vos que l'editor assumeix que el voleu crear (o carregar) des del directori actual. Si heu de crear o carregar un fitxer en un altre directori heu d'esborrar el que us ha ficat, i escriure-ho vosaltres mateixos. No hi ha navegació amb el ratolí pels directoris com al Windows!

Per anar al començament del fitxer que estem editant premem la tecla Home o Inicio, i per anar al final la tecla End o Fin. També podem utilitzar les tecles de pàgina amunt Page Up o Re Pág, i pàgina avall Page Down o Av Pág.

Per tal de copiar i enganxar (Copy&Paste) texte a l'editor, heu de seleccionar el texte amb el botó esquerra del ratolí, posicionar el cursor allà on volem empegar el texte (amb el ratolí també o amb les fletxes) i o be, prémer C-y, o be el boto del mig del ratolí.

Per tenir una referència més exhaustiva de les comandes del emacs consulteu l' Emacs Reference Card.

Si voleu veure en acció un programador experimentat utilitzant funcionalitats avançades de l'Emacs, vegueu el següent video de la conferència WebRebels que va tenir lloc el 24 i 25 de maig passat a Oslo:

Més videos d'aquest tipus i nivell, illustrant altres funcionalitats els trobareu a http://emacsrocks.com.


El mecanisme del redireccionament al UNIX

Recordeu que podem obtenir un petit manual d'utilització de qualsevol comanda d'unix amb la comanda man, per exemple:

man ls

El símbol > serveix per redireccionar el que ens surt per pantalla, com ara:

$ man ls > manualls.txt

ens crea el fitxer manualls.txt que conte tot el texte que podem veure mitjançant la comanda man ls. Si fem cat manualls.txt veurem el contingut del fitxer, però en aquest cas ens adonarem que no hi cap a la finestra del terminal i només veiem la part final. Per tal de veure el contingut en parts que hi caben a la pantalla hem d'utilitzar la comanda more:

$ more manualls.txt

Així com el símbol > crea i omple un fitxer amb qualsevol contingut que anava a ser volcat a la finestra terminal, el símbol » fa el mateix, però sense crear el fitxer de nou i simplement afegint el contingut al final, per exemple, si fem:

$ man cp >> manualls.txt

i more manualls.txt veurem que a continuació del manual de la comanda ls hem afegit el contingut del manual de la comanda cp.


Encadenament de comandes mitjançant el redireccionament per ''pipes''

Per tal d'il.lustrar el funcionament d'altres comandes, editem els seguent fitxer que anomenarem amincodon.txt:

Phe UUU
Phe UUC
Leu UUA
Leu UUG
Leu CUU
Leu CUC
Leu CUA
Leu CUG
Ile AUU
Ile AUC
Ile AUA
Met AUG
Val GUU
Val GUC
Val GUA
Val GUG
Ser UCU
Ser UCC
Ser UCA
Ser UCG
Pro CCU
Pro CCC
Pro CCA
Pro CCG
Thr ACU
Thr ACC
Thr ACA
Thr ACG
Ala GCU
Ala GCC
Ala GCA
Ala GCG
Tyr UAU
Tyr UAC
Stop UAA
Stop UAG
His CAU
His CAC
Gin CAA
Gin CAG
Asn AAU
Asn AAC
Lys AAA
Lys AAG
Asp GAU
Asp GAC
Glu GAA
Glu GAG
Cys UGU
Cys UGC
Stop UGA
Trp UGG
Arg CGU
Arg CGC
Arg CGA
Arg CGG
Ser AGU
Ser AGC
Arg AGA
Arg AGG
Gly GGU
Gly GGC
Gly GGA
Gly GGG

la comanda cut mostra parts seleccionades de cada linia d'un fitxer, provem el seguent:

$ cut -c 1-3 amincodon.txt

sovint voldrem fer varies manipulacions a un mateix fitxer, una darrera de l'altra, durant les quals els resultats intermitjos no en son importants. El sistema unix ens proveeix una forma simple de encadenar sortides de programes com a entrades a altres programes mitjançant el concepte de pipe, o canonada. Anomenarem pipe al simbol ''|'' que ficat entre dues comandes redirecciona la sortida del programa que hi ha a l'esquerra del pipe, cap a l'entrada del programa que hi ha a la dreta del pipe.

per exemple ens pot interessar veure poc a poc la sortida de la comanda anterior, aleshores podem fer:

$ cut -c 1-3 amincodon.txt | more

la comanda cut te opcions addicionals que permeten referirse a columnes específiques d'un fitxer de texte sense haver de treballar amb les limitacions d'un rang de símbols. Proveu:

$ cut -d ' ' -f 1 amincodon.txt

a partir d'aquest punt de la pràctica anirem aprenent noves comandes i funcionalitats en forma d'exercicis curts numerats.

1. averigueu mitjançant el manual del unix que fan les opcions -d i -f, i deduiu per què necessitem l'opció -d.


la comanda sort ordena de forma creixent el contingut d'un fitxer, proveu:

$ sort amincodon.txt

2. ara averigueu mitjançant el manual (man sort) com podeu fer perquè la comanda sort us tregui el fitxer ordenat de forma decreixent a l'alfabet ...


... i proveu d'obtenir el nom de l'aminoàcid ordenat de forma creixent alfabèticament i mostrant-ho pel terminal pàgina per pàgina.


la comanda egrep ens permet buscar patrons dins de fitxers, per exemple proveu de fer

$ egrep Pro amincodon.txt

3. ara heu de crear els cuatre fitxers pro.txt, val.txt, ala.txt i thr.txt que contindran els seus codons respectius, sense fer anar l'editor (pista: necessitareu un redireccionament).


4. ara combinarem aquests cuatre fitxers mitjançant la comanda paste que ens permetrà tenir les correspondencies d'aquests aminoàcids amb els seus codons de forma tabulada, proveu:

$ paste pro.txt val.txt ala.txt thr.txt


5. ara editeu el seguent fitxer abreviat.txt:

Ala A
Arg R
Asn N
Asp D
Cys C
Gln Q
Glu E
Gly G
His H
Ile I
Leu L
Lys K
Met M
Phe F
Pro P
Ser S
Ter X
Thr T
Trp W
Tyr Y
Val V

una altra forma de combinar fitxers és amb la comanda join. La comanda join combina fitxers que tenen en comu alguna de les seves columnes. Aquesta comanda necessita que tots dos fitxers estiguin ordenats en ordre alfabètic ascendent. La sintaxi d'aquesta comanda és:

$ join fitxer1 fitxer2

6. proveu d'utilitzar la comanda join sobre la versió ordenada de amincodon.txt i abreviat.txt.


7. ara proveu de mostrar per pantalla només els parells <codons,abreviatura>.


8. editeu un fitxer de texte que es digui, per exemple, prova.txt amb el contingut seguent:

barcelona
madrid
barcelona

proveu la comanda uniq sobre el fitxer prova.txt:

$ uniq prova.txt

ara proveu la comanda uniq amb l'opció -c de la següent manera:

$ uniq -c prova.txt

9. ara modifiqueu el fitxer prova.txt per tal d'obtenir el següent contingut:

barcelona
barcelona
madrid

i proveu un altre cop

$ uniq prova.txt

i tambe amb l'opció -c

$ uniq -c prova.txt

què és el que fa la comanda uniq?

Aplicació a examinar la distribució dels transcrits de mRNA i dels exons anotats en el genoma humà

per tal d'il.lustrar en el contexte de la bioinformàtica la utilització de les comandes anteriors abordarem una pregunta senzilla:

Quants transcrits de mRNA podem trobar anotats al genoma humà ?

Primer de tot, ens hem de fer amb un conjunt d'anotacions dels transcrits de mRNA al genoma humà. Entre les bases de dades disponibles farem anar el UCSC Genome Browser. Seguiu de forma estricta les següents passes:

  1. fiqueu el ratolí damunt de l'enllaç http://genome.ucsc.edu, premeu el botó dret del ratolí i seleccioneu l'opció Open link in new window.

  2. observeu que a l'esquerra d'aquesta plana web hi ha un panel vertical amb differents enllaços. Seguiu l'enllaç Table Browser.

  3. us trobareu amb un formulari en el qual heu de seleccionar les següents opcions:
    clade:
    Mammal
    genome:
    Human
    assembly:
    Mar. 2006
    group:
    Genes and Gene Prediction Tracks
    track:
    RefSeq Genes
    table:
    refGene
    region:
    genome
    output format:
    selected fields from primary and related tables
    output file:
    escriviu transcrits_humans.txt
    file type returned:
    plain text

  4. premeu el botó summary/statistics. Tardarà uns segons i us apareixerà una plana amb números relacionats amb les opcions que heu seleccionat abans al formulari. Intenteu deduïr que volen dir aquests números.

  5. premeu el botó al navegador de tornar a la plana anterior.

  6. premeu el botó get output. Us conduirà a una plana on podrem seleccionar la informació que ens interessa. Concretament seleccioneu els següents camps:

  7. premeu el botó get output. Us sortirà una finestreta amb una caixa de diàleg preguntant on voleu enregistrar el fitxer amb nom transcrits_humans.txt. Mireu d'enregistrar-lo al directori de la pràctica o, sino, al vostre home. Recordeu on l'heu enregistrat.


si no us en sortiu de baixar-vos el fitxer, el podeu obtenir simplement seguint el següent enllaç (per enregistrar-lo us caldrà prémer el botó dret del ratolí i escollir l'opció "Guardar Enllaç Com...", "Save Link As..." en anglès, o similar).


ara mireu el contingut del fitxer que acabem de baixar del UCSC genome browser a la finestra terminal, amb la comanda (penseu si esteu al directori on es troba el fitxer, sino us hi haureu de moure):

$ more transcrits_humans.txt

observeu que el fitxer te 4 columnes separades per tabulacions, on la primera linia te els noms de les columnes i on cada linia conté el cromosoma, la posició cromosòmica de començament de la transcripció, la posicio cromosòmica de final de la transcripció i el nombre d'exons del transcrit.


per tal de saber el nombre de transcrits anotats només ens cal per tant contar el nombre de línies del fitxer, que ho farem amb la comanda:

$ wc transcrits_humans.txt


ara intenteu respondre vosaltres sols a les següents qüestions:

  1. penseu una forma d'obtenir la distribució del nombre de transcrits anotats per cromosoma, utilitzant les comandes cut, sort i uniq.
  2. esbrineu la distribució del nombre d'exons per transcrit: Quants transcrits hi ha amb 3 exons ? amb 4 exons ? amb 5 exons ? etc., quin nombre d'exons és el mes freqüent als transcrits humans ?