# BED (format de fichier)

Le format BED (ou format Browser Extensible Data) est un format de fichier texte utilisé pour stocker des régions génomiques sous forme de coordonnées ainsi que les annotations associées. Les données se présentent sous forme de colonnes séparées par des espaces ou bien des tabulations. Ce format fut développé au cours du Projet Génome Humain puis adopté par d'autres projets de séquençage. De par cette utilisation de plus en plus large, ce format est devenu un standard de facto en bioinformatique sans pour autant recevoir de spécifications officielles.
L'un des avantages de ce format réside dans la manipulation de coordonnées en lieu et place de séquences nucléotidiques permettant une optimisation de la puissance et du temps de calculs lors de la comparaison tout ou partie de génomes. De plus, sa simplicité rend la manipulation et la lecture (ou parsing) des coordonnées ou des annotations aisée par l'utilisation d'outils de traitement de texte et de langages de script tels que Python, Ruby ou Perl ou par des outils plus spécialisés tel que BEDTools.

## Historique

La fin du XXe siècle vit l'émergence des premiers projets de séquençage de génomes complets. Parmi ces projets, le Projet Génome Humain fut alors le plus ambitieux visant à séquencer pour la première fois un génome de plusieurs gigabases. Ceci obligea les centres de séquençage à un important développement méthodologique afin d'automatiser le traitement des séquences et leurs analyses. Ainsi de nombreux formats furent créés tels que FASTQ, GFF ou encore BED. Cependant aucune spécification officielle ne fut éditée, ce dont certains formats telle que FASTQ souffrirent par la suite lors de la multiplication des projets de séquençage au début du XXIe siècle.
Sa large utilisation au sein de l'Explorateur de Génomes (Genome Browser) a permis de définir ce format de façon relativement stable, cette description étant reprise par de nombreux outils.

## Format

Le format BED ne possède aucune spécification officielle. Cependant, la description fournie par l'Explorateur de Génomes de l'UCSC est largement utilisée.

### Description

Un fichier BED est constitué d'un minimum de trois colonnes auxquelles peuvent être adjointes neuf colonnes facultatives pour un total de douze colonnes. Les trois premières colonnes contiennent les noms de chromosomes ou de scaffolds, les coordonnées de départ et de fin des séquences considérées. Les neuf colonnes suivantes contiennent des annotations relatives à ces séquences. Ces colonnes doivent être séparées par des espaces ou bien des tabulations, ces dernières étant préconisées pour des raisons de compatibilité entre programmes. Chaque ligne d'un fichier doit avoir le même nombre de colonnes. L'ordre des colonnes doit être respecté : si des colonnes ayant des numéros élevés sont utilisées, les colonnes de numéros intermédiaires doivent être remplies.
Colonnes composant un fichier BED (en rouge les colonnes obligatoires) :
| Numéro de colonne | Titre | Définition |
| 1 | chrom | Nom des chromosomes (ex. : chr3, chrY, chr2_random) ou des scaffolds (ex. : scaffold10671) |
| 2 | chromStart | Coordonnée de départ sur le chromosome ou le scaffold pour la séquence considérée (la première base sur le chromosome est numérotée 0) |
| 3 | chromEnd | Coordonnée de fin sur le chromosome ou le scaffold pour la séquence considérée. cette position est non-inclusive contrairement à chromStart ! |
| 4 | name | Nom de la ligne du fichier BED |
| 5 | score | Score compris entre 0 et 1000 |
| 6 | strand | Orientation du brin d'ADN (positif ("+") ou négatif ("-")) |
| 7 | thickStart | Coordonnée de départ à partir de laquelle l'annotation est affichée de façon plus épaisse sur une représentation graphique (ex. : le codon start d'un gène) |
| 8 | thickEnd | Coordonnées de fin à partir de laquelle l'annotation n'est plus affichée de façon plus épaisse sur une représentation graphique (ex. : le codon stop d'un gène) |
| 9 | itemRgb | Valeur RGB sous forme R,G,B (ex. : 255,0,0) déterminant la couleur d'affichage de l'annotation contenue dans le fichier BED |
| 10 | blockCount | Nombre de blocs (ex.: exons) sur la ligne du fichier BED |
| 11 | blockSizes | Liste de valeurs séparées par des virgules correspondant à la taille des blocs (le nombre de valeurs doit correspondre à celui du blockCount) |
| 12 | blockStarts | Liste de valeurs séparées par des virgules correspondant aux coordonnées de départ des blocs, coordonnées calculées relativement à celles présentes dans la colonne chromStart (le nombre de valeurs doit correspondre à celui du blockCount) |

### Entête

Un fichier BED peut contenir un entête de façon facultatif. Cependant il n'existe aucune description officielle du format de cet entête. Il peut contenir une ou plusieurs ligne et être signifié par des mots ou symboles différents, selon son rôle fonctionnel ou simplement descriptif. Ainsi, une ligne d'entête peut être introduite par :
* browser : entête fonctionnel utilisé par l'Explorateur de Génomes pour paramétrer des options relatives à ce dernier,
* track : entête fonctionnel utilisé par l'Explorateur de Génomes pour spécifier des options d'affichage relatives à ce dernier,
* # : entête descriptif permettant d'ajouter des commentaires tel que le nom de chaque colonne.

### Système de coordonnées

Contrairement aux systèmes de coordonnées employés par d'autres standards comme GFF, le système utilisé par le format BED est un système basé sur l'utilisation du 0. Ainsi, la base de coordonnées 1 sur un génome aura une valeur 0 dans la colonne 2 et une valeur 1 dans la colonne 3.
Ce choix se justifie par la méthode de calcul des longueurs des régions génomiques considérées, ce calcul reposant sur la simple soustraction des coordonnées de fin (colonne 3) par celles de début (colonne 2) : $x_{fin}-x_{origine}$. Lorsque le système de coordonnées est basé sur l'utilisation du 1 pour désigner la première position, le calcul devient légèrement plus complexe : $x_{fin}-x_{origine}+1$. Cette légère différence peut avoir une conséquence relativement importante en termes de temps de calcul lorsque des jeux de données comportant plusieurs milliers à centaines de milliers de lignes sont utilisés.

### Exemples types

Voici un exemple minimal :
Voici un exemple type à neuf colonnes issu de l'Explorateur de Génomes :

## Extension de fichier

Il n'existe pas à l'heure actuelle une extension de fichier standard pour les fichiers BED mais l'extension .bed est la plus fréquemment utilisée.

## Utilisation de fichiers BED

L'utilisation de fichiers BED s'est répandue rapidement avec l'émergence des nouvelles techniques de séquençage et la manipulation de fichiers de séquences de plus en plus volumineux. En effet, la comparaison de séquences génomiques voire de génomes entiers par la comparaison des séquences elles-mêmes peut rapidement demander d'importantes ressources de calculs et devenir chronophage. La manipulation de fichiers BED rend ce travail plus efficace en utilisant des coordonnées afin d'extraire des séquences d'intérêt de jeux de séquençage ou de comparer et manipuler directement deux jeux de coordonnées.
Pour réaliser ces tâches, divers programmes peuvent être utilisés pour manipuler des fichiers BED dont voici une liste non exhaustive :
* Explorateur de Génomes (ou Genome Browser) : permet la visualisation et l'extraction de séquences des génomes de mammifères actuellement séquencés à partir de fichier BED (fonction Manage Custom Tracks)
* Galaxy (bioinformatique) : plate-forme web
* BEDTools : programme permettant la manipulation de jeux de coordonnées et l'extraction de séquences à partir d'un fichier BED