10.02.2015 Views

Journée de formation à l'utilisation du cluster

Journée de formation à l'utilisation du cluster

Journée de formation à l'utilisation du cluster

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Journée <strong>de</strong> <strong>formation</strong> à <strong>l'utilisation</strong><br />

<strong>du</strong> <strong>cluster</strong>


Pré-requis : Linux<br />

●<br />

La connexion à la plateforme<br />

●<br />

Les comman<strong>de</strong>s UNIX <strong>de</strong> base<br />

●<br />

La manipulation <strong>de</strong> fichiers<br />

●<br />

Le transfert <strong>de</strong> fichiers<br />

●<br />

Les scripts<br />

Aujourd'hui<br />

●<br />

Apprendre à calculer vite !<br />

➔<br />

Utilisation <strong>du</strong> <strong>cluster</strong> <strong>de</strong> calcul<br />

24/09/13 2


Objectifs<br />

●<br />

Exploiter au mieux les moyens <strong>de</strong> calculs<br />

➔<br />

Savoir lancer <strong>de</strong>s traitements (choix <strong>de</strong> la file<br />

d'attente, ...)<br />

➔<br />

Savoir organiser ses données (découpage <strong>de</strong>s<br />

fichiers, ...)<br />

●<br />

Suivre le déroulement <strong>de</strong>s traitements<br />

●<br />

Autonomie et maîtrise<br />

24/09/13 3


Planning <strong>de</strong> la journée<br />

Partie I : 09h00 - 12h30<br />

L'environnement <strong>de</strong> calcul<br />

Utilisation <strong>de</strong> SGE<br />

Partie II : 14h00 - 17h00<br />

Lancement <strong>de</strong> lots <strong>de</strong> traitements<br />

24/09/13 4


Connexion à l'infrastructure<br />

<strong>cluster</strong> <strong>de</strong> calcul<br />

n01 :<br />

48xcoeurs<br />

n02 :<br />

48xcoeurs<br />

ssh<br />

n03 :<br />

48xcoeurs<br />

Internet<br />

Serveur frontal<br />

«genotoul»<br />

n34 :<br />

48xcoeurs<br />

Disques<br />

24/09/13 5


Connexion à l'infrastructure<br />

●<br />

Avoir un compte, disponible sur <strong>de</strong>man<strong>de</strong> à l'adresse<br />

http://bioinfo.genotoul.fr<br />

●<br />

Connexion au serveur frontal <strong>de</strong> la plate-forme accessible via<br />

le protocole SSH à l'adresse genotoul.toulouse.inra.fr.<br />

➔<br />

➔<br />

Client SSH sur votre poste <strong>de</strong> travail distant (Putty).<br />

Session en mo<strong>de</strong> terminal pour entrer les comman<strong>de</strong>s,<br />

copier et/ou récupérer <strong>de</strong>s fichiers<br />

24/09/13 6


Le serveur frontal «genotoul»<br />

Serveur frontal<br />

«genotoul»<br />

24/09/13 7


Le serveur frontal «genotoul»<br />

●<br />

Serveur 24 cœurs avec 96 Go <strong>de</strong> mémoire vive<br />

●<br />

Linux 64 bits basé sur la distribution Red Hat<br />

●<br />

Multi utilisateurs et multi tâches<br />

●<br />

Sécurisé (SSH, gar<strong>de</strong> barrière), sauvegardé quotidiennement<br />

et maintenu<br />

●<br />

Les missions <strong>du</strong> serveur frontal :<br />

➔<br />

Mettre à disposition un environnement <strong>de</strong> développement<br />

➔<br />

Exécuter les programmes sur le système <strong>de</strong> calcul<br />

➔<br />

Contrôler le déroulement <strong>de</strong> l'exécution <strong>de</strong>s programmes<br />

➔<br />

Récupérer le résultat <strong>de</strong> l'exécution <strong>de</strong>s programmes<br />

24/09/13 8


Le serveur frontal «genotoul»<br />

●<br />

Environnement adapté à la bio-informatique<br />

➔<br />

Des logiciels dans le répertoire : /usr/local/bioinfo/bin/<br />

(ex: blastall, clustalw, iprscan, megablast, wu-blast, ...)<br />

➔<br />

Des banques <strong>de</strong> données dans le répertoire : /bank<br />

●<br />

Des langages informatiques<br />

➔<br />

Shell, perl, C, C++, java, ...<br />

●<br />

Des outils <strong>de</strong> programmation<br />

➔<br />

Nedit, nano, emacs, vi, ...<br />

24/09/13 9


Accès au <strong>cluster</strong> <strong>de</strong> calcul<br />

●<br />

Accès en mo<strong>de</strong> « batch » pour la plupart <strong>de</strong>s travaux<br />

●<br />

Accès en mo<strong>de</strong> « intéractif » pour <strong>de</strong>s cas particuliers<br />

●<br />

la communication entre le serveur et le <strong>cluster</strong> <strong>de</strong> calcul<br />

est réalisée avec l'ordonnanceur SGE<br />

24/09/13 10


Le stockage <strong>de</strong>s données<br />

Disques<br />

24/09/13 11


Le stockage <strong>de</strong>s données<br />

/usr/local/bioinfo/<br />

applications <strong>de</strong> bioinformatiques<br />

/bank/<br />

banques <strong>de</strong> données génomiques<br />

/home/<br />

/work/<br />

/save/<br />

répertoires d'accueil <strong>de</strong>s utilisateurs<br />

(pour les fichiers <strong>de</strong> configuration)<br />

répertoire <strong>de</strong> travail temporaire<br />

(pour le <strong>cluster</strong> <strong>de</strong> calcul)<br />

répertoire <strong>de</strong> stockage <strong>de</strong>s données pérennes (pas<br />

d'écriture à partir <strong>du</strong> <strong>cluster</strong>)<br />

24/09/13 12


Les volumes disques <strong>du</strong> <strong>cluster</strong><br />

●<br />

●<br />

Les volumes disques <strong>du</strong> <strong>cluster</strong> sont i<strong>de</strong>ntiques à ceux <strong>du</strong> serveur<br />

genotoul.<br />

Depuis tous les nœuds <strong>du</strong> <strong>cluster</strong> on retrouve exactement le même<br />

environnement <strong>de</strong> travail (logiciel, banques <strong>de</strong> données, zones <strong>de</strong><br />

stockages) que <strong>de</strong>puis genotoul.<br />

●<br />

Intérêts :<br />

➔ après la mise au point sur le serveur le logiciel n'a pas besoin<br />

d'être à nouveau paramétré<br />

➔ portable<br />

➔ la récupération <strong>de</strong>s résultats <strong>du</strong> calcul est simplifiée<br />

➔ le contrôle <strong>de</strong>s résultats pendant le calcul est possible<br />

24/09/13 13


Le système <strong>de</strong> calcul : le <strong>cluster</strong><br />

Système <strong>de</strong> calcul<br />

n01 : 8xcoeurs<br />

48xcoeurs<br />

n02 :<br />

48xcoeurs<br />

n03 :<br />

48xcoeurs<br />

n34 :<br />

48xcoeurs<br />

24/09/13 14


Le système <strong>de</strong> calcul : le <strong>cluster</strong><br />

●<br />

●<br />

●<br />

●<br />

34 nœuds<br />

34*48 = 1632 cœurs <strong>de</strong> calcul<br />

384Go <strong>de</strong> RAM par noeud (8 Go par coeur)<br />

Linux Red Hat 64 bits<br />

●<br />

Désignation :<br />

➔ ceri001, ceri002, ....., ceri034<br />

24/09/13 15


Planning <strong>de</strong> la journée<br />

Partie I : 09h00 - 12h30<br />

L'environnement <strong>de</strong> calcul<br />

Utilisation <strong>de</strong> SGE<br />

Partie II : 14h00 - 17h00<br />

Lancement <strong>de</strong> lots <strong>de</strong> traitements<br />

24/09/13 16


SGE (Sun Grid Engine)<br />

●<br />

Ordonnanceur<br />

« L'ordonnancement <strong>de</strong> tâches informatiques concerne exclusivement<br />

la manière <strong>de</strong> lancer <strong>de</strong>s traitements (batchs) sur un ou plusieurs<br />

composants <strong>de</strong> son système d'in<strong>formation</strong> au moyen <strong>de</strong> progiciels<br />

spécifiques. ... » (Wikipedia)<br />

➔<br />

➔<br />

➔<br />

➔<br />

Enchaînement successif <strong>de</strong>s traitements<br />

Application <strong>de</strong> règles d'exécution<br />

Soumission dans une file d'attente<br />

Pas <strong>de</strong> garantie <strong>de</strong> date d'exécution<br />

24/09/13 17


Stratégie d'ordonnancement : Fair Share<br />

●<br />

Distribution équitable entre utilisateurs <strong>du</strong> temps d'utilisation<br />

CPU<br />

➔ 4 utilisateurs A,B,C,D exécutent une tâche :<br />

➔<br />

L'utilisateur D lance une nouvelle tâche :<br />

A<br />

B C<br />

D D<br />

12,5% 12,5%<br />

25% 25% 25% 25%<br />

Et non pas :<br />

A<br />

B<br />

C<br />

D<br />

20% 20% 20% 20%<br />

20%<br />

24/09/13 18


Contraintes/limitations <strong>de</strong> soumission<br />

●<br />

Chaque job est executé :<br />

➔<br />

Sur 1 cœur <strong>de</strong> calcul<br />

➔<br />

Avec 8 Go <strong>de</strong> RAM<br />

➔<br />

Sur une file d'attente<br />

●<br />

Les files disponibles :<br />

N om d e la file<br />

w orkq (d éfa ut)<br />

unlim itq<br />

hypermemq<br />

P riorité Tem ps m a xim um<br />

300 48h<br />

100 illimité<br />

0 illimité<br />

➔<br />

Ne pas (trop) surestimer les ressources nécessaires à<br />

l’exécution <strong>de</strong> ses travaux, afin <strong>de</strong> tirer le meilleur<br />

parti <strong>du</strong> système<br />

24/09/13 19


Soumission <strong>de</strong> jobs : qsub<br />

Retourne le job ID -><br />

2 fichiers créés -><br />

- sortie standard<br />

- sortie d'erreur<br />

[user@snp ~/work]$ qsub mon_script.sh<br />

Your job 15660<br />

("mon_script.sh") has been submitted<br />

[user@snp ~/work]$ ls<br />

mon_script.sh mon_script.sh.e15660 mon_script.sh.o15660<br />

24/09/13 20


Soumission <strong>de</strong> jobs : qsub (options)<br />

●<br />

●<br />

●<br />

●<br />

●<br />

●<br />

●<br />

●<br />

-N job_name : pour donner un nom à son job<br />

-l mem=8G: pour <strong>de</strong>man<strong>de</strong>r 8Go <strong>de</strong> mémoire<br />

-l h_vmem=10G : pour fixer la taille max à 10Go<br />

-q queue_name : spécifier le nom <strong>de</strong> la file<br />

-o output_filename : redirection <strong>de</strong> la sortie standard<br />

-e error_filename : redirection <strong>de</strong> la sortie d'erreur<br />

-M mon_adresse@mail : votre @email<br />

-m bae : option d'envoi <strong>du</strong> mail (b : begin, a : abort, e : end)<br />

➔<br />

qsub -q <strong>formation</strong>q mon_script.sh<br />

24/09/13 21


Soumission <strong>de</strong> jobs : qsub (options)<br />

●<br />

Le classique ...<br />

[user@snp ~/work]$ qsub -q workq mon_script.sh<br />

Your job 15660<br />

("mon_script.sh") has been submitted<br />

➔<br />

➔<br />

8Go <strong>de</strong> RAM<br />

1 coeur<br />

24/09/13 22


Soumission <strong>de</strong> jobs : qsub (options)<br />

●<br />

Besoin <strong>de</strong> plus <strong>de</strong> Mémoire ...<br />

[user@snp ~/work]$ qsub -q workq -l h_vmem=36G -l mem=32G<br />

mon_script.sh<br />

Your job 15660<br />

("mon_script.sh") has been submitted<br />

➔<br />

➔<br />

32/36Go <strong>de</strong> RAM<br />

1 cœur<br />

24/09/13 23


Soumission <strong>de</strong> jobs : qsub (options)<br />

●<br />

Besoin <strong>de</strong> plus <strong>de</strong> coeurs …<br />

➔<br />

parallel_smp : X cœurs sur un même nœud<br />

➔ parallel_fill : X cœurs sur <strong>de</strong>s nœuds indifférents<br />

➔ parallel_rr : X cœurs sur <strong>de</strong>s nœuds forcément différents<br />

[user@snp ~/work]$ qsub -l h_vmem=6G -l mem=6G -pe parallel_smp 28<br />

mon_script.sh<br />

Your job 15660<br />

("mon_script.sh") has been submitted<br />

➔<br />

➔<br />

168 Go <strong>de</strong> RAM<br />

28 cœurs sur un seul noeud<br />

24/09/13 24


Soumission <strong>de</strong> jobs : qsub (options)<br />

●<br />

Toutes les options précé<strong>de</strong>mment décrites peuvent être intégrées<br />

directement dans le script soumis à SGE avec qsub<br />

(mon_script.sh)<br />

#!/bin/sh<br />

#$ -M user@toulouse.inra.fr<br />

#$ -m a<br />

#$ -q workq<br />

# Mon programme commence ici<br />

ls<br />

#Fin <strong>de</strong> mon programme<br />

●<br />

Sans passer par un script : l'option -b<br />

$ qsub -b y -cwd ls<br />

24/09/13 25


Soumission <strong>de</strong> jobs : qlogin (mo<strong>de</strong> interactif)<br />

L'utilisateur est<br />

connecté sur le noeud<br />

ceri002 -><br />

L'utilisateur est<br />

déconnecté -><br />

$ qlogin<br />

Your job 641468 ("QLOGIN") has been submitted<br />

waiting for interactive job to be sche<strong>du</strong>led ...<br />

Your interactive job 641468 has been successfully sche<strong>du</strong>led.<br />

Establishing /SGE/GE2011.11/inra/tools/qlogin_wrapper.sh<br />

session to host ceri002 ...<br />

Last login: Thu Aug 30 17:04:20 2012 from login<br />

[laborie@ceri002 ~]$<br />

[laborie@ceri002 ~]$ exit<br />

logout<br />

24/09/13 26


Contrôle <strong>de</strong>s jobs : qstat<br />

job-ID prior name user state submit/start at queue slots ja-task-ID<br />

-----------------------------------------------------------------------------------------------------------------<br />

job-ID : i<strong>de</strong>ntifiant unique <strong>du</strong> job assigné par l'ordonnanceur<br />

prior : la priorité <strong>du</strong> job déterminant sa position dans la queue. Sa valeur est<br />

déterminée dynamiquement<br />

name : le nom <strong>du</strong> job.<br />

user : le nom d'utilisateur <strong>du</strong> propriétaire <strong>du</strong> job.<br />

state : Etat <strong>du</strong> job (voir plus loin)<br />

submit/start at : la date et l'heure <strong>de</strong> soumission <strong>du</strong> job.<br />

queue : nom <strong>de</strong> la file sur laquelle le job est présent et le nom <strong>du</strong> noeud <strong>du</strong><br />

<strong>cluster</strong> (ressource <strong>de</strong> calcul) alloué à l'exécution <strong>de</strong> ce job.<br />

slots : nombre <strong>de</strong> slots utilisés par le job.<br />

ja-task-ID : i<strong>de</strong>ntifiant <strong>du</strong> job array (vi<strong>de</strong> dans le cas ou le job n'est pas un job<br />

array).<br />

24/09/13 27


Contrôle <strong>de</strong>s jobs : qstat<br />

state : l'état <strong>du</strong> job en abréviation :<br />

● d(eletion) : le job est en cours <strong>de</strong> suppression<br />

● E(rror) : le job n'a pu être exécuté<br />

● h(old) : le job est en attente d'exécution<br />

● r(unning) : le job est en exécution<br />

● t(ransfering) : le job est en cours <strong>de</strong> transfert<br />

● w(aiting) : le job est en attente d'exécution<br />

24/09/13 28


Contrôle <strong>de</strong>s jobs : qstat<br />

●<br />

qstat -u nom_utilisateur :<br />

donne uniquement les in<strong>formation</strong>s sur l'utilisateur<br />

●<br />

qstat -s r :<br />

donne uniquement les jobs avec le status r(unning)<br />

●<br />

man qstat :<br />

obtenir <strong>de</strong> l'ai<strong>de</strong> sur la comman<strong>de</strong><br />

[user@snp ~/work]$ qstat -s r -u user<br />

job-ID prior name user state submit/start at queue slots ja-task-ID<br />

----------------------------------------------------------------------------------------------------------------------------<br />

15555 0.56000 PLP4 user r 04/07/2009 16:39:41 longq@n01.<strong>cluster</strong> 1<br />

15556 0.56000 PLP5 user r 04/07/2009 16:39:41 longq@n01.<strong>cluster</strong> 1<br />

15558 0.56000 PLP7 user r 04/07/2009 16:39:41 longq@n01.<strong>cluster</strong> 1<br />

15559 0.56000 PLP8 user r 04/07/2009 16:39:41 longq@n02.<strong>cluster</strong> 1<br />

15560 0.56000 PLP9 user r 04/07/2009 16:39:41 longq@n02.<strong>cluster</strong> 1<br />

24/09/13 29


Contrôle <strong>de</strong>s jobs : qstat -j<br />

[user@snp ~/work]$ qstat -j 15555<br />

==============================================================<br />

job_number: 297383<br />

exec_file:<br />

job_scripts/297383<br />

submission_time: Thu Mar 4 16:38:34 2010<br />

owner:<br />

ng6<br />

uid: 1074<br />

group:<br />

NG6<br />

gid: 1006<br />

sge_o_home: /var/www<br />

...<br />

hard resource_list: h_stack=256M,arch=lx*, h_vmem=12G,memoire=12G,pri_wflow=1<br />

mail_list:<br />

ng6@bioinfo.<strong>cluster</strong><br />

notify:<br />

TRUE<br />

job_name:<br />

RunWorkflow<br />

priority: -20<br />

hard_queue_list: workq<br />

24/09/13 30


Contrôle <strong>de</strong>s jobs : qmon<br />

24/09/13 31


Modifier un job : qalter<br />

➔<br />

Condition : être propriétaire <strong>du</strong> job<br />

[user@snp ~/work]$ qstat -u user<br />

job-ID prior name user state submit/start at queue slots ja-task-ID<br />

----------------------------------------------------------------------------------------------------------------------------<br />

15833 0.56000 mon_script.sh user w 04/07/2009 16:39:41 workq@n01.<strong>cluster</strong> 1<br />

[user@snp ~/work]$ qalter -l mem=16G 15833<br />

Modified hard queue list of job 15833<br />

24/09/13 32


Supprimer un job : q<strong>de</strong>l<br />

➔<br />

Condition : être propriétaire <strong>du</strong> job<br />

[user@snp ~/work]$ qsub mon_script.sh<br />

Your job 15833 («mon_script.sh») has been submitted<br />

[user@snp ~/work]$ qstat -u user<br />

job-ID prior name user state submit/start at queue slots ja-task-ID<br />

----------------------------------------------------------------------------------------------------------------------------<br />

15833 0.56000 mon_script.sh user r 04/07/2009 16:39:41 workq@n01.<strong>cluster</strong> 1<br />

[user@snp ~/work]$ q<strong>de</strong>l 15833<br />

User has registered the job 15833 for <strong>de</strong>letion<br />

24/09/13 33


Tracer les jobs<br />

●<br />

Redirection <strong>de</strong>s sorties (erreur + standard) vers <strong>de</strong>s fichiers<br />

textes :<br />

#$ -o standard.txt<br />

#$ -e error.txt<br />

●<br />

Retour in<strong>formation</strong>s par email :<br />

#$ -M user@toulouse.inra.fr<br />

#$ -m bea<br />

b : envoie un mail au départ <strong>de</strong> l'exécution <strong>du</strong> job<br />

e : envoie un mail à la fin <strong>de</strong> l'exécution <strong>du</strong> job<br />

a : envoie un mail en cas d'erreur lors <strong>de</strong> l'exécution <strong>du</strong> job<br />

24/09/13 34


En résumé ...<br />

Système <strong>de</strong> calcul<br />

- tester (qlogin)<br />

- traiter (qsub)<br />

n01 :<br />

48xcoeurs<br />

n02 :<br />

48xcoeurs<br />

ssh<br />

n03 :<br />

48xcoeurs<br />

Internet<br />

Serveur frontal<br />

«genotoul»<br />

- login<br />

- développement (script)<br />

- suivi <strong>de</strong> jobs (qstat)<br />

Disques<br />

- /work pour l'écriture à partir <strong>du</strong> <strong>cluster</strong><br />

- /save pour les données pérennes<br />

n34 :<br />

48xcoeurs<br />

24/09/13 35<br />

➔<br />

L'environnement est conservé entre les différentes machines


Monitoring <strong>cluster</strong> genotoul<br />

24/09/13 36


Place à la pratique ...<br />

TP1<br />

24/09/13 37


Planning <strong>de</strong> la journée<br />

Partie I : 09h00 - 12h30<br />

L'environnement <strong>de</strong> calcul<br />

Utilisation <strong>de</strong> SGE<br />

Partie II : 14h00 - 17h00<br />

Lancement <strong>de</strong> lots <strong>de</strong> traitements<br />

24/09/13 38


Lancer <strong>de</strong>s lots <strong>de</strong> traitements<br />

●<br />

Concept : segmenter un job en plusieurs petits jobs atomiques<br />

●<br />

Intérêts :<br />

●<br />

➔ Améliorer le temps <strong>de</strong> traitement <strong>de</strong> façon très significative :<br />

le calcul est réalisé sur plusieurs cœurs <strong>de</strong> calcul<br />

➔<br />

Améliorer le temps <strong>de</strong> prise en charge par l'ordonnanceur<br />

Condition : le job doit être «sécable» en sous job<br />

24/09/13 39


Utilisation <strong>de</strong> blast sur le <strong>cluster</strong><br />

Fichier multi fasta<br />

mes_sequences.fa<br />

nt<br />

(banque <strong>de</strong> sequence<br />

nucléique <strong>de</strong> genbank)<br />

ma_comman<strong>de</strong>.sh<br />

blastall -p blastn -d nt -i mes_sequences.fa<br />

qsub ma_comman<strong>de</strong>.sh<br />

Execution sur un seul CPU <strong>du</strong> <strong>cluster</strong><br />

24/09/13 40


Segmentation <strong>du</strong> traitement <strong>de</strong> blast<br />

Fichier multi fasta<br />

mes_sequences.fa<br />

nt<br />

(banque <strong>de</strong> sequence<br />

nucléique <strong>de</strong> genbank)<br />

mes_sequences_1.fa<br />

mes_sequences_2.fa<br />

mes_sequences_3.fa<br />

ma_comman<strong>de</strong>1.sh<br />

blastall -p blastn -d nt -i mes_sequences_1.fa<br />

ma_comman<strong>de</strong>2.sh<br />

blastall -p blastn -d nt -i mes_sequences_2.fa<br />

ma_comman<strong>de</strong>3.sh<br />

blastall -p blastn -d nt -i mes_sequences_3.fa<br />

qsub ma_comman<strong>de</strong>_1.sh<br />

qsub ma_comman<strong>de</strong>_2.sh<br />

qsub ma_comman<strong>de</strong>_3.sh<br />

Exécution sur 3 CPUs<br />

<strong>du</strong> <strong>cluster</strong><br />

24/09/13 41


Segmentation <strong>du</strong> traitement <strong>de</strong> blast<br />

Fichier multi fasta<br />

mes_sequences.fa<br />

SplitMultifasta.pl -n 200 -o ./all_fasta/ –i extract.fasta<br />

mes_sequences_1.fa<br />

mes_sequences_2.fa<br />

mes_sequences_3.fa<br />

mes_comman<strong>de</strong>s.txt<br />

blastall -p blastn -i mes_sequences_1.fa -d refseq_rna -o 1.blast<br />

blastall -p blastn -i mes_sequences_2.fa -d refseq_rna -o 2.blast<br />

blastall -p blastn -i mes_sequences_3.fa -d refseq_rna -o 3.blast<br />

qarray mes_comman<strong>de</strong>s.txt<br />

Exécution sur 3 CPUs <strong>du</strong> <strong>cluster</strong><br />

24/09/13 42


qarray :<br />

●<br />

qarray = qsub pour n lignes<br />

➔ Ex fichier d'entrée :<br />

fasta_to_fastq.pl –fasta sequence1.fasta –qual sequence1.qual<br />

fasta_to_fastq.pl –fasta sequence2.fasta –qual sequence2.qual<br />

fasta_to_fastq.pl –fasta sequence3.fasta –qual sequence3.qual<br />

➔ Ex comman<strong>de</strong> :<br />

qarray mon_fichier.txt<br />

24/09/13 43


Créer mes_comman<strong>de</strong>s.txt<br />

Dans quel shell suis-je <br />

echo $SHELL<br />

sh<br />

rm mes_comman<strong>de</strong>s.txt<br />

for f in `ls all_fasta/*.fasta`<br />

>do<br />

>echo blastall -p blastn -i $f -d refseq_rna -o $f.blast >> mes_comman<strong>de</strong>s.txt<br />

>done<br />

tcsh<br />

rm mes_comman<strong>de</strong>s.txt<br />

foreach f (`ls all_fasta/*.fasta`)<br />

foreach echo blastall -p blastn -i $f -d refseq_rna -o $f.blast >> mes_comman<strong>de</strong>s.txt<br />

foreach end<br />

Attention ! Penser a supprimer le fichier mes_comman<strong>de</strong>s , car le >> ajoute en fin <strong>de</strong><br />

fichier.<br />

24/09/13 44


Place à la pratique ...<br />

TP2<br />

24/09/13 45

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!