[PYTHON] Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches

Objectif

À partir des résultats de l'analyse de la flore ARNr 16S utilisant Qiime2, nous allons introduire une méthode pour visualiser la distribution du taux de composition de bactéries spécifiques. Dans la section précédente, nous avons comparé la flore intestinale du groupe CD (maladie de Clone), du groupe UC (colite ulcéreuse) et du groupe non IBD (maladie intestinale non inflammatoire). Je vais vous présenter comment le représenter avec un diagramme de barbe. En référence à cet article, vous pourrez créer les moustaches de boîte suivantes.

visualization-3.png

environnement

paquet

Cette fois, j'utiliserai Altair qui peut créer divers graphiques en entrant Python DataFrame. Des dessins autres que les moustaches de boîte sont également présentés à ici.

À propos des données

Pour créer un diagramme de moustaches de boîte, vous avez besoin de données de comptage qui récapitulent le nombre de lectures bactériennes pour chaque échantillon et de métadonnées d'échantillon. Pour plus de détails, reportez-vous à la section précédente.

Acquisition des données de comptage

Table.qza '' et taxonomy.qza '' sont nécessaires pour obtenir les données de comptage. Pour savoir comment créer chaque fichier, consultez ici. Dans cet article, puisque nous utilisons les données de nombre de niveaux de phylum, exécutez la commande suivante, en faisant attention à `` --p-level 2 ''.

Terminal (dans l'environnement virtuel Qiime2)


qiime taxa collapse   --i-table table.qza   --i-taxonomy taxonomy.qza   --p-level 2   --o-collapsed-table L2_table.qza

qiime tools export  --input-path L2_table.qza   --output-path L2

biom convert  -i L2/feature-table.biom  -o L2/table.tsv  --to-tsv

Si vous obtenez le fichier suivant, vous réussissez.

スクリーンショット 2020-10-31 14.20.16.png

Obtenir des métadonnées

Créez les métadonnées suivantes au format tsv.

スクリーンショット 2020-10-31 14.25.20.png

Exécutez Altair

Vous pouvez obtenir une boîte de moustaches en exécutant la commande suivante.

alt_comp_plot.py


import os
import altair as alt
import pandas as pd

#Désignation de la classe de classification. Le phylum est de niveau 2.
l_select = 'L2' 

#Obtenir le répertoire actuel
cwd = os.getcwd()

#Acquisition des données de comptage
count_path = [l_select,'table.tsv'] 
count_file = os.path.join(cwd, *count_path)
count = pd.read_table(count_file, sep='\t', index_col=0 ,header=1).T # header=Note 1

#Convertir en données de composition
comp = count.apply(lambda x: x/sum(x), axis=1)

#Obtenir des métadonnées
md_path = ['metadata.tsv']
md_file = os.path.join(cwd, *md_path)
md = pd.read_table(md_file, sep='\t', index_col=0 ,header=0)

#Convertir le nom de la ligne en type str (Ce nom de ligne est un nombre, il a donc été traité par le type int)
comp.index = comp.index.astype(str)
md.index = md.index.astype(str)

#Combinez les données de comptage et les métadonnées. (Si le nom de la ligne n'est pas de type str, il ne sera pas combiné)
df = pd.concat([comp,md], axis=1)

#Cette fois, j'examinerai la flore de l'iléon (circonflexe) et du rectum (rectal). (Parce que le nombre d'échantillons était petit dans d'autres parties)
df = df[df['biopsy_location'].isin(['Ileum','Rectum'])]

#Exécutez Altair
boxplot = alt.Chart(df).mark_boxplot(size=100,ticks=alt.MarkConfig(width=30), median=alt.MarkConfig(color='black',size=100)).encode(
	    alt.X('diagnosis',sort = alt.Sort(['CD','UC','nonIBD']), axis=alt.Axis(labelFontSize=15, ticks=True, titleFontSize=18, title='Diagnosis')),
	    alt.Y('D_0__Bacteria;D_1__Firmicutes', axis=alt.Axis(format='%', labelFontSize=15, ticks=True, titleFontSize=18, grid=False,domain=True, title='Firmicutes'), scale=alt.Scale(domain=[0,0.02])),
	    alt.Color('diagnosis'),
	    alt.Column('biopsy_location', header=alt.Header(labelFontSize=15, titleFontSize=18), sort = alt.Sort(['Ileum','Rectum']), title='Biopsy')
	).properties(
		width=600,
		height=500,
	)

#Affichage de la figure
boxplot.show()

À propos d'Altair

Une brève introduction aux commandes d'Altair.

Enregistrer la figure

Vous pouvez enregistrer la figure au format png ou svg à partir de "..." en haut à droite.

スクリーンショット 2020-10-31 16.39.36.png

Recommended Posts

Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Comment déterminer l'existence d'un élément sélénium en Python
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Comment créer une grande quantité de données de test dans MySQL? ??
Comment prendre une capture d'écran de l'écran Chrome (l'empêcher de se couper au milieu)
Comment envoyer une image visualisée des données créées en Python à Typetalk
Comment calculer la volatilité d'une marque
Environnement enregistré pour l'analyse des données avec Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment mentionner un groupe d'utilisateurs avec une notification de mou, comment vérifier l'ID d'un groupe d'utilisateurs
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
La première étape de l'analyse du journal (comment formater et mettre les données du journal dans Pandas)
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment obtenir le nombre de chiffres en Python
Étapes pour calculer la probabilité d'une distribution normale
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment créer un ensemble de données d'image de visage utilisé dans l'apprentissage automatique (2: Analyse d'image de la vidéo pour obtenir des images candidates)
[Ubuntu] Comment supprimer tout le contenu du répertoire
Comment trouver le nombre optimal de clusters pour les k-moyennes
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
Comment afficher le maillage régional du Government Statistics Office (eStat) dans un navigateur Web
Comment utiliser la méthode __call__ dans la classe Python
Comment créer une instance d'une classe particulière à partir de dict en utilisant __new__ () en python
Comment calculer la quantité de calcul appris de ABC134-D
Comment se connecter automatiquement comme 1Password depuis CLI
Comment développer dans un environnement virtuel Python [Memo]
Comment générer une requête à l'aide de l'opérateur IN dans Django
Comment calculer la somme ou la moyenne des données csv de séries chronologiques en un instant
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Lors de la résolution de l'exercice d'introduction aux statistiques 12.10, vérifiez comment dessiner un diagramme de dispersion dans les pandas.
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Comment obtenir uniquement les données nécessaires du groupe de données structurées à l'aide d'une méthode polyvalente
Comment obtenir un aperçu de vos données dans Pandas
Comment obtenir une liste de liens à partir d'une page de wikipedia
Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python (version non bloquante)
Comment connecter le contenu de la liste dans une chaîne de caractères
[Voir dans l'image] Comment un débutant kaggle peut passer de "novice" à "contributeur" en 10 minutes.
[PyQt x pySerial] Afficher une liste des ports COM connectés au PC dans la liste déroulante
Porté du langage R de "Sazae-san's Janken Data Analysis" vers Python
Comment implémenter du code Java en arrière-plan de Red Hat (Linux ONE)
Une analyse simple des données de Bitcoin fournie par CoinMetrics en Python
Comment connaître la structure interne d'un objet en Python
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
Comment changer la couleur du seul bouton pressé avec Tkinter
[Connu de façon inattendue? ] Présentation d'une vraie journée dans le département d'analyse des données
Comment obtenir une chaîne à partir d'un argument de ligne de commande en python
Comment éviter la duplication des données lors de la saisie de Python vers SQLite.
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
[TensorFlow 2] Comment vérifier le contenu de Tensor en mode graphique
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique