- Le blog participatif de bioinformatique francophone depuis 2012 -

Qu'est-ce qu'un site d'initiation de la transcription ?

Comment je me suis posé la question.

Chez les euca­ryotes, l'ADN est orga­ni­sé en domaines plus ou moins com­pac­tés, avec des taux de trans­crip­tion plus ou moins éle­vés, et qui sont mar­qués dif­fé­ren­tiel­le­ment par un cer­tain nombre de marques épi­gé­né­tiques (méthy­la­tion de l'ADN, modi­fi­ca­tions post-tra­duc­tion­nelles des his­tones, variants d'histones, etc.). Il est fré­quent d'essayer de cor­ré­ler le niveau d'expression des gènes avec la pré­sence ou l'absence d'une marque épi­gé­né­tique à proxi­mi­té des sites d’initiations de la trans­crip­tion (rac­cour­cis en TSS, pour trans­crip­tion start sites). Par exemple, pour reprendre la carte de cha­leur de la figure 1C de l'article pré­sen­tant la suite d'outils deepTools2 :

Exemple de pile de profil epigénétiques centrés sur les sites d'initiations de la transcription.
Figure 1C issue de l'article pré­sen­tant la suite d'outils deepTools2. Piles de pro­fils épi­gé­né­tiques H3K4me3, H3K27me3 et H3K36me3 (tri-méthy­la­tions des lysines 4, 27 et 36 des his­tones 3) cen­trés sur les TSS, répar­ti par clus­te­ring en un groupe actif et un groupe inac­tif.

Pour géné­rer ce type de figures, il est néces­saire d'être en pos­ses­sion d'une liste de sites d’initiation de la trans­crip­tion. Et donc, de se poser cette ques­tion fon­da­men­tale :

Qu'est-ce qu'un site d’initiation de la transcription ?

La défi­ni­tion est tri­viale : un site d'initiation de la trans­crip­tion désigne une posi­tion géno­mique où le pro­ces­sus de trans­crip­tion (syn­thèse d'un ARN depuis une matrice d'ADN) s'initie. En géné­ral, il est sur­tout fait réfé­rence aux sites d'initiations de la trans­crip­tion des gènes, et/​ou d'éléments trans­po­sables. Sou­vent l'ARN pro­duit est coif­fé au niveau de la base cor­res­pon­dante au site d'initiation de la trans­crip­tion. Il ne faut pas confondre le site d’initiation de la trans­crip­tion avec le site d'initiation de la tra­duc­tion : les deux étant sépa­rés sur les ARN mes­sa­gers par la région 5' non tra­duite (ou 5' untrans­la­ted region, 5'UTR).

Structure des gènes eukaryotes
Struc­ture des gènes euca­ryotes (tra­duit d'après une image Wiki­me­dia Com­mons CC BY 4.0). TSS : site d'initiation de la trans­crip­tion (Trans­crip­tion Start Site).

Petite sub­ti­li­té : si la pre­mière base trans­crite se désigne par le "+1" de trans­crip­tion, la base la pré­cé­dant sur le brin d'ADN est par conven­tion appe­lée le "-1" de trans­crip­tion, donc sans base "0" de trans­crip­tion.

Comment identifier les sites d'initiations de la transcription ?

Je connais prin­ci­pa­le­ment deux méthodes expé­ri­men­tales d'identification de ces sites. Sans ren­trer dans les détails :

  • la labo­rieuse méthode d'extension d'amorces, à faible débit.
  • la plus récente méthode CAGE, pour Cap Ana­ly­sis Gene Expres­sion, un acro­nyme dési­gnant un pro­ces­sus de cap­ture des extré­mi­tés coif­fées des ARN, sui­vi de leur séquen­çage haut débit. C'est cette méthode qui a été pri­vi­lé­giée par le for­mi­dable consor­tium Fantom5.

Les deux approches ont leurs limites. Outre la dif­fé­rence évi­dente de débit, citons le fort taux de décro­chage des trans­crip­tases inverses, fac­teur limi­tant de la méthode d'extension d'amorce, mais aus­si la com­plexi­té du pro­to­cole expé­ri­men­tal du CAGE, ain­si que son inca­pa­ci­té à détec­ter les sites d'initiations non coif­fés au niveau des ARNs.

Oui, ça OK, mais on la télécharge où la liste des TSS ?

Je recon­nais bien là votre prag­ma­tisme de bio­in­for­ma­ti­ciens. Pour nous, nul besoin de réflexions bio-phi­lo­so­phiques pous­sées : un gène, c'est ce qui est pré­sent dans notre fichier d'annotation des gènes, et cette approche nous convient la plu­part du temps ! Et les sites d'initiations de la trans­crip­tion se trouvent au début des gènes.

(Ouvrons une paren­thèse tout de même, pour rap­pe­ler qu'il est indis­pen­sable de bien connaître les limites actuelles de ces anno­ta­tions. Ain­si, si l'humain a envi­ron 20 000 ARN longs non-codants (lncR­NA) et l’opos­sum seule­ment 8 000, ce n'est sans doute pas que nos 12 000 lncR­NA de plus nous rendent supé­rieu­re­ment intel­li­gents, mais plu­tôt que de nom­breux lncR­NA ne sont pas encore iden­ti­fiés chez l'opossum !)

Pour les espèces sur les­quelles j'ai le plus tra­vaillé (humain, sou­ris), la source de réfé­rence des anno­ta­tions des gènes est l'organisation GENCODE, dont les anno­ta­tions sont uti­li­sées par Ensem­bl.

Mais, et c'est là où je vou­lais en venir en com­men­çant cet article : avec l'amélioration des anno­ta­tions, les modèles de gènes com­portent de plus en plus de trans­crits dif­fé­rents. Pre­nons par exemple le cas du gène BRCA1 (pour BReast CAn­cer 1, un gène connu pour son impli­ca­tion dans les can­cers du sein et de l'ovaire).

Où est le TSS de BRCA1 ?

Regar­dons à quoi res­semble les modèles de trans­crits du gène BRCA1 dans la ver­sion actuelle des anno­ta­tions Gen­code (la 27). C'est un gène situé sur le brin moins, son début est donc sur la droite, et il est trans­crit vers la gauche. D'après l'image Ensem­bl :

Vu Ensembl du gène BRCA1 dans le génome humain.
Vu Ensem­bl du gène BRCA1 dans le génome humain.

J'ai dénom­bré à l’œil 30 trans­crits dif­fé­rents, aux­quels cor­res­pondent 7 sites d'initiation de la trans­crip­tion dif­fé­rents !

Sites d'initiations de la transcription du gènes BRCA1, annotés à l'aide de gracieuses flèches oranges dedans et marron autour.
Les sept sites d'initiations de la trans­crip­tion du gène BRCA1, anno­tés à l'aide de gra­cieuses flèches orange dedans et mar­ron autour.

Une approche pos­sible pour­rait être de gar­der chaque site d'initiation de chaque trans­crit pour nos figures, mais cela abou­tit à une explo­sion du nombre de TSS : 200 401 dans la ver­sion 27 humaine de GENCODE ! Une autre approche serait de gar­der uni­que­ment les sites d'initiation uniques, soit envi­ron 7 pour BRCA1. Mais c'est alors faire peser autant un TSS uti­li­sé par des dizaines de modèles de trans­crits avec des TSS alter­na­tifs uti­li­sés par de rares trans­crits alter­na­tifs. L'approche favo­rite des bio­in­for­ma­ti­ciens est donc assez sou­vent de ne gar­der qu'un seul site d’initiation de la trans­crip­tion par gène.

Par faci­li­té, cer­tains s'en sortent en ne gar­dant que les lignes de type "gene" dans le fichier d'annotation GENCODE (pour plus de détails, voir par exemple cet article). Une ligne par gène, un seul TSS, pro­blème réso­lu !

Or la ligne gene de GENCODE part du nucléo­tide le plus en amont par­mi tous les trans­crit  jusqu'au nucléo­tide le plus en aval par­mi tout les trans­crits (pas néces­sai­re­ment dans le même trans­crit, d'ailleurs), ce qui nous fera un TSS de BRCA1 ici :

Position du TSS de BRCA1 d'après la ligne "gene" des annotation GENCODE.
Posi­tion du TSS de BRCA1 d'après la ligne "gene" des anno­ta­tions GENCODE.

Alors qu'intuitivement, en sui­vant une règle majo­ri­taire, j'aurais plu­tôt ten­dance à pri­vi­lé­gier ce site d'initiation là :

Le principal TSS de BRCA1, d'après votre serviteur.
Le prin­ci­pal TSS de BRCA1, d'après votre ser­vi­teur.

Uti­li­ser les lignes "gene" de fichier d'annotation GENCODE pour obte­nir une liste d'un unique site d'initiation de la trans­crip­tion par gène me semble donc assez mal­adroit pour un nombre impor­tant de gènes.

Pour ma part, je prends plu­tôt le site d'initiation médian de tout les trans­crits d'un gène, excluant ain­si les quelques trans­crits sus­pi­cieux com­men­çant soit très tôt, soit très tard. Dans les cas où il y a un nombre pair de trans­crit, je ne prends pas la moyenne des coor­don­nées des deux TSS du milieu, mais bien l'un des deux (en l’occurrence, le TSS du pre­mier des deux "trans­crits du milieu").

Voi­ci par exemple le petit script R que je me suis fait, qui part du fichier GFF3 four­nit par GENCODE (pour plus de détails, voir cet article), et retourne un fichier .bed d'un unique TSS par gène. Le script n'est pas des plus rapides mal­heu­reu­se­ment, mais je n'ai à le faire tour­ner qu'une seule fois par fichier d'annotation.

Si je ne veux que la posi­tion des TSS et pas le start et le end du trans­crit du milieu, je rajoute cette étape :

La fonc­tion est faci­le­ment adap­table lorsqu'on en sou­haite non pas le site d'initiation de la trans­crip­tion du milieu, mais le site de ter­mi­nai­son de la trans­crip­tion du milieu !

Après intense réflexion, au lieu de prendre le TSS médian, il pour­rait être judi­cieux de rete­nir le mode des TSS des trans­crits d'un gène ? Il faut cepen­dant une implé­men­ta­tion maline qui traite judi­cieu­se­ment les cas où il y a autant de TSS dif­fé­rents que de trans­crits…

Pour aller plus loin

Je vous ai donc pro­po­sé une méthode simple pour sélec­tion­ner un seul site d'initiation de la trans­crip­tion par gène. Il est fort pro­bable que pour un cer­tain nombre de gènes, le site d'initiation "majo­ri­taire" soit variable en fonc­tion du tis­su : tel TSS sera favo­ri­sé dans un type cel­lu­laire, mais un autre TSS le sera dans un autre tis­su. Une autre méthode, beau­coup plus lourde, mais plus maline, pour­rait donc consis­ter à iden­ti­fier le TSS majo­ri­taire de vos types cel­lu­laires d’intérêts d'après les don­nées CAGE du consor­tium Fantom5 (du moins, pour l'humain et la sou­ris).

Une des décou­vertes de ce consor­tium a d'ailleurs été que l'idée d'un site d'initiation de la trans­crip­tion bien défi­ni n'était sans doute pas valide pour tous les gènes. Les pro­mo­teurs riches en CpG auraient plu­tôt une "zone" dif­fuse d'initiation de la trans­crip­tion [1].

Enfin, si l'on s’embête tant avec ces his­toires de TSS unique par gène, c'est que bien sou­vent nous ne pos­sé­dons une mesure d'expression qu'au niveau du gène. Mais les pro­grès tech­niques et algo­rith­miques en RNA-seq font que la quan­ti­fi­ca­tion au niveau des trans­crits direc­te­ment est de plus en plus fiable [2]. Rai­son­ner avec des trans­crits per­met d'éviter tous ces détours métho­do­lo­giques à la recherche de la "bonne liste" des TSS.

Remerciements

Un grand mer­ci à mes relec­trices et relec­teurs : Clé­mence, Nisaea, Yoann M. et Gwe­naelle !

Références :

[1] A pro­mo­ter-level mam­ma­lian expres­sion atlas. FANTOM Consor­tium and the RIKEN PMI and CLST (DGT). DOI : 10.1038/nature13182

[2] Gene-level dif­fe­ren­tial ana­ly­sis at trans­cript-level reso­lu­tion. Lynn Yi, Harold Pimen­tel, Nico­las L. Bray, Lior Pach­ter. DOI : 10.1101/190199



Pour continuer la lecture :


Commentaires

2 réponses à “Qu'est-ce qu'un site d'initiation de la transcription ?”

  1. Yop !

    J'ajoute une petite infor­ma­tion com­plé­men­taire : Récem­ment chez E.coli les TSS ont pu être map­pés, et les résul­tats sont dis­po­nibles sur ce site : https://​science​.nichd​.nih​.gov/​c​o​n​f​l​u​e​n​c​e​/​d​i​s​p​l​a​y​/​s​e​g​r​/​G​e​n​o​m​e​+​B​r​o​w​ser

    Et l'article est dis­po­nible ici : https://​www​.ncbi​.nlm​.nih​.gov/​p​u​b​m​e​d​/​2​5​2​6​6​388

    Force & hon­neur \o

  2. Avatar de lelouar
    lelouar

    Salut,

    j'ai vou­lu essayer de faire une ver­sion avec data table. Le cal­cul prend en moins de 20 sec (18.6 sec pour lire le fichier GENCODE et 0.9 sec pour créer le fichier .bed):

    library(data.table)

    Lec­ture du fichier (en sup­pri­mant les lignes com­men­çant par #)

    gen­code <- fread("zcat ~/commun/ref/hg38/annotations/gencode.v27.annotation.gff3.gz | grep ‑v '^#'")

    fil­trer les lignes trans­cript

    gencode.transcript <- gencode[V3 == "trans­cript"]

    crée la colonne gene_​id column en uti­li­sant une expres­sion regu­lière

    gencode.transcript[, gene_​id := sub(".gene_​id=([^;]+).", "\1", V9)]

    Selec­tionne et renomme les colonnes d'interêt

    gencode.transcript <- gencode.transcript[, .(seq­names = V1, start = V4, end = V4, strand = V7, gene_​id)]

    On compte les posi­tions (start et end) par genes

    gencode.transcript.start <- gencode.transcript[, .N, by = .(seq­names, start, gene_​id)]
    gencode.transcript.end <- gencode.transcript[, .N, by = .(seq­names, end, gene_​id)]

    Fonc­tion qui sélec­tionne les start et end par gènes (tous les gènes d'un coup)

    get­MaxOr­Midd­le­Trans­cript <- function(DT, posi­tion){
    # Sélec­tion­ner la posi­tion avec le max de trans­cript et ordon­ner par posi­tion
    DT[, test := N == max(N), by = gene_​id]
    DT <- DT[test == T, ][order(seqnames, eval(parse(text = posi­tion)))]

    # Selec­tionne le trans­cript du milieu
    DT[, nb := .N, gene_​id]
    DT[, select := ceiling(nb/2)]
    DT[, count := 1:.N, gene_​id]
    DT[, test := select == count, gene_​id]
    DT <- DT[test == T, .(seq­names, eval(parse(text = posi­tion)), gene_​id)]
    setnames(DT, "V2", posi­tion)

    return(DT)
    }

    On lance la com­mande pour le start et le end

    gencode.transcript.start <- getMaxOrMiddleTranscript(gencode.transcript.start, "start")
    gencode.transcript.end <- getMaxOrMiddleTranscript(gencode.transcript.end, "end")

    On récu­père le strand des trans­cripts

    gencode.transcript.strand <- unique(gencode.transcript[,.(gene_id, strand)])

    On génère les clé pour fusion­ner les 3 tables

    setkey(gencode.transcript.start, gene_​id)
    setkey(gencode.transcript.end, gene_​id)
    setkey(gencode.transcript.strand, gene_​id)

    on fusionne les tables pour géné­rer le fichier bed

    mid­Trans­cript <- gencode.transcript.start[gencode.transcript.end][gencode.transcript.strand]

    fwrite(
    mid­Trans­cript[, .(seq­names, start, end, gene_​id, 0, strand)],
    file = "gencode.v27.annotation.middleTSStranscript.bed",
    quote = FALSE, col.names = FALSE, sep = "\t"
    )

    Voi­là.

    Qu'en pense tu ? Je me demande com­ment tu fait pour sélec­tion­ner le max d’occurrence dans ta fonc­tion.

    ++

Laisser un commentaire