Un abonnement à JoVE est nécessaire pour voir ce contenu. Connectez-vous ou commencez votre essai gratuit.
Method Article
Nous présentons un flux de travail flexible et extensible basé sur Jupyter-lab pour l’analyse non supervisée d’ensembles de données multi-omiques complexes qui combine différentes étapes de prétraitement, l’estimation du modèle d’analyse factorielle multi-omique et plusieurs analyses en aval.
Les mécanismes de la maladie sont généralement complexes et régis par l’interaction de plusieurs processus moléculaires distincts. Les ensembles de données complexes et multidimensionnels sont une ressource précieuse pour générer davantage d’informations sur ces processus, mais l’analyse de ces ensembles de données peut être difficile en raison de la grande dimensionnalité résultant, par exemple, de différentes conditions de maladie, de points temporels et de données omiques capturant le processus à différentes résolutions.
Ici, nous présentons une approche permettant d’analyser et d’explorer un ensemble de données multiomiques aussi complexe de manière non supervisée en appliquant l’analyse factorielle multi-omique (MOFA) à un ensemble de données généré à partir d’échantillons de sang qui capturent la réponse immunitaire dans les syndromes coronariens aigus et chroniques. L’ensemble de données se compose de plusieurs tests à différentes résolutions, y compris des données sur les cytokines au niveau de l’échantillon, la protéomique plasmatique et le premier-seq des neutrophiles, et les données de séquençage de l’ARN sur cellule unique (scRNA-seq). À cela s’ajoute la nécessité de mesurer plusieurs points temporels différents par patient et plusieurs sous-groupes de patients.
Le flux de travail d’analyse décrit comment intégrer et analyser les données en plusieurs étapes : (1) Prétraitement et harmonisation des données, (2) Estimation du modèle MOFA, (3) Analyse en aval. L’étape 1 décrit comment traiter les caractéristiques des différents types de données, filtrer les caractéristiques de faible qualité et les normaliser afin d’harmoniser leurs distributions pour une analyse plus approfondie. L’étape 2 montre comment appliquer le modèle MOFA et explorer les principales sources de variance au sein de l’ensemble de données pour toutes les caractéristiques omiques. L’étape 3 présente plusieurs stratégies pour l’analyse en aval des motifs capturés, en les reliant aux conditions de la maladie et aux processus moléculaires potentiels régissant ces conditions.
Dans l’ensemble, nous présentons un flux de travail pour l’exploration non supervisée de données multi-omiques complexes afin de permettre l’identification des principaux axes de variation composés de différentes caractéristiques moléculaires qui peuvent également être appliquées à d’autres contextes et ensembles de données multi-omiques (y compris d’autres tests présentés dans le cas d’utilisation exemplaire).
Les mécanismes de la maladie sont généralement complexes et régis par l’interaction de plusieurs processus moléculaires distincts. Déchiffrer les mécanismes moléculaires complexes qui conduisent à des maladies spécifiques ou régissent l’évolution d’une maladie est une tâche d’une grande pertinence médicale car elle pourrait révéler de nouvelles perspectives pour la compréhension et le traitement des maladies.
Les progrès technologiques récents permettent de mesurer ces processus à une résolution plus élevée (par exemple, au niveau de la cellule unique) et à diverses couches biologiques (par exemple, l’ADN, l’ARNm, l’accessibilité de la chromatine, la méthylation de l’ADN, la protéomique) en même temps. Cela conduit à la génération croissante de grands ensembles de données biologiques multidimensionnelles, qui peuvent être analysés conjointement pour générer plus d’informations sur les processus sous-jacents. Dans le même temps, la combinaison et l’analyse des différentes sources de données d’une manière biologiquement significative restent une tâche difficile1.
Les différentes limites technologiques, les bruits et les plages de variabilité entre les différentes chambres omiques posent un défi. Par exemple, les données de séquençage de l’ARN sur cellule unique (scRNA-seq) sont très rares et souvent influencées par des effets techniques ou de lots importants. De plus, l’espace des caractéristiques est souvent très grand, couvrant plusieurs milliers de gènes ou de protéines mesurés, tandis que la taille des échantillons est limitée. Cela est encore compliqué par des conceptions complexes, qui peuvent inclure plusieurs maladies, facteurs de confusion, points temporels et résolutions. Par exemple, dans le cas d’utilisation présenté, différents types de données étaient disponibles au niveau de la cellule unique ou de l’échantillon (en vrac). En outre, les données peuvent être incomplètes et toutes les mesures peuvent ne pas être disponibles pour tous les sujets analysés.
En raison de ces défis, les différentes omiques et les caractéristiques incluses sont encore souvent analysées uniquement séparément2, même si la réalisation d’une analyse intégrée peut non seulement fournir une image complète du processus, mais les bruits biologiques et techniques d’une omique peuvent également être compensés par d’autres omiques 3,4. Plusieurs méthodes différentes ont été proposées pour effectuer une analyse intégrée de données multi-omiques, notamment les méthodes bayésiennes, les méthodes basées sur le réseau 5,6, l’apprentissage profond multimodal7 et les méthodes de réduction de la dimensionnalité par factorisation matricielle 8,9. Pour ces derniers, les résultats d’une vaste étude comparative10 ont montré que la méthode MOFA9 (analyse multi-omique factorielle) est l’un des outils les mieux adaptés lorsque les données doivent être liées à des annotations cliniques.
En particulier dans les environnements complexes, les méthodes de factorisation matricielle non supervisée sont une approche utile pour réduire la complexité et extraire des signaux partagés et complémentaires à partir de différentes sources de données et fonctionnalités. En décomposant l’espace complexe en représentations latentes de rang inférieur, les principales sources de variance au sein des données peuvent être rapidement explorées et liées à des covariables connues. Dans le cas où le même modèle de variation est partagé entre plusieurs caractéristiques (par exemple, des gènes ou des protéines), cela peut être agrégé à quelques facteurs tout en réduisant le bruit. La régularisation peut être utilisée pour augmenter la rareté des coefficients du modèle, ce qui rend l’approche bien adaptée aux contextes où l’espace des caractéristiques est grand alors que le nombre d’échantillons est limitéà 9.
Ce protocole présente un flux d’analyse flexible qui utilise le modèle MOFA pour montrer comment explorer rapidement un ensemble de données multi-omiques complexe et distiller les principaux modèles de variation qui caractérisent cet ensemble de données. Le flux de travail se compose de trois étapes principales. Dans un premier temps, le prétraitement et l’harmonisation des données, différentes stratégies de prétraitement des données basées sur différents types de données d’entrée (scRNA-seq, protéomique, cytokine, données cliniques) sont présentées. Le protocole explique comment traiter les caractéristiques des différents ensembles de données d’entrée, filtrer les caractéristiques de faible qualité et les normaliser pour harmoniser leurs distributions. Nous montrons également comment ces décisions de prétraitement peuvent affecter les résultats en aval. Dans la deuxième étape, le modèle MOFA est appliqué aux données, et la décomposition de la variance résultante peut être utilisée pour évaluer l’intégration des différents ensembles de données. La troisième étape montre comment relier les facteurs capturés aux covariables et découvrir les programmes moléculaires qui définissent ces facteurs. Avec le flux de travail présenté, nous avons pu extraire plusieurs facteurs latents liés à des covariables cliniques dans un ensemble de données de patients souffrant de syndromes coronariens et identifier des programmes immunitaires multicellulaires sous-jacents potentiels d’un projet précédent11. Nous utiliserons cet ensemble de données ici, mais le protocole peut facilement être appliqué à d’autres contextes, y compris d’autres omiques.
L’ensemble de données se compose d’échantillons provenant de patients atteints de syndromes coronariens chroniques stables (SCC), de syndromes coronariens aigus (SCA) et d’un groupe témoin atteint de coronaires saines (non-SCC) (Figure 1). Le SCA est causé par une rupture de plaque dans un SCC préexistant, entraînant une perturbation aiguë du flux sanguin vers le myocarde et une lésion ischémique ultérieure du cœur. Cette lésion provoque une réponse inflammatoire du système immunitaire suivie d’une phase réparatrice, qui dure jusqu’à plusieurs jours après l’événement aigu12. Pour pouvoir caractériser cette réponse immunitaire chez les patients atteints de SCA, des échantillons de sang ont été prélevés à quatre moments différents : aiguë (TP1) ; après recanalisation (14 [± 8] h) (TP2) ; 60 [± 12] h plus tard (TP3) ; avant le congé (6,5 [±1,5] jours) (TP4) (figure 1A). Pour la SCC et les patients ayant des coronaires saines, un seul point temporel était disponible (TP0). Pour tous les patients et à tous les points temporels, différents dosages basés sur les échantillons de sang ont été mesurés : marqueurs cliniques de l’inflammation (créatine-kinase (CK), CK-MB, TROPONINE, PROTÉINE C-réactive (CRP)), scRNA-seq des cellules mononucléées du sang périphérique (PBMC), analyse des cytokines, protéomique plasmatique et données prime-seq13 des neutrophiles.
Figure 1 : Ensemble de données d’entrée multi-omiques sur l’infarctus du myocarde. Ensemble de données d’entrée : Les données analysées comprennent des échantillons de sang de patients (n = 62) atteints de syndrome coronarien aigu (SCA), de syndromes coronariens chroniques (SCC) et de patients atteints de coronaires saines (non-SCC). Pour les patients atteints de SCA, des échantillons de sang ont été inclus à quatre moments différents (TP1-4), pour les patients atteints de SCC et les patients non SCC à un seul point temporel (TP0). Chaque combinaison de patient et de point temporel est traitée comme un échantillon distinct dans l’analyse. Différents tests omiques ont été mesurés sur les échantillons : tests sanguins cliniques (n = 125), scRNA-seq (n = 121), plasma-protéomique (n = 119), test de cytokines (n = 127) et neutrophiles prime-seq (n = 121). Par la suite, le protocole décrit a été appliqué pour intégrer les données dans toutes les omiques et les explorer à l’aide du modèle MOFA et d’une analyse en aval plus poussée (analyse factorielle, enrichissement de la voie). Veuillez cliquer ici pour voir une version agrandie de cette figure.
En tant qu’entrée pour le flux de travail présenté ici, nous prenons des comptages bruts à partir des données scRNA-seq après traitement avec cellranger et le contrôle qualité (QC), comme indiqué, par exemple, dans le tutoriel de prétraitement scanpy14 . Pour l’annotation de type cellule, nous avons utilisé le pipeline automatisé Azimuth15 . Les nombres sont ensuite agrégés au niveau de l’échantillon pour chaque type de cellule en prenant la moyenne de toutes les cellules pour chaque échantillon et type de cellule (agrégation pseudo-en bloc). La protéomique plasmatique est incluse en tant qu’intensités normalisées et centrées sur la médiane, et pour les neutrophiles, nous prenons le nombre d’exons de l’identifiant moléculaire unique (UMI) de l’estimateur premier. Sur les cytokines et les valeurs cliniques, aucun prétraitement préalable n’a été appliqué. De plus amples détails sur la génération de données (expérimentales) sont décrits dans le manuscrit correspondant11. Comme les résultats présentés ici sont basés sur l’utilisation de l’annotation azimutale automatisée pour les types de cellules dans les données de séquençage de l’ARNc par rapport à la stratégie basée sur les marqueurs qui a été utilisée dans la publication référencée, les résultats présentés ici sont similaires mais pas exactement les mêmes que ceux présentés dans la publication. Dans le manuscrit, il a été démontré que la stratégie d’annotation de type cellulaire ne modifie pas les principaux modèles et interprétations biologiques de l’analyse, mais que de petits changements dans les valeurs exactes résultant du modèle peuvent varier. Dans l’ensemble, les données d’entrée étaient un ensemble de données multidimensionnelles complexe comprenant différents points temporels et niveaux de mesure (cellules uniques ou en vrac) de plus de 10 000 caractéristiques différentes (gènes, protéines, valeurs cliniques). Une stratégie stricte de prétraitement et d’harmonisation des données, suivie d’une analyse MOFA, s’est avérée être un outil utile et rapide pour explorer les données et extraire le programme immunitaire pertinent. Chaque combinaison de point temporel et de patient est traitée comme un échantillon indépendant dans l’analyse MOFA. Chaque type de données et type de cellule est considéré comme une vue distincte dans l’analyse MOFA.
Ce protocole fournit des instructions pour préparer les données d’entrée pour le flux de travail, exécuter les différentes étapes du flux de travail, personnaliser les configurations, interpréter les figures résultantes et ajuster de manière itérative les configurations en fonction des interprétations. Une vue d’ensemble des différentes étapes du protocole, des ensembles de données d’entrée requis à chaque étape, ainsi que des figures et des ensembles de données qui en résultent est donnée par la vue d’ensemble du flux de travail technique (Figure 2).
Figure 2 : Vue d’ensemble du flux de travail technique. Aperçu du flux de travail pour l’analyse de l’ensemble de données multi-omiques. Les différents éléments sont mis en valeur par des couleurs et des symboles différents. Les notebooks Jupyter appartenant à l’étape Prétraitement et harmonisation des données (1) sont colorés en bleu. Les carnets Jupyter appartenant à l’étape 'MOFA Model' (2) sont colorés en orange. Les notebooks Jupyter appartenant à l’étape 'Analyse aval' (3) sont colorés en vert. Un Jupyter Notebook à utiliser pour la comparaison des résultats est coloré en jaune. Les fichiers de configuration où les paramètres d’exécution du flux de travail peuvent être modifiés sont surlignés en violet. Les jeux de données d’entrée nécessaires à l’exécution du flux de travail sont indiqués par le symbole du jeu de données et mis en surbrillance en gris. Toutes les sorties de figures générées pendant l’exécution du flux de travail sont indiquées par le symbole de la loupe. Les jeux de données générés lors de l’exécution du workflow sont indiqués sous forme de tables. En général, le flux de travail est exécuté de manière séquentielle : (1) Le prétraitement et l’harmonisation des données se composent de deux étapes : la première génération d’une table pseudo-bulk basée sur les données d’entrée scRNA-seq (01_Prepare_Pseudobulk) et l’intégration et la normalisation ultérieures de ces données avec toutes les autres entrées au niveau de l’échantillon (en vrac) (02_Integrate_and_Normalize_Data). Dans le cadre de cette étape, via les fichiers de configuration, il est possible de configurer séparément pour chaque ensemble de données les étapes de prétraitement et de normalisation indiquées (par exemple, le filtre d’échantillonnage) à appliquer. (2) « Modèle MOFA » : exécute le modèle MOFA sur l’entrée générée de la première étape avec les configurations spécifiées dans le fichier de configuration (03_MOFA_configs.csv) (3) « Analyse en aval » : se compose de trois blocs-notes différents qui peuvent être exécutés indépendamment les uns des autres pour générer des informations sur les résultats MOFA générés et les associer à des exemples de métadonnées (covariables) fournies en entrée via le fichier « Exemple de méta-Data.csv ». (4) « Comparaison de modèles » : il s’agit d’une petite étape distincte qui peut être utilisée pour comparer différents modèles générés à l’étape 2. Veuillez cliquer ici pour voir une version agrandie de cette figure.
Le flux de travail se compose de plusieurs blocs-notes Jupyter écrits en R et Python (la connaissance des langages R et Python n’est pas requise pour exécuter le flux de travail, mais peut être utile en cas d’apparition d’erreurs). Dans les différentes étapes du protocole, les paramètres sont modifiés via des fichiers de configuration (fichiers '.csv' contenant le postfix '_Configs' dans le nom). Dans le protocole, nous ne décrivons que les paramètres qui doivent être modifiés à partir de la configuration par défaut.
Plusieurs autres paramètres peuvent également être modifiés, par exemple pour personnaliser le pré-traitement. Une documentation de ces paramètres et des explications est donnée dans le fichier 'Documentation_Config_Parameter', qui est inclus dans le référentiel téléchargé.
1. Préparatifs : Configuration technique et installation
REMARQUE : Pour exécuter ce programme, ayez wget, git et Apptainer préinstallés sur l’appareil. Un guide pour l’installation d’Apptainer sur différents systèmes (Linux, Windows, Mac) est donné ici : https://apptainer.org/docs/admin/main/installation.html. Les informations d’installation sur git peuvent être trouvées ici : https://git-scm.com/book/en/v2/Getting-Started-Installing-Git. En fonction de la taille des différents jeux de données d’entrée, il est recommandé d’exécuter le flux de travail sur une machine appropriée (16 CPU, 64 Go de mémoire). Un test de fumée avec les données d’exemple fournies peut être exécuté sur la machine locale. Les instructions et les résultats attendus de l’exécution du protocole sur les données d’exemple sont donnés dans le fichier supplémentaire 1. Reportez-vous au fichier vidéo supplémentaire 1 pour les étapes importantes du protocole qui sont exécutées sur l’ensemble de données décrit ci-dessus.
2. Initialisation et préparation des données
Figure 3 : Saisie et configuration des données. Pour l’exécution du flux de travail, toutes les données doivent être stockées dans un dossier input_data spécifié. Pour chaque jeu de données d’entrée, un fichier distinct doit être fourni. Les données à cellule unique doivent être fournies sous forme de .h5ad contenant l’annotation de cellule sur le cluster_id (résultant, par exemple, des étapes précédentes d’annotation de type de cellule) et une colonne sample_id (identifiant de manière unique chaque échantillon distinct qui doit être analysé). Tous les autres ensembles de données d’entrée doivent être présentés au format « .csv », y compris une colonne spécifiant les sample_id (correspondant à la colonne correspondante des données à cellule unique) et les caractéristiques à utiliser dans l’analyse MOFA dans toutes les autres colonnes. Veuillez cliquer ici pour voir une version agrandie de cette figure.
Figure 4 : Fichiers de configuration de Jupyter-lab. Lors de l’exécution du flux de travail, les modifications des paramètres (par exemple, l’ajustement des options de filtrage, etc.) sont spécifiées via des fichiers de configuration .csv. Dans le référentiel cloné, les fichiers de configuration par défaut pour chaque étape sont inclus. Ils peuvent être modifiés directement dans la console jupyter-lab, de la même manière que dans une feuille de calcul. Veuillez cliquer ici pour voir une version agrandie de cette figure.
Figure 5 : Scripts Jupyter-notebooks. Le flux de travail complet se compose d’une série de notebooks Jupyter qui seront exécutés séquentiellement une fois que les fichiers de configuration correspondants auront été modifiés. En double-cliquant sur le carnet Jupyter sur le côté gauche, le fichier correspondant s’ouvrira sur le côté droit. L’exécution complète du fichier peut être lancée à l’aide du bouton mis en évidence en haut. Veuillez cliquer ici pour voir une version agrandie de cette figure.
3. Prétraitement et harmonisation des données
Figure 6 : Prétraitement et harmonisation des données. L’une des sorties de l’étape '01_Prepare_Pseudobulk' est le tracé 'Fig01_Amount_of_Cells_Overview'. Ici, pour chaque cluster_id (axe des y indiquant le type de cellule des étapes d’annotation de type de cellule précédentes), le nombre de cellules par échantillon ('sample_id') est indiqué. Dans les résultats présentés, les types de cellules avec un faible nombre de cellules par échantillon sont exclus de l’analyse ultérieure (indiquée par le barré). Veuillez cliquer ici pour voir une version agrandie de cette figure.
4. Exécution de MOFA
5. Analyse en aval
6. Comparaison de différentes configurations et versions (figure supplémentaire 1, figure supplémentaire 2, figure supplémentaire 3, figure supplémentaire 4)
7. Extension du flux de travail : ajout d’autres paramètres et configurations
REMARQUE : Outre les paramètres actuellement configurables dans les fichiers de configuration, d’autres ajustements dans le code ou d’autres paramètres peuvent être inclus. Par exemple, le modèle MOFA lui-même offre plusieurs autres paramètres d’entraînement17 qui peuvent être soit modifiés directement dans le code, soit rendus ajustables via les fichiers de configuration. La section suivante du protocole présentera un exemple de la façon de procéder pour des paramètres d’entraînement de modèle MOFA supplémentaires. Pour cette partie, des connaissances en programmation R sont requises.
Après l’exécution réussie du flux de travail, plusieurs tableaux et figures sont générés, comme l’indique la figure 2. Les figures sont placées dans le dossier /figures (Figure 6, Figure 7, Figure 8, Figure supplémentaire 1, Figure supplémentaire 2, Figure supplémentaire 3, Figure ...
Avec le protocole décrit, un flux de travail modulaire et extensible basé sur un bloc-notes Jupyter qui peut être utilisé pour explorer rapidement un ensemble de données multi-omiques complexe est présenté. Les principales parties du flux de travail consistent en la partie prétraitement et harmonisation des données (offrant différentes étapes standard pour le filtrage et la normalisation des données), l’estimation du modèle MOFA9 et une analyse en a...
Les auteurs ne déclarent aucun conflit d’intérêts.
C.L. est soutenu par l’Association Helmholtz dans le cadre de l’école de recherche commune « Munich School for Data Science - MUDS ».
Name | Company | Catalog Number | Comments |
Apptainer | NA | NA | https://apptainer.org/docs/admin/main/installation.html |
Compute server or workstation or cloud (Linux, Mac or Windows environment). Depending on the size of the different input datasets we recommend running the workflow on a suitable machine (in our setting we use: 16 CPU, 64GB Memory) | Any manufacturer | 16 CPU, 64GB Memory | Large Memory is only required for the processing of the raw single cell data. After preprocessing the later analysis steps can also be performed on regular desktop or laptop computers |
git | NA | NA | https://git-scm.com/book/en/v2/Getting-Started-Installing-Git |
GitHub | GitHub | NA | https://github.com/heiniglab/mofa_workflow |
Demande d’autorisation pour utiliser le texte ou les figures de cet article JoVE
Demande d’autorisationThis article has been published
Video Coming Soon