Le format de fichier BAM n'est pas un format basé sur du texte. Il a une structure binaire spécifique, spécifiée de manière suffisamment détaillée dans la spécification du format de fichier SAM. Chaque fois que ces informations sont affichées sur un écran sous forme de texte, elles doivent être converties du format binaire en format texte, ce qui prend un peu de temps et de puissance de traitement.
Comme cette question le suggère, si seulement un un champ spécifique des alignements est nécessaire (ou des champs), alors il sera probablement préférable d'extraire uniquement ces champs et de faire toute conversion nécessaire uniquement sur ces champs. Bien que cela puisse être fait en écrivant un analyseur BAM à partir de zéro, de nombreux développeurs ont déjà écrit des bibliothèques de logiciels pour traiter les fichiers BAM de cette manière.
Devon Ryan a suggéré htslib, qui est une bibliothèque C écrite par un groupe qui inclut les personnes qui ont écrit les spécifications de format de fichier SAM / BAM / CRAM. Il y a aussi pysam, qui est un wrapper python autour de htslib.
L'outil particulier qui est utilisé dépendra de votre familiarité avec la programmation et de ce que vous voulez faire. Si vous voulez juste "sortir un fichier BAM", alors cat est le plus rapide:
cat file1.bam
... mais vous ne le faites probablement pas Je ne veux pas faire ça, car il semble que vous vouliez traiter une représentation textuelle avec un script. Parce que vous n'avez pas spécifié les champs qui vous intéressent, il n'est pas possible de suggérer la meilleure chose à utiliser. En fin de compte, j'espère qu'une solution «efficace» à votre problème impliquerait htslib
sous une forme ou une autre. Ce n'est pas vraiment du piratage de samtools , il utilise le backend de samtools pour traiter les données BAM.
Cependant, il est utile de penser également au coût en temps du codage. Quelle application avez-vous qui signifie que la méthode de traitement textuel n'est pas suffisante? Il faut du temps pour écrire du code et beaucoup plus de temps pour déboguer ce code pour s'assurer qu'il fait la bonne chose dans toutes les situations. Si c'est pour une chose ponctuelle, alors la sortie samtools view
introduite dans votre script peut être la solution la plus rapide.