9 de junio de 2026

Comprime y consulta ficheros FASTA con agc

Hola,  hoy voy a escribir sobre el software AGC (Assembled Genomes Compressor), escrito en C++, que sirve para comprimir ensamblajes genómicos en múltiples ficheros FASTA (un pangenoma) y luego extraer de manera eficiente secuencias de nucleótidos arbitrarias o contigs completos. El artículo que lo describe está en https://doi.org/10.1093/bioinformatics/btad097 y el código en https://github.com/refresh-bio/agc

AGC comprime los ensamblajes/ficheros FASTA en varias etapas usando por defecto k=31:

https://oup.silverchair-cdn.com/oup/backfile/Content_public/Journal/bioinformatics/39/3/10.1093_bioinformatics_btad097/1/btad097f1.jpeg?Expires=1784018113&Signature=faHcTkUzfen2x4RAym6qQBJR8hltOBWuNLO9nZdWcFKzmC55lqp3hZlDwKnl1jhtgeU~Ten3XhfNr2nFLCxkyTHZFWtOsFpQosCmweGm3q17qfWr9AL1qFoAygjLd3hcibLN4IvCDeWWkOlZg6yBqhyrLdw6mJmMTuV3AHVE5T08RfgXRu3vo2jMVsO4xl69oXz12~mv2m8N4u3b5S0p7UbjSlK68fdDZij-7FLzNspxMwIE6ozuXvgQqMfvWwrEIC-ZTrHTNXyQRK~q6Z1fbPLsz8mhIdyiLHSHkoDPNC3aXMwjx0Wuz4zsQuLn3yh~FEMf4Jgovubwr0BHnvbjtQ__&Key-Pair-Id=APKAIE5G5CRDK6RD3PGA
Principales etapas de la compresión: (a) selección de k-meros distribuidos de manera uniforme en genoma de referencia cada 60Kb, splitters;  (b)  compresión del genoma de referencia tras partirlo en grupos y segmentos; (c y d)  compresión del resto de genomas. Los segmentos flanqueados por los mismos splitters se comprimen juntos; los de referencia con zstd y los demás con LZSS para marcar las diferencias respecto al de referencia correspondiente para comprimir solamente esas partes con zstd. Figura tomada de https://doi.org/10.1093/bioinformatics/btad097

En nuestro caso, probamos AGC con 20 genomas de cebada del pangenoma V2, cada uno de unos 4GB, obteniendo una estructura de datos comprimida de 3.4GB con el siguiente comando:

$ agc create <ref.fa> <genoma2.fa> ... <genoma20.fa> assemblies.agc

# nota: se pueden añadir nuevos genomas más tarde con agc append 

Comprobamos el contenido del archivo comprimido:

$ agc listset assemblies.agc
Akashinriki
B1K-04-12
Barke
Chiba
Du_Li_Huang
GoldenPromise
HOR_10350
HOR_13821
HOR_13942
HOR_21599
HOR_3081
HOR_3365
HOR_7552
HOR_8148
HOR_9043
Hockett
Igri
MorexV3
OUN333
Planet

 

Finalmente, lo más interesante, podemos obtener secuencias de interés por medio de sus coordenadas:

$ agc getctg assemblies.agc chr1H@Barke:1-20 

>chr1H sampleName=Barke:1-20
ATGCTATTAGTCACTAATTT

Toda la documentación y más ejemplos están en https://github.com/refresh-bio/agc, que lo disfrutéis,

Bruno

No hay comentarios:

Publicar un comentario