samtools

Fiche logiciel validé
  • Création ou MAJ importante : 20/01/12
  • Correction mineure : 06/11/13
Mots-clés

samtools : manipuler des alignements au format SAM/BAM (biologie)

Description
Fonctionnalités générales

Samtools est un ensemble de logiciels utilitaires qui permettent de manipuler des alignements au format SAM/BAM (décrit dans une fiche PLUME). Il peut importer et exporter les données depuis le format SAM (Sequence Alignment/Map) et permet de trier, mélanger, indexer, récupérer les lectures de n'importe quelle région rapidement.
Le format BAM est le résultat de la compression du format SAM (algorithme BGZF par Bob Handsaker) et constitue une version binarisée de SAM ce qui la rend plus rapide pour l'accès aux données.

Samtools est conçu pour fonctionner dans un flux (pipeline). On peut combiner de nombreuses commandes à l'aide du pipe '|' de Unix, en utilisant l'option '-' pour préciser l'utilisation de stdin ou de stdout, par exemple :

samtools merge - read1_genome.bam read2_genome.bam | /usr/local/samtools-0.1.8/samtools view -

Samtools donne toujours des messages d'alerte ou d'erreur sur la sortie d'erreur standard (stderr).

Samtools est aussi capable d'ouvrir un fichier BAM (mais pas un SAM) sur un dépôt distant (FTP ou HTTP) si le nom du fichier BAM commence par ‘ftp://’ ou ‘http://’. Samtools vérifie le fichier d'index dans le répertoire courant et le télécharge au besoin. Samtools ne retourne pas tout l'ensemble du fichier d'alignement à moins qu'on ne le lui ait demandé.

Autres fonctionnalités

Principales commandes (incomplet) :

  • samtools sort : trie les alignements (par les coordonnées de départ) d'un fichier BAM et produit un BAM trié. Opération requise pour certains programmes (par exemple le visualisateur IGV)
  • samtools index : produit un fichier d'index (.bai) à partir d'un fichier BAM trié (voir commande précédante)
  • samtools view : imprime dans la sortie standard les alignements (ou portions) demandés à partir d'un SAM ou d'un BAM
  • samtools merge : fusion de plusieurs BAM triés
  • samtools faidx : indexe la séquence de référence (.fasta) et créé un fichier d'index (.fai)
  • samtools pileup : imprime l'alignement au format pileup : les séquences sont imprimées en colonnes, chaque ligne correspondant à une position. Les informations telles que identité, insertion,délétion sont représentées aidant ainsi à trouver des SNP

Exemple d'application avec la conversion de SAM en BAM :

  • Produire le BAM avec la référence dans l'en-tête (ligne @SQ) :
    samtools view -bS aln.sam > aln.bam
  • Produire le BAM sans @SQ : fournir un fasta contenant les références (nommé ici ref.fa) :
    samtools faidx ref.fa
    samtools view -bt ref.fa.fai aln.sam > aln.bam
  • Une fois le fichier BAM produit, le trier et l'indexer ainsi :
    samtools sort aln.bam aln-sorted
    samtools index aln-sorted.bam
Interopérabilité

SAM BAM

Il existe des bibliothèques interfaçant directement samtools et permettant le traitement des fichiers sam/bam dans des scripts ou programmes en particulier en C++ (http://github.com/pezmaster31/bamtools), python ( http://code.google.com/p/pysam/), java (http://picard.sourceforge.net/index.shtml) ou perl (http://search.cpan.org/~lds/Bio-SamTools/).

Contexte d'utilisation dans mon laboratoire/service

Visualiser et manipuler des alignements réalisés par des logiciels produisant des SAM ou des BAM (BWA par exemple).
En cours d'intégration dans des pipelines d'analyse de la plateforme bioinformatique de Toulouse.

Limitations, difficultés, fonctionnalités importantes non couvertes

Bien faire attention au format de stockage des qualités, le format SAM étant défini en Phred+33 mais est suffisamment étendu pour contenir des qualités en Phred+64 ! Certains programmes comme BWA peuvent travailler aussi bien en Phred+33 que Phred+64 mais d'autres sont plus restreints (fastx toolkit).

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Utilisation de la version 0.1.7 de Samtools dans la version 1.7+ de CASAVA (outils d'analyse de NGS illumina)

Plates-formes

Linux

Logiciels connexes

BWA - aligneur produisant des fichiers SAM
Une liste des logiciels utilisant le format SAM : http://seqanswers.com/wiki/SAM et BAM : http://seqanswers.com/wiki/BAM
Visualisateurs d'alignement (tablet, IGV ... )

Les alignements (au format BAM) peuvent être visualisés en utilisant le GBrowse (Generic Genome Browser) http://gmod.org/wiki/GBrowse_NGS_Tutorial.

Autres logiciels aux fonctionnalités équivalentes

Picard - http://picard.sourceforge.net/ - est complémentaires des SAMtools, il permet de trier, d'indexer et de mélanger le contenu de fichiers SAM, permet aussi de faire d'autres manipulations sur le même type de données.

Environnement de développement
Type de structure associée au développement

Voir la section "Author" dans ce lien.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Support et listes de diffusion : http://sourceforge.net/projects/samtools/support
Forum : seqanswers.com

Documentation utilisateur
Divers (astuces, actualités, sécurité)

Visualiser les fichiers d'alignement avec Tablet apporte un confort visuel.
Tutoriel de recherche de variations.

Contributions

Toutes les bonnes volontés sont bienvenues sur http://samtools.sourceforge.net/opentask.shtml