Jour 4:

Transcription

Jour 4:
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/blast2.2.3-mips-irix32.tar.gz
Décompresser:
gunzip blast-2.2.3-mips-irix32.tar.gz
Remarque sur les options de tar:
x
Extract the named files from the tape.
t
v
make
f
List the names of the specified files.
Normally tar does its work silently.The v (verbose) option
ar print the name of each file
it treats preceded by the function letter.
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-2.2.3-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
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 à:
http://abraxa.snv.jussieu.fr/~gerbaud/obi1/
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
(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_0000912.faa (pneumoniae) et NC_002162.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:
http://opal.biology.gatech.edu/GeneMark/heuristic_hmm2.cgi
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. 3911-3920
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubme
d&dopt=Abstract&list_uids=10481031&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
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/mynewGenmark.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: 735..1829 (direct), 365 amino acids
MNNVIISNNKIKPHHSYFLIEAKEKEINFYANNEYFSVKCNLNKNIDILEQGSLIVKGKI
FNDLINGIKEEIITIQEKDQTLLVKTKKTSINLNTINVNEFPRIRFNEKNDLSEFNQFKI
NYSLLVKGIKKIFHSVSNNREISSKFNGVNFNGSNGKEIFLEASDTYKLSVFEIKQETEP
FDFILESNLLSFINSFNPEEDKSIVFYYRKDNKDSFSTEMLISMDNFMISYTSVNEKFPE
VNYFFEFEPETKIVVQKNELKDALQRIQTLAQNERTFLCDMQINSSELKIRAIVNNIGNS
LEEISCLKFEGYKLNISFNPSSLLDHIESFESNEINFDFQGNSKYFLITSKSEPELKQIL
VPSR
head donnees/mypn/NC_000912.faa
>gi|13507740|ref|NP_109689.1| DNA polymerase III beta subunit
[Mycoplasma pneumoniae M129]
MKVLINKNELNKILKKLNNVIVSNNKMKPYHSYLLIEATEKEINFYANNEYFSAKCTLAENIDVL
EEGEV
IVKGKIFSELINGIKEDIITIQEKDQTLLVKTKKTNINLNTIDKKEFPRIRFNQNVDLKEFDELK
IQHSL
LTKGLKKIAHAVSTFRESTRKFNGVNFNGSNGKQIFLEASDSYKLSVYEIKQKTDPFNFIVETNL
LSFIN
SFNPEGGDLISIFFRKEHKDDLSTELLIKLDNFLINYTSINESFPRVMQLFDFEPETKVTIQKNE
LKDAL
QRILTLAQNERFFLCDMQVTNSHLKINSNVQNIGASLEEVTCLKFEGHKLNIAVNALSLLEHIDS
FDTDE
IELYFQGSNKYFLISSNNEPELKEILVPSK
>gi|13507741|ref|NP_109690.1| similar to j-domain of DnaJ
[Mycoplasma pneumoniae M129]
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
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 2.2.6
-p
-d
arguments:
Program Name [String]
Database [String]
default = nr
-i Query File [File In]
default = stdin
-e Expectation value (E) [Real]
default = 10.0
-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]
default = 0
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]
default = 0
-E Cost to extend a gap (zero invokes default behavior)
[Integer]
default = 0
-X X dropoff value for gapped alignment (in bits) (zero
invokes
default behavior)
blastn 30, megablast 20, tblastx 0, all others 15 [Integer]
default = 0
-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]
default = 0
-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]
default = 0
-z Effective length of the database (use zero for the real
size) [Real]
default = 0
-K Number of best hits from a region to keep (off by default,
if used a value of 100 is recommended) [Integer]
-o
default = 0
0 for multiple hit, 1 for single hit [Integer]
default = 0
-Y Effective length of the search space (use zero for the real
size) [Real]
default = 0
-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]
default = 0.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]
default = 0
-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]
default = 0
-w Frame shift penalty (OOF algorithm for blastx) [Integer]
default = 0
-t Length of the largest intron allowed in tblastn for linking
HSPs (0
disables linking) [Integer]
default = 0
-B Number of concatenated queries, for blastn and tblastn
[Integer]
Optional
default = 0
-P
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
donnees/mynew/test.faa
-i
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
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 2.2.6 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-|(0.00|0.0$))/ {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
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"