ftp://ftp.ncbi.nih.gov/blast/executables/latest

Dimension: px
Commencer à balayer dès la page:

Download "ftp://ftp.ncbi.nih.gov/blast/executables/latest"

Transcription

1 Jour 4: TP : application à la bibliographie et recherche d'information : recherche systématique d'articles scientifiques liés à des séquences sélectionnées d'une banque de séquence (wget). TP: recherche automatisée de bibliographie recherche et recompilation d'un utilitaire ; wget: Aller chercher wget sur le net (ftp://ftp.gnu.org/pub/gnu/wget/ ou ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/) en ftp anonyme (en binary, télécharger wget.tar.gz, qui est un lien sur la version la plus récente). Décompacter avec "gunzip wget.tar.gz" (->wget.tar). Désarchiver l'archive wget.tar avec "tar -xvf wget.tar", ce qui donne un directory "wget-1.6". gunzip wget.tar.gz tar -xvf wget.tar cd wget-1.6 # décompacter l'archive -> wget.tar # dé-archiver -> directory wget-1.6 Examiner le directory (README, INSTALL, license GPL (COPYING)./configure --prefix $HOME/wget # configuration pour installation locale à l'utilisateur./make # fabrique l'executable./make install # installe les binaires $HOME/wget/bin/wget help # pour avoir de l'aide sur wget Applications, projet à développer dans la journée : création d'une banque de gènes orthologues à partir de 3 banques génomiques de 3 micro-organismes, examen de la synténie entre ces gènes. I- RECUPERER LES PROGRAMMES NECESSAIRES Aller chercher blastall sur le net : si on est sur une machine moderne ftp://ftp.ncbi.nih.gov/blast/executables/latest ATTENTION: Future standalone BLAST executables for linux-ia32 will require glibc 2.3.We advise linux systems administrators to install the latest version of glibc in order to ensure continued binary compatibility with NCBI software. Pour les Silicons il faut aller chercher une version 32 bits ftp://ftp.ncbi.nih.gov/blast/executables/release/2.2.3/blast mips-irix32.tar.gz Décompresser: gunzip blast mips-irix32.tar.gz Remarque sur les options de tar: x Extract the named files from the tape.

2 t List the names of the specified files. v Normally tar does its work silently.the v (verbose) option make ar print the name of each file it treats preceded by the function letter. f tar uses the next argument as the name of the archive Faire un tar -tvf dessus pour voir que les dossiers vont être tous crées dans le répertoire courant et qu'ils sont nombreux. Remarque : contrairement au cas de wget, ici ce sont les exécutables que nous avons charge et pas les sources. Il a donc fallut prendre ceux qui correspondaient à la bonne plate-forme. Il n'y a pas besoin de compilation. Ranger: On va grouper les exécutables dans un répertoire: mkdir ~/bin/blast mv ~/bin/blast mips-irix32.tar.gz Desarchiver l'archive blast.sgi32.tar: tar xvf blast.sgi32.tar Deleter l'archive après décompression: rm blast.sgi32.tar Les exécutables qui vont nous servir sont blastall et formatdb. Dans un home bien rangé, les programmes personnels sont dans ~/bin. Il faut donc que le shell connaisse ce chemin: echo $path set path= ( ~/bin $path ) ln -s ~/bin/blast/blastall ~/bin ln -s ~/bin/blast/formatdb ~/bin Le problème ici est que la modification du path n'a lieu que pour le shell dans lequel on a tape la commande. Afin que notre bin soit dans le path pour tous les shell qu'on ouvrira, il faut mettre cette commande dans le.cshrc. Il faut également ajouter une variable d'environnement pour décrire l'emplacement des matrices de similarités: BLOSUM... set path= ( ~/bin $path ) setenv BLASTMAT = ~/bin/blast/data Ensuite, il faut charger le nouveau.cshrc source.cshrc II- RECUPERER LES DONNEES NECESSAIRES

3 On range toujours très bien!!! donc: mkdir ~/synthenie mkdir ~/synthenie/donnees mkdir ~/synthenie/results cd ~/synthenie Pour mimer la vraie vie on peut dire qu'on vient de séquencer un nouveau mycoplasme (en fait génitalium) et aller le chercher sur le site de notre service de séquençage!!!! II-1 Le nouveau génome cd ~/synthenie/donnees mkdir ~/synthenie/donnees/mynew Aller chercher mynew à: et mettre le fichier Nmynew.fna (>Mycoplasma sp, complete genome) dans le répertoire qui va bien II-2 les autres génomes Il faut ensuite aller chercher sur le net les fichiers de séquences protéiques correspondants aux deux, trois voire plus génomes que nous souhaitons comparer. On va sur le site ftp du ncbi a l'adresse: ftp://ftp.ncbi.nih.gov/genomes/bacteria Chaque dossier correspond à un génome, avec les séquences nucléiques et protéiques dans différents formats:.asn : langage de description des séquences.faa : fasta pour les protéines.ffn : fasta pour le nucléique des gènes.fna : le génome complet en fasta.gbk : la séquence du génome complet et les annotations en format genbank.ptt : analyse des gènes sous forme tabules.val : fichier binaire des structures disponibles et éventuellement.genemark : prédictions de GeneMark.GeneMarkHMM : prédictions de GeneMarkHMM.Glimmer : prédictions de 2GLIMMER Remarque sur COG (Clusters of Orthologous Groups) A Natural System of Gene Families from Complete Genomes. Les COG (Lipman et al., NCBI)sont une classification automatique des gènes trouves dans 21 (janvier 2000) organismes séquencés

4 (8 l'origine). La classification est faite par comparaisons de tous les génomes entre eux, avec des critères raisonnables de score et de réciprocité. Donc mkdir ~/synthenie/donnees/mypn mkdir ~/synthenie/donnees/urur Puis downloader dans le répertoire qui va bien les fichiers des séquences protéiques: NC_ faa (pneumoniae) et NC_ faa (Ureaplasma urealyticum). III PRÉDICTION DES GÈNES DE «MYCOPLASMA NEW» ET TRAITEMENT DU FICHIER D'OUTPUT de GENEMARK On utilisera GeneMark sur le Web: Heuristic Approach for Gene Prediction in Prokaryotes Besemer J. and Borodovsky M., Heuristic approach to deriving models for gene finding, NAR, 1999, Vol. 27, No. 19, pp d&dopt=abstract&list_uids= &query_hl=3 Computer methods of accurate gene finding in DNA sequences require models of protein coding and non-coding regions derived either from experimentally validated training sets or from large amounts of anonymous DNA sequence. Here we propose a new, heuristic method producing fairly accurate inhomogeneous Markov models of protein coding regions. The new method needs such a small amount of DNA sequence data that the model can be built 'on the fly' by a web server for any DNA sequence >400 nt. Tests on 10 complete bacterial genomes performed with the GeneMark.hmm program demonstrated the ability of the new models to detect 93.1% of annotated genes on average, while models built by traditional training predict an average of 93.9% of genes. Models built by the heuristic approach could be used to find genes in small fragments of anonymous prokaryotic genomes and in genomes of organelles, viruses, phages and plasmids, as well as in highly inhomogeneous genomes where adjustment of models to local DNA composition is needed. The heuristic method also gives an insight into the mechanism of codon usage pattern evolution. Il faut cocher les options qui vont bien: Use alternate genetic code: Mycoplasma(TGA = Trp) Translate predicted genes into protein

5 et décocher celles qui ne vont pas bien Generate PDF graphics (screen) On sauvegarde le résultat dans donnees/mynew/mynew-genmark.out. Dans cet output les lignes qui nous intéressent commencent: soit par «>» soit par une majuscule suivie de majuscule(s) ou d'une étoile. d'où on peut tirer la regex: (^> ^[A-Z][A-Z\*]+$) Il faut en plus enlever l'*, d'où: awk '/(^> ^[A-Z][A-Z\*]+$)/ {print $0}' données/mynew/mynew- Genmark.out sed 's/*//' > données/mynew/nmynew.faa III MODIFICATION DES FICHIERS DE SÉQUENCES PROTÉIQUES Que ce soit dans les fichiers Genbank ou dans le fichier de protéines prédites les protéines sont dans l'ordre par rapport à leur position dans le génome. Regardons a présent comment sont annotes les protéines dans ces fichiers: head donnees/mynew/nmynew.faa >Translation: (direct), 365 amino acids MNNVIISNNKIKPHHSYFLIEAKEKEINFYANNEYFSVKCNLNKNIDILEQGSLIVKGKI FNDLINGIKEEIITIQEKDQTLLVKTKKTSINLNTINVNEFPRIRFNEKNDLSEFNQFKI NYSLLVKGIKKIFHSVSNNREISSKFNGVNFNGSNGKEIFLEASDTYKLSVFEIKQETEP FDFILESNLLSFINSFNPEEDKSIVFYYRKDNKDSFSTEMLISMDNFMISYTSVNEKFPE VNYFFEFEPETKIVVQKNELKDALQRIQTLAQNERTFLCDMQINSSELKIRAIVNNIGNS LEEISCLKFEGYKLNISFNPSSLLDHIESFESNEINFDFQGNSKYFLITSKSEPELKQIL VPSR head donnees/mypn/nc_ faa >gi ref NP_ DNA polymerase III beta subunit [Mycoplasma pneumoniae M129] MKVLINKNELNKILKKLNNVIVSNNKMKPYHSYLLIEATEKEINFYANNEYFSAKCTLAENIDVL EEGEV IVKGKIFSELINGIKEDIITIQEKDQTLLVKTKKTNINLNTIDKKEFPRIRFNQNVDLKEFDELK IQHSL LTKGLKKIAHAVSTFRESTRKFNGVNFNGSNGKQIFLEASDSYKLSVYEIKQKTDPFNFIVETNL LSFIN SFNPEGGDLISIFFRKEHKDDLSTELLIKLDNFLINYTSINESFPRVMQLFDFEPETKVTIQKNE LKDAL QRILTLAQNERFFLCDMQVTNSHLKINSNVQNIGASLEEVTCLKFEGHKLNIAVNALSLLEHIDS FDTDE IELYFQGSNKYFLISSNNEPELKEILVPSK >gi ref NP_ similar to j-domain of DnaJ [Mycoplasma pneumoniae M129]

6 MTLYDLLELPQTATLQEIKTAYKRLAKRYHPDINKQGADTFVKINNAYAVLSDTTQKAEYDAMLR FSEFE DRVKRLDFSIKWHEQFMEELQFHHNWDFDFIRNREYTQPTPTNNKYSSFLDKDVSLAFYQLYSKG KLDFD Donc,en fait par rapport a ce qui nous intéresse,le nom pourrait être simplement "gi position espece". Donc, on modifie ça et on sauve au même endroit mais en appelant le fichier espece.faa. foreach f (`ls donnees`) foreach? cd donnees/$f foreach? awk -v esp=$f 'BEGIN{i=1} /^>/ {print ">gi "i" "esp; i++} /^[^>]/ {print $0}' N*.faa > $f.faa foreach? cd../.. foreach? end IV RECHERCHE DES ORTHOLOGUES Nous allons rechercher pour les paires de génomes mynewxmypn, mynewxxurur et mypnxurur les séquences protéiques qui présentent le plus de similarité. Ici, pour simplifier, la recherche ne se fera que dans un seule sens et avec l'heuristique de blast. Dans la vraie vie, il faudrait préférer à cette méthode un bbh avec une méthode exacte. Pour faire cela, nous allons commencer par rechercher pour chaque séquence protéique de mynew, les similarités avec les banques de séquences protéiques de mypn et urur, puis ainsi de suite. Pour cela, il faut créer des banques blast des séquences protéiques des trois génomes avec la commande formatdb. Pour plus de renseignements sur le fonctionnement de blast, voir OBI3 Pour lancer formatdb, on va choisir les options qui vont bien nedit ~/bin/blast/readme.formatdb & Une fois qu'on a compris la commande à lancer avec les options qui vont bien, on fait une boucle pour créer les trois banques de protéines: foreach f (`ls donnees`) foreach? cd donnees/$f foreach? formatdb -i $f.faa -p T -n $f foreach? cd../.. foreach? end Ensuite lançons blastall sans paramètre pour avoir le descriptif des options disponibles et construire la commande pour comparer par exemple la première protéine de mynew avec les séquences protéiques d'urur. Pour cela, commençons par créer un fichier test qui contient la première protéine de mynew: Sur combien de lignes est écrite cette protéine dans le fichier

7 mynew.faa? less donnees/mynew/mynew.faa-> 8 lignes Extraire ces 8 lignes dans un fichier test.faa dans le répertoire données: head -8 donnees/mynew/mynew.faa > test.faa blastp Compares an amino acid query sequence against a protein sequence database. blastn Compares a nucleotide query sequence against a nucleotide sequence database. blastx Compares a nucleotide query sequence translated in all reading frames against a protein sequence database. You could use this option to find potential translation products of an unknown nucleotide sequence. tblastn Compares a protein query sequence against a nucleotide sequence database dynamically translated in all reading frames. tblastx Compares the six-frame translations of a nucleotide query sequence against the six-frame translations of a nucleotide sequence database. Please note that the tblastx program cannot be used with the nr database on the BLAST Web page because it is computationally intensive. Blastall less blastall arguments: -p Program Name [String] -d Database [String] default = nr -i Query File [File In] default = stdin -e Expectation value (E) [Real] default = m alignment view options: 0 = pairwise, 1 = query-anchored showing identities, 2 = query-anchored no identities, 3 = flat query-anchored, show identities, 4 = flat query-anchored, no identities, 5 = query-anchored no identities and blunt ends, 6 = flat query-anchored, no identities and blunt ends, 7 = XML Blast output, 8 = tabular, 9 tabular with comment lines 10 ASN, text 11 ASN, binary [Integer]

8 -o BLAST report Output File [File Out] Optional default = stdout -F Filter query sequence (DUST with blastn, SEG with others) [String] default = T -G Cost to open a gap (zero invokes default behavior) [Integer] -E Cost to extend a gap (zero invokes default behavior) [Integer] -X X dropoff value for gapped alignment (in bits) (zero invokes default behavior) blastn 30, megablast 20, tblastx 0, all others 15 [Integer] -I Show GI's in deflines [T/F] default = F -q Penalty for a nucleotide mismatch (blastn only) [Integer] default = -3 -r Reward for a nucleotide match (blastn only) [Integer] default = 1 -v Number of database sequences to show one-line descriptions for (V) [Integer] default = 500 -b Number of database sequence to show alignments for (B) [Integer] default = 250 -f Threshold for extending hits, default if zero blastp 11, blastn 0, blastx 12, tblastn 13 tblastx 13, megablast 0 [Integer] -g Perfom gapped alignment (not available with tblastx) [T/F] default = T -Q Query Genetic code to use [Integer] default = 1 -D DB Genetic code (for tblast[nx] only) [Integer] default = 1 -a Number of processors to use [Integer] default = 1 -O SeqAlign file [File Out] Optional -J Believe the query defline [T/F] default = F -M Matrix [String] default = BLOSUM62 -W Word size, default if zero (blastn 11, megablast 28, all others 3) [Integer] -z Effective length of the database (use zero for the real size) [Real] -K Number of best hits from a region to keep (off by default, if used a value of 100 is recommended) [Integer]

9 -P 0 for multiple hit, 1 for single hit [Integer] -Y Effective length of the search space (use zero for the real size) [Real] -S Query strands to search against database (for blast[nx], and tblastx) 3 is both, 1 is top, 2 is bottom [Integer] default = 3 -T Produce HTML output [T/F] default = F -l Restrict search of database to list of GI's [String] Optional -U Use lower case filtering of FASTA sequence [T/F] Optional default = F -y X dropoff value for ungapped extensions in bits (0.0 invokes default behavior) blastn 20, megablast 10, all others 7 [Real].0 -Z X dropoff value for final gapped alignment in bits (0.0 invokes default behavior) blastn/megablast 50, tblastx 0, all others 25 [Integer] -R PSI-TBLASTN checkpoint file [File In] Optional -n MegaBlast search [T/F] default = F -L Location on query sequence [String] Optional -A Multiple Hits window size, default if zero (blastn/megablast 0, all others 40 [Integer] -w Frame shift penalty (OOF algorithm for blastx) [Integer] -t Length of the largest intron allowed in tblastn for linking HSPs (0 disables linking) [Integer] -B Number of concatenated queries, for blastn and tblastn [Integer] Optional Ensuite lancer le blast avec comme query cette la séquence test.faa et comme subject la banque des protéines de mypn: blastall -p blastp -d donnees/mypn/mypn -i donnees/mynew/test.faa On voit beaucoup de choses sortir, pour notre problème on veut seulement la première ligne des descriptions on ne veut pas les alignements: blastall -p blastp -v 1 -b 0 -d donnees/mypn/mypn -i donnees/mynew/test.faa

10 On voit toujours beaucoup de texte et finalement on ne veut à la fin que: "gene1 gene2 e-value"pour la paire des gènes orthologues. Finalement pour tracer les positions des gènes orthologues entre deux espèces, seules les positions des deux gènes sur leur génome respectif nous intéressent et seulement lorsque la e-value est inférieure a 0.05: Attention avec blastall et probablement supérieure les «gros scores» donnent une e value de 0.0 au lieu de 0.00 avec les versions inférieures. blastall -p blastp -d donnees/mypn/mypn -i donnees/mynew/test.faa -v 1 -b 0 grep gi\ awk '/^Query/{x=$2} /^[^Q]/ {print x $1, $NF}' awk -F '[ ]' '/(e- ( $))/ {print $2, $4}' A présent qu'on a la commande qui va bien, on va écrire un shell qui nous permettra de traiter les trois paires de génomes. nedit bestblast & On commence par la ligne #!/bin/csh -f et on copie au dessous la ligne qui tue. On rend le fichier exécutable et on le lance une fois afin de vérifier que tout va bien: chmod +x bestblastq./bestblast Maintenant, il faut rendre le script plus générique et pour cela passer la banque et la query en arguments au script. #!/bin/csh -f blastall -p blastp -d donnees/$1/$1 -i donnees/$2 -v 1 -b 0 grep gi\ awk '/^Query/{x=$2} /^[^Q]/ {print x $1, $NF}' awk -F '[ ]' '/(e- 0.00)/{print $2, $4}'./bestblast mypn mynew/test.faa Essayons maintenant un génome contre un génome:./bestblast mypn mynew/mynew.faa Bon ça marche donc on veut que le script enregistre les résultats dans un fichier qu'il appellera banquexsujet dans le répertoire results. On veut aussi taper le moins de choses possibles!! On peut aussi commencer ce fichier par une ligne de commentaire : #!/bin/csh -f set name = $1x$2:h echo $name

11 echo \# positions des genes orthologues sur les genomes > results/$name blastall -p blastp -d donnees/$1/$1 -i donnees/$2/$2.faa -v 1 -b 0 grep gi\ awk '/^Query/{x=$2} /^[^Q]/ {print x $1, $NF}' awk -F '[ ]' '/(e- 0.00)/{print $2, $4}'>> results/$name On peut à présent lancer les trois bestblast:./bestblast mypn myge./bestblast urur myge./bestblast urur mypn Il ne reste plus qu'a tracer dans gnuplot les positions des gènes orthologues sur les génomes: cd results gnuplot plot "mypnxmyge" plot "ururxmyge plot "ururxmypn"