Quienes conocen STAMP saben lo útil que es para analizar datos de microbioma y similares. Lamentablemente no es muy popular debido a que no es fácil preparar el input de datos. Acá escribiré mis consejos para preparar el input y para usar STAMP.
Requisitos
Debes tener un Excel con la tabla de abundancia y taxonomía exportada desde BIOM.
El archivo excel tendrá esta forma:
#OTU ID (tab) Sample1 (tab) Sample2 (tab) SampleN (tab) taxonomy
Ejemplo
#OTU ID (tab) Sample1 (tab) Sample2 (tab) taxonomy
OTU1 (tab) 80 (tab) 10 (tab) d__Bacteria; p__Actinobacteriota; c__Acidimicrobiia; o__IMCC26256; f__IMCC26256; g__IMCC26256; s__uncultured_Actinomycetales
OTU2 (tab) 10 (tab) 10 (tab) d__Archaea; p__Crenarchaeota; c__Nitrososphaeria; o__Nitrososphaerales; f__Nitrososphaeraceae; g__Candidatus_Nitrososphaera; s__unidentified_archaeon
La columna taxonomy debe tener siete niveles separados por punto y coma en este formato:
d__Bacteria; p__Actinobacteriota; c__Acidimicrobiia; o__IMCC26256; f__IMCC26256; g__IMCC26256; s__uncultured_Actinomycetales
o en este formato... da lo mismo (y todas las variaciones)
Bacteria;Actinobacteriota;Acidimicrobiia;IMCC26256;IMCC26256;IMCC26256;uncultured_Actinomycetales
Cosas que debes saber
Lo primero que debes saber es que STAMP necesitará un archivo en este formato:
Level_1 (tab) Level_2 (tab) ... (tab) Level_7 (tab) OTU_ID (tab) Sample1 (tab) Sample2 (tab) SampleN
o, puedes reemplazar el nombre de los niveles por lo que desees, por ejemplo:
Kingdom (tab) Phylum (tab) ... (tab) Specie (tab) OTU_ID (tab) Sample1 (tab) Sample2 (tab) SampleN
Ejemplo
Kingdom (tab) Phylum (tab) Class (tab) Order (tab) Family (tab) Genus (tab) Specie (tab) OTU_ID (tab) Sample1 (tab) Sample2
Bacteria (tab) Actinobacteriota (tab) Acidimicrobiia (tab) IMCC26256 (tab) IMCC26256 (tab) IMCC26256 (tab) uncultured_Actinomycetales (tab) OTU1 (tab) 80 (tab) 10
Archaea (tab) Crenarchaeota (tab) Nitrososphaeria (tab) Nitrososphaerales (tab) Nitrososphaeraceae (tab) Candidatus_Nitrososphaera (tab) unidentified_archaeon (tab) OTU2 (tab) 10 (tab) 20
Transforma tus datos del excel a este formato y luego sigue leyendo.
Lo segundo es que STAMP necesita que los nombres de cada nivel sean distinguibles unos de otros. Por ejemplo, si en nivel6 (genero) tienes la palabra uncultured y en otro nivel6 tienes tambien uncultured, STAMP quiere que ambos uncultured tengan la misma raiz taxonómica, es decir, que sus niveles superiores sean idénticos. Pero si el primer uncultured pertenece a Actinobacteria y el segundo pertenece a Acidobacteria, STAMP arrojará un error pues dos nombres de nivel6 apuntan a niveles de taxonomía diferentes. Esto es válido para cada nivel. Por ello, lo que debemos hacer es diferenciar los términos que sean iguales en un nivel pero que representen taxonomías diferentes. Por ejemplo, el primero lo llamaremos uncultured1 y el segundo uncultured2.
Lo tercero es que STAMP no espera "vacíos" en los niveles, es decir, aún cuando no conozcamos la taxa a un ciero nivel debemos colocar algo. Los vacíos pueden ser rellenados por ejemplo con la palabra unclassified excepto en el nivel de phylum donde debe ser Unassigned.
Dicho lo anterior, veamos cómo preparar el archivo.
Una vez transformada la hoja de Excel que tiene el formato BIOM a formato que pide STAMP hago lo siguiente:
1) Copio la palabra unclassified desde alguna celda (la idea es tenerla en el portapapeles)
2) Selecciono en excel todas las celdas vacias que estén en la zona de la taxonomía (Buscar y seleccionar -> Ir a Especial -> Celdas en blanco)
3) Pego la palabra unclassified (esto reemplazará los vacíos por la palabra unclassified)
Ahora exportamos la hoja de Excel a texto delimitado por tabulaciones... la llamaré mi_archivo.tsv
Lo que haremos ahora es lidiar con los duplicados para lo cual usaremos el script fix_spf.py el cual requiere Python3 (yo lo ejecuto con ayuda de un ambiente Anaconda con Python3.7). Lo lamento, en esto necesitarás ayuda de alguien con conocimientos de Linux.
fix_spf.py -i mi_archivo.tsv -o mi_archivo.spf
Listo, ahora podrás importar mi_archivo.spf en STAMP
Recomiendo además tener a la mano un archivo mapping que te permita clasificar las muestras en los grupos que corresponden.
El archivo mapping tiene este formato
#SampleID (tab) category1 (tab) category2 (tab) etc
Donde en category1 clasificas cada ID de tus muestras según una propiedad (ej. Control o Tratamiento) y en category2 los clasificas por otra propiedad (ej. Altura).
#SampleID (tab) Type (tab) Altitude
Sample1 (tab) treatment (tab) Low
Sample2 (tab) treatment (tab) Low
Sample3 (tab) control (tab) Low
Sample4 (tab) control (tab) High
ss