Atelier Phylogénomique Analyses phylogénomiques
From silico.biotoul.fr
m (→Gènes trouvés chez toutes les souches de Synechococcus mais dans aucune de Prochlorococcus:) |
m (→Comparaison des résultats de PanOCT avec OrthoFinder) |
||
(24 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
==Liens== | ==Liens== | ||
- | *[http://silico.biotoul.fr/p/Atelier_Phylog%C3%A9nomique#Analyses_phylog.C3.A9nomiques | + | *retour à [http://silico.biotoul.fr/p/Atelier_Phylog%C3%A9nomique#Analyses_phylog.C3.A9nomiques Atelier Phylogénomique] |
+ | |||
==Analyses phylogénomiques== | ==Analyses phylogénomiques== | ||
Comme dans [https://www.ncbi.nlm.nih.gov/pubmed/18159947 Kettler et al., 2007], nous allons utiliser quatre génomes de Synechococcus comme groupe externe dans nos analyses. | Comme dans [https://www.ncbi.nlm.nih.gov/pubmed/18159947 Kettler et al., 2007], nous allons utiliser quatre génomes de Synechococcus comme groupe externe dans nos analyses. | ||
Line 25: | Line 26: | ||
Nous allons utiliser la même procédure que pour les génomes de Prochlorococcus ([http://silico.biotoul.fr/p/Atelier_Phylog%C3%A9nomique_Prokka#Automatisation_des_annotations_prokka_sur_l.27ensemble_des_g.C3.A9nomes Automatisation des annotations prokka sur l'ensemble des génomes]) | Nous allons utiliser la même procédure que pour les génomes de Prochlorococcus ([http://silico.biotoul.fr/p/Atelier_Phylog%C3%A9nomique_Prokka#Automatisation_des_annotations_prokka_sur_l.27ensemble_des_g.C3.A9nomes Automatisation des annotations prokka sur l'ensemble des génomes]) | ||
- | < | + | <source lang='bash'> |
mkdir -p ~/work/Synechococcus/prokka | mkdir -p ~/work/Synechococcus/prokka | ||
cd ~/work/Synechococcus | cd ~/work/Synechococcus | ||
Line 31: | Line 32: | ||
squeue -l -u $USER | squeue -l -u $USER | ||
- | </ | + | </source> |
Une fois les jobs terminés, vérifiez que les fichiers de sorties de prokka existent et ne sont pas vides. | Une fois les jobs terminés, vérifiez que les fichiers de sorties de prokka existent et ne sont pas vides. | ||
- | < | + | <source lang='bash'> |
ls -l ~/work/Synechococcus/prokka/Aaa*/*.faa | ls -l ~/work/Synechococcus/prokka/Aaa*/*.faa | ||
- | </ | + | </source> |
====''Synechococcus'' blastp All-All==== | ====''Synechococcus'' blastp All-All==== | ||
Line 43: | Line 44: | ||
MSK | MSK | ||
- | < | + | <source lang='bash'> |
mkdir -p ~/work/Synechococcus/peptide | mkdir -p ~/work/Synechococcus/peptide | ||
cd ~/work/Synechococcus/peptide | cd ~/work/Synechococcus/peptide | ||
Line 49: | Line 50: | ||
ls -l ~/work/Synechococcus/peptide | ls -l ~/work/Synechococcus/peptide | ||
- | </ | + | </source> |
Créer la ''blast database''. | Créer la ''blast database''. | ||
Line 63: | Line 64: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | < | + | <source lang='bash'> |
sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 makeblastdb.sh | sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 makeblastdb.sh | ||
squeue -l -u $USER | squeue -l -u $USER | ||
- | </ | + | </source> |
Boucle sur les genomes de ''Synechococcus''. | Boucle sur les genomes de ''Synechococcus''. | ||
Line 90: | Line 91: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | < | + | <source lang='bash'> |
sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 blast_allall.sh | sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 blast_allall.sh | ||
squeue -l -u $USER | squeue -l -u $USER | ||
- | </ | + | </source> |
<!-- | <!-- | ||
Line 113: | Line 114: | ||
--> | --> | ||
- | < | + | <source lang='bash'> |
squeue -l -u $USER | squeue -l -u $USER | ||
ls ~/work/Synechococcus/BlastP | wc -l | ls ~/work/Synechococcus/BlastP | wc -l | ||
- | </ | + | </source> |
===''Prochlorococcus'' ''versus'' ''Synechococcus''=== | ===''Prochlorococcus'' ''versus'' ''Synechococcus''=== | ||
====Liens symboliques sur les fichiers peptides==== | ====Liens symboliques sur les fichiers peptides==== | ||
- | < | + | <source lang='bash'> |
mkdir -p ~/work/ProchlorococcusSynechococcus/peptide | mkdir -p ~/work/ProchlorococcusSynechococcus/peptide | ||
ln -s ~/work/Prochlorococcus/peptide/*.faa* ~/work/ProchlorococcusSynechococcus/peptide/. | ln -s ~/work/Prochlorococcus/peptide/*.faa* ~/work/ProchlorococcusSynechococcus/peptide/. | ||
Line 126: | Line 127: | ||
ls -l ~/work/ProchlorococcusSynechococcus/peptide/. | ls -l ~/work/ProchlorococcusSynechococcus/peptide/. | ||
- | </ | + | </source> |
====Liens symboliques sur les fichiers blastp==== | ====Liens symboliques sur les fichiers blastp==== | ||
- | < | + | <source lang='bash'> |
mkdir -p ~/work/ProchlorococcusSynechococcus/BlastP | mkdir -p ~/work/ProchlorococcusSynechococcus/BlastP | ||
ln -s ~/work/Prochlorococcus/BlastP/*.tab ~/work/ProchlorococcusSynechococcus/BlastP/. | ln -s ~/work/Prochlorococcus/BlastP/*.tab ~/work/ProchlorococcusSynechococcus/BlastP/. | ||
Line 135: | Line 136: | ||
ls -l ~/work/ProchlorococcusSynechococcus/BlastP/. | ls -l ~/work/ProchlorococcusSynechococcus/BlastP/. | ||
- | </ | + | </source> |
+ | |||
====Compléter les paires de comparaisons==== | ====Compléter les paires de comparaisons==== | ||
MSK | MSK | ||
Line 158: | Line 160: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | < | + | <source lang='bash'> |
sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 blast_allall.sh | sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 blast_allall.sh | ||
squeue -l -u $USER | squeue -l -u $USER | ||
- | </ | + | </source> |
Vérifiez que vous avez bien le nombre de fichiers attendus! | Vérifiez que vous avez bien le nombre de fichiers attendus! | ||
===Groupes de gènes orthologues avec PanOCT=== | ===Groupes de gènes orthologues avec PanOCT=== | ||
- | ====Préparation des fichiers combined==== | + | ====Préparation des fichiers ''combined''==== |
- | < | + | <source lang='bash'> |
srun --pty bash | srun --pty bash | ||
mkdir -p ~/work/Synechococcus/panoct/results | mkdir -p ~/work/Synechococcus/panoct/results | ||
mkdir -p ~/work/ProchlorococcusSynechococcus/panoct/results | mkdir -p ~/work/ProchlorococcusSynechococcus/panoct/results | ||
- | </ | + | </source> |
'''combined.att''' | '''combined.att''' | ||
Créer un fichier avec les coordonnées, noms, fonction et souches des gènes. | Créer un fichier avec les coordonnées, noms, fonction et souches des gènes. | ||
Line 185: | Line 187: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | < | + | <source lang='bash'> |
cat ~/work/Prochlorococcus/panoct/results/*.tab ~/work/Synechococcus/panoct/results/*.tab> ~/work/ProchlorococcusSynechococcus/panoct/results/combined.att | cat ~/work/Prochlorococcus/panoct/results/*.tab ~/work/Synechococcus/panoct/results/*.tab> ~/work/ProchlorococcusSynechococcus/panoct/results/combined.att | ||
head ~/work/ProchlorococcusSynechococcus/panoct/results/combined.att | head ~/work/ProchlorococcusSynechococcus/panoct/results/combined.att | ||
- | </ | + | </source> |
'''genomes.list''' | '''genomes.list''' | ||
Liste des souches à analyser. | Liste des souches à analyser. | ||
Line 201: | Line 203: | ||
'''combined.fasta''' | '''combined.fasta''' | ||
Concaténer les fichier peptides dans un seul fichier. | Concaténer les fichier peptides dans un seul fichier. | ||
- | < | + | <source lang='bash'> |
cat peptide/*.faa > panoct/results/combined.fasta | cat peptide/*.faa > panoct/results/combined.fasta | ||
grep -c '>' panoct/results/combined.fasta | grep -c '>' panoct/results/combined.fasta | ||
- | </ | + | </source> |
'''combined.blast''' | '''combined.blast''' | ||
Concaténer les résultats des blastp dans un seul fichier. | Concaténer les résultats des blastp dans un seul fichier. | ||
- | < | + | <source lang='bash'> |
cat BlastP/*.tab > panoct/results/combined.blast | cat BlastP/*.tab > panoct/results/combined.blast | ||
head panoct/results/combined.blast | head panoct/results/combined.blast | ||
- | </ | + | </source> |
====run panOCT Prochlorococcus vs Synechococcus==== | ====run panOCT Prochlorococcus vs Synechococcus==== | ||
Exemple de script "[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/scripts/panoct_PS.csh panoct_PS.csh]" (les chemins sont à changer). | Exemple de script "[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/scripts/panoct_PS.csh panoct_PS.csh]" (les chemins sont à changer). | ||
- | < | + | <source lang='bash'> |
cd ~/work/ProchlorococcusSynechococcus/panoct | cd ~/work/ProchlorococcusSynechococcus/panoct | ||
mkdir ~/work/ProchlorococcusSynechococcus/images | mkdir ~/work/ProchlorococcusSynechococcus/images | ||
- | </ | + | </source> |
- | < | + | <source lang='bash'> |
sbatch panoct_PS.csh | sbatch panoct_PS.csh | ||
squeue -l -u $USER | squeue -l -u $USER | ||
- | </ | + | </source> |
<!-- | <!-- | ||
/home/formation/public_html/M2_Phylogenomique/PanGenomePipeline/PanGenomePipeline-master/pangenome/bin/panoct.pl -b results -t combined.blast -f genomes.list -g combined.att -P combined.fasta -S yes -L 1 -M Y -H Y -V Y -N Y -F 1.33 -G y -c 0,50,95,100 -T | /home/formation/public_html/M2_Phylogenomique/PanGenomePipeline/PanGenomePipeline-master/pangenome/bin/panoct.pl -b results -t combined.blast -f genomes.list -g combined.att -P combined.fasta -S yes -L 1 -M Y -H Y -V Y -N Y -F 1.33 -G y -c 0,50,95,100 -T | ||
Line 252: | Line 254: | ||
cat(pdf_file, "\n") | cat(pdf_file, "\n") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
*[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/matchtable_heatmap.pdf matchtable_heatmap.pdf] | *[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/matchtable_heatmap.pdf matchtable_heatmap.pdf] | ||
Line 287: | Line 290: | ||
if( $i !~ /-/ ) sp++ | if( $i !~ /-/ ) sp++ | ||
} | } | ||
- | if ( mp== | + | if ( mp==12 && sp ==0 ) { |
h++; | h++; | ||
printf("%d\t%d", h, $1); | printf("%d\t%d", h, $1); | ||
Line 300: | Line 303: | ||
Quelles-sont les fonctions des gènes retenus? | Quelles-sont les fonctions des gènes retenus? | ||
- | + | '''Prokka''' | |
<pre style="color:blue;white-space: pre-wrap;white-space: -moz-pre-wrap;white-space: -pre-wrap;white-space: -o-pre-wrap"> | <pre style="color:blue;white-space: pre-wrap;white-space: -moz-pre-wrap;white-space: -pre-wrap;white-space: -o-pre-wrap"> | ||
rm ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt | rm ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt | ||
+ | |||
awk '{ system("grep "$3" ~/work/Prochlorococcus/prokka/Aaaa/Aaaa.gff >> ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt")}' < ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific.txt | awk '{ system("grep "$3" ~/work/Prochlorococcus/prokka/Aaaa/Aaaa.gff >> ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt")}' < ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific.txt | ||
+ | |||
cat ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt | cat ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt | ||
+ | </pre> | ||
+ | |||
+ | '''eggNOG''' | ||
+ | <pre style="color:blue;white-space: pre-wrap;white-space: -moz-pre-wrap;white-space: -pre-wrap;white-space: -o-pre-wrap"> | ||
+ | rm ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_eggNOG_annotations.txt | ||
+ | |||
+ | awk '{ system("grep "$3" /home/formation/work/Prochlorococcus/eggNOG/Aaaa.emapper.annotations >> ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_eggNOG_annotations.txt")}' < ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific.txt | ||
+ | |||
+ | cat ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_eggNOG_annotations.txt | ||
</pre> | </pre> | ||
Line 310: | Line 324: | ||
MSK | MSK | ||
+ | <!-- | ||
<syntaxhighlight lang="awk"> | <syntaxhighlight lang="awk"> | ||
awk 'BEGIN { | awk 'BEGIN { | ||
Line 331: | Line 346: | ||
printf("\n"); | printf("\n"); | ||
} | } | ||
- | }' < ~/work/ProchlorococcusSynechococcus/panoct/results/matchtable.txt | + | }' < ~/work/ProchlorococcusSynechococcus/panoct/results/matchtable.txt |
</syntaxhighlight> | </syntaxhighlight> | ||
- | + | --> | |
<pre style="color:red;white-space: pre-wrap;white-space: -moz-pre-wrap;white-space: -pre-wrap;white-space: -o-pre-wrap"> | <pre style="color:red;white-space: pre-wrap;white-space: -moz-pre-wrap;white-space: -pre-wrap;white-space: -o-pre-wrap"> | ||
Question 3.3: | Question 3.3: | ||
Line 351: | Line 366: | ||
MSK | MSK | ||
- | |||
<syntaxhighlight lang="awk"> | <syntaxhighlight lang="awk"> | ||
awk ' | awk ' | ||
Line 366: | Line 380: | ||
if ( ncol > 1 ) { | if ( ncol > 1 ) { | ||
#printf("%d\n", $1); | #printf("%d\n", $1); | ||
- | for (k=1; k<=ncol; k++) { | + | for (k=1; k<=ncol-1; k++) { |
for (m=k+1; m<=ncol; m++) { | for (m=k+1; m<=ncol; m++) { | ||
printf("%s%s\n", col[k], col[m]); | printf("%s%s\n", col[k], col[m]); | ||
Line 388: | Line 402: | ||
if ( ncol > 1 ) { | if ( ncol > 1 ) { | ||
#printf("%d\n", $1); | #printf("%d\n", $1); | ||
- | for (k=1; k<=ncol; k++) { | + | for (k=1; k<=ncol-1; k++) { |
for (m=k+1; m<=ncol; m++) { | for (m=k+1; m<=ncol; m++) { | ||
printf("%s%s\n", col[k], col[m]); | printf("%s%s\n", col[k], col[m]); | ||
Line 398: | Line 412: | ||
}' ~/work/ProchlorococcusSynechococcus//panoct/results/matchtable.txt > ~/work/ProchlorococcusSynechococcus/PSpairs.txt | }' ~/work/ProchlorococcusSynechococcus//panoct/results/matchtable.txt > ~/work/ProchlorococcusSynechococcus/PSpairs.txt | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | |||
- | |||
La comparaison peut être réalisée graphiquement avec un digramme de Venn. | La comparaison peut être réalisée graphiquement avec un digramme de Venn. | ||
MSK | MSK | ||
- | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
srun --pty bash | srun --pty bash | ||
Line 424: | Line 435: | ||
intersections$PS | intersections$PS | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | |||
*[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/ProchlorococcusSynechococcus_Venn.pdf ProchlorococcusSynechococcus_Venn.pdf] | *[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/ProchlorococcusSynechococcus_Venn.pdf ProchlorococcusSynechococcus_Venn.pdf] | ||
====Comparaison des résultats de PanOCT avec OrthoFinder==== | ====Comparaison des résultats de PanOCT avec OrthoFinder==== | ||
+ | <!-- | ||
OrthoFinder File: ~/work/OrthoFinder/Prochlorococcus/OrthoFinder/Results_Pro/WorkingDirectory/OrthoFinder/Results_ProSyn/Phylogenetic_Hierarchical_Orthogroups/N0.tsv | OrthoFinder File: ~/work/OrthoFinder/Prochlorococcus/OrthoFinder/Results_Pro/WorkingDirectory/OrthoFinder/Results_ProSyn/Phylogenetic_Hierarchical_Orthogroups/N0.tsv | ||
- | + | --> | |
MSK | MSK | ||
<!-- | <!-- | ||
Line 524: | Line 535: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
--> | --> | ||
+ | <!-- | ||
*[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/panOCT_OrthoFinder_Venn_ProSyn.pdf panOCT_OrthoFinder_Venn_ProSyn.pdf] | *[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/panOCT_OrthoFinder_Venn_ProSyn.pdf panOCT_OrthoFinder_Venn_ProSyn.pdf] | ||
*[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/panOCT_OrthoFinder_Venn_Pro.pdf panOCT_OrthoFinder_Venn_Pro.pdf] | *[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/panOCT_OrthoFinder_Venn_Pro.pdf panOCT_OrthoFinder_Venn_Pro.pdf] | ||
*[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/panOCT_OGOrthoFinder_Venn_Pro.pdf panOCT_OGOrthoFinder_Venn_Pro.pdf] | *[http://genoweb.toulouse.inra.fr/~formation/M2_Phylogenomique/Figures/panOCT_OGOrthoFinder_Venn_Pro.pdf panOCT_OGOrthoFinder_Venn_Pro.pdf] | ||
- | + | --> | |
---- | ---- | ||
*[http://silico.biotoul.fr/p/Atelier_Phylog%C3%A9nomique#Analyses_phylog.C3.A9nomiques Analyses phylogénomiques] | *[http://silico.biotoul.fr/p/Atelier_Phylog%C3%A9nomique#Analyses_phylog.C3.A9nomiques Analyses phylogénomiques] |
Current revision as of 10:06, 7 December 2022
Contents
|
Liens
- retour à Atelier Phylogénomique
Analyses phylogénomiques
Comme dans Kettler et al., 2007, nous allons utiliser quatre génomes de Synechococcus comme groupe externe dans nos analyses.
Mise à jour des scripts!
cp /home/formation/public_html/M2_Phylogenomique/scripts/* ~/work/scripts
Synechococcus
Génomes et annotations
- accession "CP000435, CP000097, BX548020, CP000110"
Les fichiers GenBank peuvent être obtenus avec la commande wget en utilisant les chemins enregistrés dans le fichier: accession_file.lst
Comme précédemment, les génomes sont renommés en utilisant un code à quatre lettres.
Les fichiers GenBank renommés sont disponibles dans le répertoire: GenBank
Les séquences ADN ont été extraites des fichiers GenBank : DNA
Fichier avec les informations sur les souches: species_strain_names.txt
Nous allons utiliser la même procédure que pour les génomes de Prochlorococcus (Automatisation des annotations prokka sur l'ensemble des génomes)
mkdir -p ~/work/Synechococcus/prokka cd ~/work/Synechococcus ~/work/scripts/prokka_loop.pl --sample Synechococcus squeue -l -u $USER
Une fois les jobs terminés, vérifiez que les fichiers de sorties de prokka existent et ne sont pas vides.
ls -l ~/work/Synechococcus/prokka/Aaa*/*.faa
Synechococcus blastp All-All
Nous allons reproduire le même enchaînement de scipts utilisés avec Prochlorococcus (Atelier_Phylogénomique_Blast Préliminaires) en prenant soin de remplacer Prochlorococcus par Synechococcus dans les noms des répertoires.
Copiez les fichier *.faa de prokka dans ~/work/Synechococcus/peptide/
MSK
mkdir -p ~/work/Synechococcus/peptide cd ~/work/Synechococcus/peptide cp ~/work/Synechococcus/prokka/Aaa*/*.faa ~/work/Synechococcus/peptide/. ls -l ~/work/Synechococcus/peptide
Créer la blast database.
MSK
for i in ~/work/Synechococcus/peptide/*.faa; do echo "module load bioinfo/ncbi-blast-2.7.1+; makeblastdb -in $i -dbtype prot;" done > makeblastdb.sh cat makeblastdb.sh
sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 makeblastdb.sh squeue -l -u $USER
Boucle sur les genomes de Synechococcus.
MSK
mkdir ~/work/Synechococcus/BlastP evalue=1e-5 dbsize=100000000 for i in ~/work/Synechococcus/peptide/*.faa; do ip=$(basename $i .faa) for j in ~/work/Synechococcus/peptide/*.faa; do jp=$(basename $j .faa) outfile="~/work/Synechococcus/BlastP/"$ip"_"$jp".tab" echo "module load bioinfo/ncbi-blast-2.7.1+; blastp -query $i -db $j -seg yes -dbsize $dbsize -evalue $evalue -outfmt 6 -num_threads 1 -out $outfile;" done done > blast_allall.sh cat blast_allall.sh
sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 blast_allall.sh squeue -l -u $USER
squeue -l -u $USER ls ~/work/Synechococcus/BlastP | wc -l
Prochlorococcus versus Synechococcus
Liens symboliques sur les fichiers peptides
mkdir -p ~/work/ProchlorococcusSynechococcus/peptide ln -s ~/work/Prochlorococcus/peptide/*.faa* ~/work/ProchlorococcusSynechococcus/peptide/. ln -s ~/work/Synechococcus/peptide/*.faa* ~/work/ProchlorococcusSynechococcus/peptide/. ls -l ~/work/ProchlorococcusSynechococcus/peptide/.
Liens symboliques sur les fichiers blastp
mkdir -p ~/work/ProchlorococcusSynechococcus/BlastP ln -s ~/work/Prochlorococcus/BlastP/*.tab ~/work/ProchlorococcusSynechococcus/BlastP/. ln -s ~/work/Synechococcus/BlastP/*.tab ~/work/ProchlorococcusSynechococcus/BlastP/. ls -l ~/work/ProchlorococcusSynechococcus/BlastP/.
Compléter les paires de comparaisons
MSK
evalue=1e-5 dbsize=100000000 for i in ~/work/Synechococcus/peptide/*.faa; do ip=$(basename $i .faa) for j in ~/work/Prochlorococcus/peptide/*.faa; do jp=$(basename $j .faa) outfile="~/work/ProchlorococcusSynechococcus/BlastP/"$ip"_"$jp".tab" echo "module load bioinfo/ncbi-blast-2.7.1+; blastp -query $i -db $j -seg yes -dbsize $dbsize -evalue $evalue -outfmt 6 -num_threads 1 -out $outfile;" outfile="~/work/ProchlorococcusSynechococcus/BlastP/"$jp"_"$ip".tab" echo "module load bioinfo/ncbi-blast-2.7.1+; blastp -query $j -db $i -seg yes -dbsize $dbsize -evalue $evalue -outfmt 6 -num_threads 1 -out $outfile;" done done > blast_allall.sh cat blast_allall.sh
sarray -J mkdb -o %j.out -e %j.err -t 01:00:00 --cpus-per-task=1 blast_allall.sh squeue -l -u $USER
Vérifiez que vous avez bien le nombre de fichiers attendus!
Groupes de gènes orthologues avec PanOCT
Préparation des fichiers combined
srun --pty bash mkdir -p ~/work/Synechococcus/panoct/results mkdir -p ~/work/ProchlorococcusSynechococcus/panoct/results
combined.att Créer un fichier avec les coordonnées, noms, fonction et souches des gènes.
cd ~/work/Synechococcus for file in peptide/*.faa do prefix=$(basename $file .faa) echo "~/work/scripts/prokkagff2panoct.pl --gffdir prokka/$prefix --output prokka/$prefix/$prefix.tab" ~/work/scripts/prokkagff2panoct.pl --gffdir prokka/$prefix --output panoct/results/$prefix.tab done squeue -l -u $USER ls panoct/results/*.tab
cat ~/work/Prochlorococcus/panoct/results/*.tab ~/work/Synechococcus/panoct/results/*.tab> ~/work/ProchlorococcusSynechococcus/panoct/results/combined.att head ~/work/ProchlorococcusSynechococcus/panoct/results/combined.att
genomes.list Liste des souches à analyser.
cd ~/work/ProchlorococcusSynechococcus/ for i in peptide/*.faa do echo $(basename $i .faa) done > panoct/results/genomes.list more panoct/results/genomes.list
combined.fasta Concaténer les fichier peptides dans un seul fichier.
cat peptide/*.faa > panoct/results/combined.fasta grep -c '>' panoct/results/combined.fasta
combined.blast Concaténer les résultats des blastp dans un seul fichier.
cat BlastP/*.tab > panoct/results/combined.blast head panoct/results/combined.blast
run panOCT Prochlorococcus vs Synechococcus
Exemple de script "panoct_PS.csh" (les chemins sont à changer).
cd ~/work/ProchlorococcusSynechococcus/panoct mkdir ~/work/ProchlorococcusSynechococcus/images
sbatch panoct_PS.csh squeue -l -u $USER
Question 3.1: Résumez dans une figure les différentes étapes réalisées jusqu'à l’obtention des groupes de gènes orthologues. N'oubliez pas la légende!
Heatmap des groupes de gènes orthologues avec le fichier ~/work/ProchlorococcusSynechococcus/panoct/results/matchtable_0_1.txt
MSK
srun --pty bash # si nécessaire! module load system/R-3.5.1; R pdf_file <- '~/work/ProchlorococcusSynechococcus/images/matchtable_heatmap.pdf' strain_file <- '~/work/ProchlorococcusSynechococcus/panoct/results/genomes.list' matchtable_0_1 <- '~/work/ProchlorococcusSynechococcus/panoct/results/matchtable_0_1.txt' strains <- read.delim(file=strain_file, header=FALSE) data <- read.delim(file=matchtable_0_1, , sep="\t", header=FALSE, row.names=1) colnames(data) <- t(strains) pdf(file=pdf_file, paper="a4r") heatmap(t(as.matrix(data)), scale='none', col=c('white', 'darkblue'), xlab="Strains", labCol=NA) dev.off() cat(pdf_file, "\n")
Question 3.2: Décrivez la figure obtenue. Quelles informations vous apporte-t-elle?
Gènes espèces spécifique
Gènes trouvés chez toutes les souches de Prochlorococcus mais dans aucune de Synechococcus:
Vous allez utiliser un script awk pour réaliser ce filtrage.
- Editez le fichier matchtable.txt pour comprendre sa structure.
- Que représente chaque ligne?
- Comment sont organisées les colonnes?
- Identifiez le motif signalant l'absence d'un gène dans un OG.
- Pour chaque OG:
- Compter le nombre de gènes présents chez les Prochlorococcus.
- Compter le nombre de gènes absents chez les Synechococcus.
- Editer la ligne si elle remplit les conditions
MSK
awk 'BEGIN { h=0; } { mp=0 for (i=2; i<=13; i++) { if( $i !~ /-/ ) mp++ } sp=0 for (i=14; i<=17; i++) { if( $i !~ /-/ ) sp++ } if ( mp==12 && sp ==0 ) { h++; printf("%d\t%d", h, $1); for (i=2; i<=17; i++) { if( $i !~ /-/ ) printf("\t%s", $i); } printf("\n"); } }' < ~/work/ProchlorococcusSynechococcus/panoct/results/matchtable.txt > ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific.txt
Quelles-sont les fonctions des gènes retenus?
Prokka
rm ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt awk '{ system("grep "$3" ~/work/Prochlorococcus/prokka/Aaaa/Aaaa.gff >> ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt")}' < ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific.txt cat ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_annotations.txt
eggNOG
rm ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_eggNOG_annotations.txt awk '{ system("grep "$3" /home/formation/work/Prochlorococcus/eggNOG/Aaaa.emapper.annotations >> ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_eggNOG_annotations.txt")}' < ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific.txt cat ~/work/ProchlorococcusSynechococcus/Prochlorococcus_specific_eggNOG_annotations.txt
Gènes trouvés chez toutes les souches de Synechococcus mais dans aucune de Prochlorococcus:
MSK
Question 3.3: Analysez ces résultats et les confronter à ceux disponibles dans la littérature.
Vous pouvez vous inspirer des articles de Kettler et al. (2007), Garczarek et al. 2007, et Partensky and Garczarek (2010).
Comparaison des résultats de PanOCT avec et sans les génomes de Synechococcus
Ces pairs sont à extraire des fichiers:
- ~/work/Prochlorococcus/panoct/results/matchtable.txt
- ~/work/ProchlorococcusSynechococcus/panoct/results/matchtable.txt
A laide d'un script awk, pour les deux fichiers
- pour chaque OG,
- sélectionner les gènes de Prochlorococcus,
- les assembler par paires et les imprimer.
MSK
awk ' { col[""]=0; j=0; for (i=2; i<=13; i++) { if( $i !~ /-/ ) { j++; col[j]=$i; } } ncol=j; if ( ncol > 1 ) { #printf("%d\n", $1); for (k=1; k<=ncol-1; k++) { for (m=k+1; m<=ncol; m++) { printf("%s%s\n", col[k], col[m]); } } } delete col #printf("\n"); }' ~/work/Prochlorococcus/panoct/results/matchtable.txt > ~/work/ProchlorococcusSynechococcus/Ppairs.txt awk ' { col[""]=0; j=0; for (i=2; i<=13; i++) { if( $i !~ /-/ ) { j++; col[j]=$i; } } ncol=j; if ( ncol > 1 ) { #printf("%d\n", $1); for (k=1; k<=ncol-1; k++) { for (m=k+1; m<=ncol; m++) { printf("%s%s\n", col[k], col[m]); } } } delete col #printf("\n"); }' ~/work/ProchlorococcusSynechococcus//panoct/results/matchtable.txt > ~/work/ProchlorococcusSynechococcus/PSpairs.txt
La comparaison peut être réalisée graphiquement avec un digramme de Venn.
MSK
srun --pty bash module load system/R-3.5.1 R library('gplots') setwd('~/work/ProchlorococcusSynechococcus') pdf_file <- 'ProchlorococcusSynechococcus_Venn.pdf' Ppairs <- read.table('Ppairs.txt') PSpairs <- read.table('PSpairs.txt') input <- list(P=Ppairs, PS=PSpairs) pdf(file=pdf_file, paper="a4r") venn(input) dev.off() a<-venn(input, show.plot=FALSE) intersections <- attr(a,"intersections") intersections$P intersections$PS
Comparaison des résultats de PanOCT avec OrthoFinder
MSK
MSK