Objectifs du cours¶
- Permettre de croiser des données génomiques de types différents
- Renforcer les notions vues précedemment
- Se familiariser avec
bedtools
Ce que ce cours n'est pas :
- Une réponse à une vraie question biologique
- Une méthode statistiquement valide
Croisement de données¶
Qu’est-ce c'est ?¶
- Une comparaison des positions ou intervalles génomiques:
- un variant par rapport à des gènes d’intérêt,
- des pics de ChIP-Seq par rapport à des gènes différentiellement exprimés, etc.
À quel moment est-ce valide ?¶
- Lorsque vous cherchez des co-occurrences
- Lorsque vous donnez des distributions (de distance)
À quel moment est-ce douteux ?¶
- Lorsque les résultats sont présentés comme significatifs.
Données disponibles¶
- Une liste de gènes différentiellement exprimés (Cellules avec un KO du gène beta-2-microglobulin, infectées par l'herpes simplex virus type 1 vs non infectées) (TXT)
- Une liste des sites de fixation de H3K4me3 déterminés par Chip-seq (BED)
- Une liste de variants (VCF)
- Un fichier d'annotation humain (GFF3)
- La liste des chromosomes humains et leur taille (LEN)
Avant de commencer¶
Vérifier que vous êtes dans votre espace projet, sous-dossier TP_croisement
# Afficher le chemin
pwd
/shared/ifbstor1/projects/2422_ebaii_n1/cours_commun/TP_croisement
Accès aux données du TP¶
- Rendez vous dans le dossier
data/
et listez en le contenu
# Se déplacer dans le dossier data
cd data
# Lister son contenu
ls
DEgenes.txt chrs.len hsGRCh38.genes.gff3 picChip.bed variant.vcf
Ce TP repose sur 4 jeux de données, issues d'analyses précédentes ainsi que sur les annotations du génome humain :
- la longueur des chrs (et des contigs) de la version GRCh27 du génome humain (
chrs.len
) - une liste de SNP variants (
variant.vcf
) - une liste des identifiants de gènes différentiellement exprimés (
DEgenes.txt
) - une liste des pics issus d'une analyse de ChIP-seq (
picChip.bed
), ici une marque d'histone h3k4me3 - les annotations correspondant aux gènes uniquement du génome humain GRCh38 (
hsGRCh38.genes.gff3
)
- Afin de se familiariser avec le contenu des données, on affiche les 2 premières lignes de l'ensemble des fichiers :
# Afficher les deux premières lignes de tous les fichiers
head -n 2 *
==> DEgenes.txt <== ENSG00000004846 ENSG00000005981 ==> chrs.len <== 1 248956422 10 133797422 ==> hsGRCh38.genes.gff3 <== 1 ensembl_havana gene 65419 71585 . + . ID=gene:ENSG00000186092;Name=OR4F5;biotype=protein_coding;description=olfactory receptor family 4 subfamily F member 5 [Source:HGNC Symbol%3BAcc:HGNC:14825];gene_id=ENSG00000186092;logic_name=ensembl_havana_gene;version=6 1 ensembl_havana gene 450703 451697 . - . ID=gene:ENSG00000284733;Name=OR4F29;biotype=protein_coding;description=olfactory receptor family 4 subfamily F member 29 [Source:HGNC Symbol%3BAcc:HGNC:31275];gene_id=ENSG00000284733;logic_name=ensembl_havana_gene;version=1 ==> picChip.bed <== 22 16192349 16192565 region_1 22 16846630 16870710 region_2 ==> variant.vcf <== ##fileformat=VCFv4.0 ##fileDate=20180418
- Pour le fichier variant.vcf on ne voit que des commentaires (souvent des lignes qui commencent par "#") ; afficher les deux dernières lignes de ce fichier :
# Afficher les deux dernières lignes du fichier variant.vcf
tail -n 2 variant.vcf
Y 26614668 rs376925794 TC T . . RS=376925794;RSPOS=26614671;dbSNPBuildID=138;SSR=0;SAO=0;VP=0x050000000005000002000200;WGT=1;VC=DIV;ASP;CAF=0.9968,0.003244;COMMON=1 Y 26624486 rs771929773 T TA . . RS=771929773;RSPOS=26624486;dbSNPBuildID=144;SSR=0;SAO=0;VP=0x050000000005040024000200;WGT=1;VC=DIV;ASP;VLD;KGPhase3;CAF=0.9968,0.003244;COMMON=1
- Activer les outils bedtools (v2.30.0) et bc (1.07.1) dont nous aurons besoin plus loin
# Charger les outils
module load bedtools/2.30.0 bc/1.07.1
Problème¶
Question scientifique¶
Mes gènes différentiellement exprimés contiennent-ils plus de pics de chip qu'attendu ? (oui/non, pas de quantification)
En d'autres termes, y a-t-il plus ou moins de pics de chip-seq dans les gènes différentiellement exprimés par rapport aux gènes non différentiellement exprimés ?
Données¶
- DEgenes.txt
- picChip.bed
- hsGRCh38.genes.gff3
Afficher les trois premières lignes des fichiers DEgenes.txt
, picChip.bed
et hsGRCh38.genes.gff3
:
# Trois premières lignes des fichiers listés
head -n 3 DEgenes.txt picChip.bed hsGRCh38.genes.gff3
==> DEgenes.txt <== ENSG00000004846 ENSG00000005981 ENSG00000006747 ==> picChip.bed <== 22 16192349 16192565 region_1 22 16846630 16870710 region_2 22 17067019 17067283 region_3 ==> hsGRCh38.genes.gff3 <== 1 ensembl_havana gene 65419 71585 . + . ID=gene:ENSG00000186092;Name=OR4F5;biotype=protein_coding;description=olfactory receptor family 4 subfamily F member 5 [Source:HGNC Symbol%3BAcc:HGNC:14825];gene_id=ENSG00000186092;logic_name=ensembl_havana_gene;version=6 1 ensembl_havana gene 450703 451697 . - . ID=gene:ENSG00000284733;Name=OR4F29;biotype=protein_coding;description=olfactory receptor family 4 subfamily F member 29 [Source:HGNC Symbol%3BAcc:HGNC:31275];gene_id=ENSG00000284733;logic_name=ensembl_havana_gene;version=1 1 ensembl_havana gene 685679 686673 . - . ID=gene:ENSG00000284662;Name=OR4F16;biotype=protein_coding;description=olfactory receptor family 4 subfamily F member 16 [Source:HGNC Symbol%3BAcc:HGNC:15079];gene_id=ENSG00000284662;logic_name=ensembl_havana_gene;version=1
DEgenes.txt
est notre liste de gènes DE :
picChip.bed
est notre liste de pics issus du chip-seq et positionnés sur le génome :
Pour croiser ces données il faut positionner les gènes DE sur le génome, on fait cela grâce au fichier d'annotation (gènes non DE plus clairs) :
Le positionnement des données sur le génome permet maintenant de les croiser :
Le but sera de compter le nombre gène dans chacune des 4 classes possibles :
Protocole envisagé¶
A. Extraire les intervalles génomiques des gènes différentiellement exprimés (DE)
B. Comparer les intervalles génomiques des gènes DE avec les régions H3K4me3 (ie. l'emplacement des pics de chip-seq)
C. Compter le nombre de chevauchements entre les gènes DE et les pics
D. Trouver les intervalles génomiques des gènes non-différentiellement exprimés
E. Comparer ces intervalles génomiques avec les régions H3K4me3
F. Compter le nombre de chevauchements entre les gènes non DE et les pics
G. Comparer les nombres de chevauchements
A. Extraire les intervalles génomiques des gènes différentiellement exprimés (DE)¶
- Chercher (
grep
) une liste de mots (-f
) contenue dans le fichierDEgenes.txt
dans le fichierhsGRCh38.genes.gff3
et rediriger la sortie standard dans un fichier nomméDEgenes.gff3
# Rechercher les gènes contenu dans le fichier txt dans le fichier gff3
grep -f DEgenes.txt hsGRCh38.genes.gff3 > DEgenes.gff3
On peut vérifier ensuite que le nombre de gènes récupérés dans le fichier gff3 est celui attendu (nombre de gènes de notre liste). Sachant qu'une ligne = un gène, quelles commandes pouvez vous exécuter ?
# Compter le nombre de ligne de chacun des fichiers
wc -l DEgenes.txt
wc -l DEgenes.gff3
wc -l hsGRCh38.genes.gff3
162 DEgenes.txt 162 DEgenes.gff3 21492 hsGRCh38.genes.gff3
Il est aussi possible de visualiser les 5 premières lignes de notre document nouvellement créé pour voir ce qu'il contient
# Afficher les 5 premières lignes du fichier
head -n 5 DEgenes.gff3
1 ensembl_havana gene 33081104 33120530 . + . ID=gene:ENSG00000142920;Name=AZIN2;biotype=protein_coding;description=antizyme inhibitor 2 [Source:HGNC Symbol%3BAcc:HGNC:29957];gene_id=ENSG00000142920;logic_name=ensembl_havana_gene;version=16 1 ensembl_havana gene 70852353 71047808 . - . ID=gene:ENSG00000050628;Name=PTGER3;biotype=protein_coding;description=prostaglandin E receptor 3 [Source:HGNC Symbol%3BAcc:HGNC:9595];gene_id=ENSG00000050628;logic_name=ensembl_havana_gene;version=20 1 ensembl_havana gene 74198235 74544393 . + . ID=gene:ENSG00000259030;Name=FPGT-TNNI3K;biotype=protein_coding;description=FPGT-TNNI3K readthrough [Source:HGNC Symbol%3BAcc:HGNC:42952];gene_id=ENSG00000259030;logic_name=ensembl_havana_gene;version=7 1 ensembl_havana gene 111722064 111755824 . - . ID=gene:ENSG00000284755;Name=AL049557.1;biotype=protein_coding;description=inka box actin regulator 2 [Source:NCBI gene%3BAcc:55924];gene_id=ENSG00000284755;logic_name=ensembl_havana_gene;version=1 1 ensembl_havana gene 147756199 147773362 . - . ID=gene:ENSG00000265107;Name=GJA5;biotype=protein_coding;description=gap junction protein alpha 5 [Source:HGNC Symbol%3BAcc:HGNC:4279];gene_id=ENSG00000265107;logic_name=ensembl_havana_gene;version=2
B. Comparer les intervalles génomiques des gènes DE avec les régions H3K4me3 (ie. l'emplacement des pics de chip-seq)¶
Comme on va utiliser la suite d'outils que propose Bedtools, avant tout, faisons un tour sur la documentation.
Chaque sous-commande fonctionne sur le même principe :
bedtools [sub-command] [options]
Les options varient selon la commande. Il suffit de cliquer sur son nom sur le site pour avoir accès à la fonction de la commande, à ses options et à des exemples.
Les trois qui nous intéresserons dans un premier temps sont intersect
, flank
et closest
(cliquez sur les sous-commandes pour voir leur aide)
Bedtools accepte quasiment tous les formats de fichiers tabulés (GFF3, BED, etc)
Dans notre cas de figure, nous souhaitons savoir si des gènes DE contiennent des pics et obtenir le nom de ces gènes. Nous utilisons donc la sous-commande "bedtools ....." ?
Le fichier A sera celui de l'annotation des gènes DE (DEgenes.gff3
) et le B correspondra aux pics (picChip.bed
). Quelle option choisir pour obtenir uniquement les annotations du fichier A qui croisent avec le fichier B ?
Rediriger la sortie standard dans un fichier nommé intersect_DEgenes_picChip.gff3
# Intersection du fichier A et du fichier B
bedtools intersect -a DEgenes.gff3 -b picChip.bed \
-wa -u > intersect_DEgenes_picChip.gff3
C. Compter le nombre de chevauchements entre les gènes DE et les pics¶
Nous avons obtenu la liste des gènes dans lesquels se trouvent des pics (intersect_DEgenes_picChip.gff3
). Nous avons maintenant besoin de les compter.
# Comptage des lignes
wc -l intersect_DEgenes_picChip.gff3
77 intersect_DEgenes_picChip.gff3
D. Trouver les intervalles génomiques des gènes non-différentiellement exprimés¶
grep -v
: Chercher l'inverse d'une liste de gènes dans un texte et rediriger la sortie standard dans un fichier nommé notDEgenes.gff3
On récupère donc tous les gènes du fichier d'annotation hsGRCh38.genes.gff3
dont le nom n'est pas dans la liste des gènes DE DEgenes.txt
puis on compte combien de gènes sont concernés.
# Recherche inversée du contenu du fichier dans le gff3
grep -v -f DEgenes.txt hsGRCh38.genes.gff3 > notDEgenes.gff3
# Comptage des lignes
wc -l notDEgenes.gff3
21330 notDEgenes.gff3
E. Comparer ces intervalles génomiques avec les régions H3K4me3¶
Faire l'intersection entre le fichier gff3 des gènes non DE et les pics de Chip-seq et écrire la sortie dans un fichier intersect_notDEgenes_picChip.gff3
# Nouvel intersect mais avec le fichier de gène non DE
bedtools intersect -a notDEgenes.gff3 -b picChip.bed \
-wa -u > intersect_notDEgenes_picChip.gff3
# Comptage des lignes
wc -l intersect_notDEgenes_picChip.gff3
9438 intersect_notDEgenes_picChip.gff3
F. Compter le nombre de chevauchements entre les gènes non DE et les pics¶
Afin de pouvoir ensuite faire des ratios "nb de gène avec au moins un chevauchements/nb de gène" nous devons connaitre les valeurs suivantes :
- Nombre de gènes DE
- Nombre de gènes DE avec chevauchement
- Nombre de gènes non DE
- Nombre de gènes non DE avec chevauchement
# Comptage des lignes de tous les fichiers
wc -l DEgenes.gff3
wc -l intersect_DEgenes_picChip.gff3
wc -l notDEgenes.gff3
wc -l intersect_notDEgenes_picChip.gff3
162 DEgenes.gff3 77 intersect_DEgenes_picChip.gff3 21330 notDEgenes.gff3 9438 intersect_notDEgenes_picChip.gff3
G. Comparer les nombres de chevauchements¶
Résumons nos informations :
Ratios | avec pics | sans pic | total |
---|---|---|---|
gene DE | 77 | 162-77 | 162 |
gene non DE | 9438 | 21330-9438 | 21330 |
total | 21492 |
Par simple calcul de pourcentage nous obtenons le tableau suivant :
Ratios | avec pics | sans pic | total |
---|---|---|---|
gene DE | 47.53% | 52.47% | 162 |
gene non DE | 44.24% | 55.76% | 21330 |
total | 21492 |
En conclusion : On peut noter une légère hausse du nombre de pics dans les gènes DE vs non DE.
/!\ En revanche on ne peut pas affirmer ou infirmer que cela soit significatif /!\
Bonus n°1¶
Question scientifique¶
Quels sont les variants qui sont dans les promoteurs (2kb en amont du gène) des gènes différentiellement exprimés ?
Données¶
- DEgenes.gff3 (généré précédemment)
- variant.vcf
- chrs.len
Afficher les deux dernières lignes des fichiers DEgenes.gff3
, variant.vcf
et chrs.len
:
# Visualisation de la fin des fichiers
tail -n2 DEgenes.gff3 variant.vcf chrs.len
==> DEgenes.gff3 <== 9 havana gene 133098121 133163914 . - . ID=gene:ENSG00000285245;Name=AL162417.1;biotype=protein_coding;description=novel protein;gene_id=ENSG00000285245;logic_name=havana;version=1 X ensembl_havana gene 71107404 71112108 . - . ID=gene:ENSG00000147168;Name=IL2RG;biotype=protein_coding;description=interleukin 2 receptor subunit gamma [Source:HGNC Symbol%3BAcc:HGNC:6010];gene_id=ENSG00000147168;logic_name=ensembl_havana_gene;version=12 ==> variant.vcf <== Y 26614668 rs376925794 TC T . . RS=376925794;RSPOS=26614671;dbSNPBuildID=138;SSR=0;SAO=0;VP=0x050000000005000002000200;WGT=1;VC=DIV;ASP;CAF=0.9968,0.003244;COMMON=1 Y 26624486 rs771929773 T TA . . RS=771929773;RSPOS=26624486;dbSNPBuildID=144;SSR=0;SAO=0;VP=0x050000000005040024000200;WGT=1;VC=DIV;ASP;VLD;KGPhase3;CAF=0.9968,0.003244;COMMON=1 ==> chrs.len <== KI270392.1 971 KI270394.1 970
Protocole envisagé¶
A. Extraire la région située à 2kb en amont des gènes différentiellement exprimés (DE)
B. Trouver tous les variants chevauchant les régions trouvées précedemment
Nous allons avoir besoin d'une autre sous-commande de bedtools : bedtools flank
Regardez bien ses options.
Notons qu'il y a une option obligatoire, -g
pour communiquer à l'outil la taille des chromosomes. Pourquoi ?
Lancer la commande et écrire la sortie standard dans un fichier flank2kDEgenes.gff3
# Recherche de régions flanquantes
bedtools flank -i DEgenes.gff3 -g chrs.len \
-l 2000 -r 0 -s > flank2kDEgenes.gff3
# Visualisation des trois premières lignes
head -n3 flank2kDEgenes.gff3
1 ensembl_havana gene 33079104 33081103 . + . ID=gene:ENSG00000142920;Name=AZIN2;biotype=protein_coding;description=antizyme inhibitor 2 [Source:HGNC Symbol%3BAcc:HGNC:29957];gene_id=ENSG00000142920;logic_name=ensembl_havana_gene;version=16 1 ensembl_havana gene 71047809 71049808 . - . ID=gene:ENSG00000050628;Name=PTGER3;biotype=protein_coding;description=prostaglandin E receptor 3 [Source:HGNC Symbol%3BAcc:HGNC:9595];gene_id=ENSG00000050628;logic_name=ensembl_havana_gene;version=20 1 ensembl_havana gene 74196235 74198234 . + . ID=gene:ENSG00000259030;Name=FPGT-TNNI3K;biotype=protein_coding;description=FPGT-TNNI3K readthrough [Source:HGNC Symbol%3BAcc:HGNC:42952];gene_id=ENSG00000259030;logic_name=ensembl_havana_gene;version=7
Maintenant, c'est du déjà-vu : Trouver tous les variants chevauchant les régions trouvées précedemment. Renvoyer la sortie standard dans un fichier nommé intersect_flank2kDEgenes_variant.txt
N'oubliez pas de regarder les options qui nous intéressent ici et visualisez les 5 premières lignes du fichier quand celui ci est généré
# Nouvelle intersection
bedtools intersect -a variant.vcf -b flank2kDEgenes.gff3 \
-wa -u > intersect_flank2kDEgenes_variant.txt
# Visualisation des 5 premières lignes
head -n 5 intersect_flank2kDEgenes_variant.txt
1 33079702 rs10712676 GA G . . RS=10712676;RSPOS=33079703;dbSNPBuildID=137;SSR=0;SAO=0;VP=0x0501000a0005170126000200;GENEINFO=AZIN2:113451|LOC105378635:105378635;WGT=1;VC=DIV;SLO;INT;R5;ASP;VLD;G5A;G5;GNO;KGPhase3;CAF=0.8706,0.1294;COMMON=1;TOPMED=0.96872610856269113,0.03127389143730886 1 74197393 rs201749320 TTC T . . RS=201749320;RSPOS=74197394;dbSNPBuildID=137;SSR=0;SAO=0;VP=0x0500000a000504003e000200;GENEINFO=LRRIQ3:127255|FPGT-TNNI3K:100526835|FPGT:8790;WGT=1;VC=DIV;INT;R5;ASP;VLD;KGPhase1;KGPhase3;CAF=0.9958,0.004193;COMMON=1;TOPMED=0.99698967889908256,0.00301032110091743 1 147773875 rs72546659 C CT . . RS=72546659;RSPOS=147773875;dbSNPBuildID=130;SSR=0;SAO=0;VP=0x0501100a000504003e000200;GENEINFO=GJA5:2702|LOC102723321:102723321;WGT=1;VC=DIV;TPA;SLO;INT;R5;ASP;VLD;KGPhase1;KGPhase3;CAF=0.9968,0.003195;COMMON=1;TOPMED=0.99143890163098878,0.00856109836901121 1 147775166 rs10641806 A AAT . . RS=10641806;RSPOS=147775166;dbSNPBuildID=135;SSR=0;SAO=0;VP=0x0500000a000515003e000200;GENEINFO=GJA5:2702|LOC102723321:102723321;WGT=1;VC=DIV;INT;R5;ASP;VLD;G5;KGPhase1;KGPhase3;CAF=0.05811,0.9419;COMMON=1 1 173918736 rs577103838 G GGAGGCA . . RS=577103838;RSPOS=173918736;dbSNPBuildID=142;SSR=0;SAO=0;VP=0x050000020005040026000200;GENEINFO=SERPINC1:462;WGT=1;VC=DIV;R5;ASP;VLD;KGPhase3;CAF=0.9988,0.001198;COMMON=1;TOPMED=0.99892488532110091,0.00107511467889908
Combien avons-nous de promoteurs contenant des variants ?
# Comptage des lignes
wc -l intersect_flank2kDEgenes_variant.txt
405 intersect_flank2kDEgenes_variant.txt
Pour aller plus loin avec bedtools intersect
, on peut se demander combien y a-t-il de SNP par promoteur ?
On utilise l'option -c
qui permet de compter le nombre de croisements et de le stocker dans un fichier (ici intersect_flanck2kDEgenes_n_variant.txt
). On visualise les 5 premières lignes.
# Nouvelle intersection avec comptage
bedtools intersect -a flank2kDEgenes.gff3 -b variant.vcf \
-c > intersect_flanck2kDEgenes_n_variant.txt
# Visualisation des 5 premières lignes
head -n 5 intersect_flanck2kDEgenes_n_variant.txt
1 ensembl_havana gene 33079104 33081103 . + . ID=gene:ENSG00000142920;Name=AZIN2;biotype=protein_coding;description=antizyme inhibitor 2 [Source:HGNC Symbol%3BAcc:HGNC:29957];gene_id=ENSG00000142920;logic_name=ensembl_havana_gene;version=16 1 1 ensembl_havana gene 71047809 71049808 . - . ID=gene:ENSG00000050628;Name=PTGER3;biotype=protein_coding;description=prostaglandin E receptor 3 [Source:HGNC Symbol%3BAcc:HGNC:9595];gene_id=ENSG00000050628;logic_name=ensembl_havana_gene;version=20 0 1 ensembl_havana gene 74196235 74198234 . + . ID=gene:ENSG00000259030;Name=FPGT-TNNI3K;biotype=protein_coding;description=FPGT-TNNI3K readthrough [Source:HGNC Symbol%3BAcc:HGNC:42952];gene_id=ENSG00000259030;logic_name=ensembl_havana_gene;version=7 1 1 ensembl_havana gene 111755825 111757824 . - . ID=gene:ENSG00000284755;Name=AL049557.1;biotype=protein_coding;description=inka box actin regulator 2 [Source:NCBI gene%3BAcc:55924];gene_id=ENSG00000284755;logic_name=ensembl_havana_gene;version=1 0 1 ensembl_havana gene 147773363 147775362 . - . ID=gene:ENSG00000265107;Name=GJA5;biotype=protein_coding;description=gap junction protein alpha 5 [Source:HGNC Symbol%3BAcc:HGNC:4279];gene_id=ENSG00000265107;logic_name=ensembl_havana_gene;version=2 2
Bonus n°2¶
Question scientifique¶
Quels sont les gènes différentiellement exprimés les plus proches des pics ChIP ET qui contiennent une mutation ?
Données¶
- DEgenes.gff3 (créé dans le problème 1)
- variant.vcf
- picChip.bed
Afficher les deux dernières lignes des fichiers DEgenes.gff3
, variant.vcf
et picChip.bed
:
# Visualisation des 2 dernières lignes
tail -n2 DEgenes.gff3 variant.vcf picChip.bed
==> DEgenes.gff3 <== 9 havana gene 133098121 133163914 . - . ID=gene:ENSG00000285245;Name=AL162417.1;biotype=protein_coding;description=novel protein;gene_id=ENSG00000285245;logic_name=havana;version=1 X ensembl_havana gene 71107404 71112108 . - . ID=gene:ENSG00000147168;Name=IL2RG;biotype=protein_coding;description=interleukin 2 receptor subunit gamma [Source:HGNC Symbol%3BAcc:HGNC:6010];gene_id=ENSG00000147168;logic_name=ensembl_havana_gene;version=12 ==> variant.vcf <== Y 26614668 rs376925794 TC T . . RS=376925794;RSPOS=26614671;dbSNPBuildID=138;SSR=0;SAO=0;VP=0x050000000005000002000200;WGT=1;VC=DIV;ASP;CAF=0.9968,0.003244;COMMON=1 Y 26624486 rs771929773 T TA . . RS=771929773;RSPOS=26624486;dbSNPBuildID=144;SSR=0;SAO=0;VP=0x050000000005040024000200;WGT=1;VC=DIV;ASP;VLD;KGPhase3;CAF=0.9968,0.003244;COMMON=1 ==> picChip.bed <== 18 78005736 78005857 region_52421 18 78016442 78016675 region_52422
Protocole envisagé¶
Trouver les pics qui contiennent une mutation
Trouver le gène le plus proche de chaque région précédemment trouvée
Trouver les pics qui contiennent une mutation¶
Rien de neuf sous le soleil, nous stockons l'output dans un fichier picVariant.bed
.
# Nouvelle intersection
bedtools intersect -a picChip.bed -b variant.vcf -u > picVariant.bed
## L'option -u permet de garder l'ensemble de l'information des pics
# sans ajouter celle des variants
# Visualisation des 5 premières lignes
head -n 5 picVariant.bed
22 16846630 16870710 region_2 22 17070620 17114004 region_4 22 17128021 17136091 region_5 22 17147545 17173488 region_6 22 17192673 17206732 region_7
Trouver le gène le plus proche de chaque région précédemment trouvée¶
Nous avons besoin d'une nouvelle sous-commande : bedtools closest
Attention, bien prendre note du message suivant :
Trions le fichier picVariant.bed
.
L'output est à stocker dans un fichier nommé picVariant_sorted.bed
# Tri selon les colonnes 1 et 2 (2 en ordre numérique)
sort -k1,1 -k2,2n picVariant.bed > picVariant_sorted.bed
Nous tentons un essai avec le paramètrage par défaut. Rediriger la sortie dans un fichier DEgenes_closest_picVariant.bed
# Recherche des gènes les plus proches des pics
bedtools closest -a picVariant_sorted.bed \
-b DEgenes.gff3 > DEgenes_closest_picVariant.bed
Combien avait-on de pic de Chip avec une mutation et combien obtient-on de gènes à proximité ?
# Comptage des lignes
wc -l picVariant_sorted.bed DEgenes_closest_picVariant.bed
28080 picVariant_sorted.bed 28088 DEgenes_closest_picVariant.bed 56168 total
On obtient 8 gènes de plus que notre nombre initial de pic. En regardant de plus près les 2 premières lignes, on voit que le premier pic est aux alentours des bases 713,000 alors que le gène est vers 3,000,000...
# Visualisation des deux premières lignes
head -n2 DEgenes_closest_picVariant.bed
1 713056 713670 region_8999 1 ensembl_havana gene 33081104 33120530 . + . ID=gene:ENSG00000142920;Name=AZIN2;biotype=protein_coding;description=antizyme inhibitor 2 [Source:HGNC Symbol%3BAcc:HGNC:29957];gene_id=ENSG00000142920;logic_name=ensembl_havana_gene;version=16 1 760194 766425 region_9005 1 ensembl_havana gene 33081104 33120530 . + . ID=gene:ENSG00000142920;Name=AZIN2;biotype=protein_coding;description=antizyme inhibitor 2 [Source:HGNC Symbol%3BAcc:HGNC:29957];gene_id=ENSG00000142920;logic_name=ensembl_havana_gene;version=16
La pertinence de l'impact d'une protéine fixée à l'ADN a plus de 3 millions de paire de base d'un gène se pose. Il serait plus pertinent de rechercher les pics situés à proximité immédiate des gènes DE (entre 2000 bases avant ou après un gène par exemple).
Quelle option peut-on utiliser pour obtenir l'information de la distance entre le pic et le gène ? Stockons l'information dans un fichier nommé DEgenes_closest_picVariant_distance.bed
# Recherche des gènes les plus proches
bedtools closest -a picVariant_sorted.bed \
-b DEgenes.gff3 -D b > DEgenes_closest_picVariant_distance.bed
L'utilisation de l'option -D b
permet de donner la distance par rapport aux gènes qui sont les seuls à avoir une information sur le brin (les pics étant non orientés).
Une valeur négative signifie que le pic est en amont du gène et en aval pour les valeurs positives.
A ce stade, nous avons l'information de la distance mais aucun filtre.
# Visualisation des deux premières lignes
head -n2 DEgenes_closest_picVariant_distance.bed
1 713056 713670 region_8999 1 ensembl_havana gene 33081104 33120530 . + . ID=gene:ENSG00000142920;Name=AZIN2;biotype=protein_coding;description=antizyme inhibitor 2 [Source:HGNC Symbol%3BAcc:HGNC:29957];gene_id=ENSG00000142920;logic_name=ensembl_havana_gene;version=16 -32367434 1 760194 766425 region_9005 1 ensembl_havana gene 33081104 33120530 . + . ID=gene:ENSG00000142920;Name=AZIN2;biotype=protein_coding;description=antizyme inhibitor 2 [Source:HGNC Symbol%3BAcc:HGNC:29957];gene_id=ENSG00000142920;logic_name=ensembl_havana_gene;version=16 -32314679
Il est alors possible de mettre une commande supplémentaire pour filter. On utilise le langage Awk
N.B. : Awk
est un langage à part entière, puissant mais qui peut être complexe de prime abord. Nous n'avons pas le temps de vous en expliquer toute la syntaxe mais de très bon site l'on fait, notamment ici et là.
# Recherche des gènes les plus proches et dans la zone définie entre [-2000; +2000]
bedtools closest -a picVariant_sorted.bed \
-b DEgenes.gff3 -D b | \
awk 'BEGIN{FS="\t"}{if($14>=-2000 && $14<=2000){print $0}}' \
> DEgenes_closest_picVariant_borne2000.bed
Rapide aperçu de la commande :
awk ''
: On définie que tout ce qui est entre guillements simples correspond à du langageawk
et non plus dubash
.BEGIN{FS="\t"}
: On définie le séparateur de nos colonnes, ici la tabulation"\t"
{if($14>=-2000 && $14<=2000){print $0}}
: Pour chaque ligne (donc chaque gène), on vérifie (if
) si la colonne 14 ($14
), qui contient la distance, a une valeur comprise entre -2000 ($14>=-2000
) et (&&
) +2000 ($14<=2000
) inclus. Si c'est le cas, on affiche (print
) la ligne entière ($0
).
Affichons maintenant les deux premières lignes :
# Afficher les deux premières lignes
head -n2 DEgenes_closest_picVariant_borne2000.bed
1 33112919 33119940 region_10192 1 ensembl_havana gene 33081104 33120530 . + . ID=gene:ENSG00000142920;Name=AZIN2;biotype=protein_coding;description=antizyme inhibitor 2 [Source:HGNC Symbol%3BAcc:HGNC:29957];gene_id=ENSG00000142920;logic_name=ensembl_havana_gene;version=16 0 1 70875092 70879897 region_11035 1 ensembl_havana gene 70852353 71047808 . - . ID=gene:ENSG00000050628;Name=PTGER3;biotype=protein_coding;description=prostaglandin E receptor 3 [Source:HGNC Symbol%3BAcc:HGNC:9595];gene_id=ENSG00000050628;logic_name=ensembl_havana_gene;version=20 0
On rapproche à nouveau ces données de la réalité biologique. Il est surement pertinent de ne regarder que les pics présents en amont des gènes DE. Pour cela, on change simplement les filtres sur la distance dans awk
.
A vous de jouer !
Rappel : Les bornes de la zone en amont se définissent ainsi [-2000;0[
On écrit dans un fichier DEgenes_closest_picVariant_amont_gene_DE.bed
# Recherche des gènes les plus proches et dans la zone définie entre [-2000; 0[
bedtools closest -a picVariant_sorted.bed \
-b DEgenes.gff3 -D b | \
awk 'BEGIN{FS="\t"}{if($14>=-2000 && $14<0){print $0}}' \
> DEgenes_closest_picVariant_amont_gene_DE.bed
Notre liste est devenu bien plus raisonnable, affichons entièrement ce fichier
# Affichage des fichiers
cat DEgenes_closest_picVariant_amont_gene_DE.bed
10 71202570 71212017 region_4870 10 ensembl_havana gene 71212570 71302864 . + . ID=gene:ENSG00000107731;Name=UNC5B;biotype=protein_coding;description=unc-5 netrin receptor B [Source:HGNC Symbol%3BAcc:HGNC:12568];gene_id=ENSG00000107731;logic_name=ensembl_havana_gene;version=12 -553 10 71210834 71211813 region_4871 10 ensembl_havana gene 71212570 71302864 . + . ID=gene:ENSG00000107731;Name=UNC5B;biotype=protein_coding;description=unc-5 netrin receptor B [Source:HGNC Symbol%3BAcc:HGNC:12568];gene_id=ENSG00000107731;logic_name=ensembl_havana_gene;version=12 -757 14 77500630 77515764 region_50749 14 ensembl_havana gene 77474394 77498850 . - . ID=gene:ENSG00000100593;Name=ISM2;biotype=protein_coding;description=isthmin 2 [Source:HGNC Symbol%3BAcc:HGNC:23176];gene_id=ENSG00000100593;logic_name=ensembl_havana_gene;version=17 -1781
Bonus n°3¶
Devine la commande¶
Ce dernier bonus est l'occasion de voir des commandes qui peuvent être utiles mais que nous n'avons pas pu aborder précédemment
Alternative à grep -v¶
Dans l'exercice, point D, on utilise grep -v
pour extraire les coordonnées génomiques des gènes non DE.
Il était aussi possible de le faire avec la commande intersect
.
Trouverez vous comment ?
Attention aux options !
L'option la plus importante pour cette question est donc l'option -v
.
Mais par défaut, intersect
valide une intersection dès qu'il y a une base en commun entre les 2 régions. Comme ci-dessous :
Dans ce cas d'usage où l'on traite des gènes en entier, il suffit que quelques gènes se chevauchent pour qu'ils soient exclus à tort. La façon correcte est donc de préciser que l'on veut valider les chevauchements que si les gènes se chevauchent à 100% entre eux. Les options pour spécifier un % de chevauchement (exprimés entre [0-1]
, 1 pour 100%) sont -F
pour le fichier A et -f
pour le fichier B. Il faut aussi que les 2 gènes soient sur le même brin (option -s
).
# Intersection inversée
bedtools intersect -a hsGRCh38.genes.gff3 -b DEgenes.gff3 \
-v -f 1 -F 1 -s -wa > notDEgenes.gff3
# Comptage des lignes
wc -l notDEgenes.gff3
21330 notDEgenes.gff3