Single-cell Trajectory analysis using Monocle3 and Seurat | Step-by-step tutorial

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 มิ.ย. 2024
  • A detailed walk-though of steps to perform trajectory analysis using Monocle3 + Seurat for single-cell RNA-Seq data. In this video I cover various aspects of trajectory analysis including what is trajectory analysis, when to perform this analysis, which trajectory inference method to choose and how to perform trajectory analysis. In addition, I go over workflow steps and talk about cell data set object which monocle3 requires and finally demonstrate this workflow step-by-step in R.
    I hope you find the video informative. I look forward to your comments in the comments section!
    Link to code:
    github.com/kpatel427/TH-camT...
    Data:
    scrna.sklehabc.com/
    Alternate Data Link:
    drive.google.com/file/d/1CJ9V...
    Publication associated with the data:
    academic.oup.com/nsr/article/...
    Monocle3 tutorial:
    cole-trapnell-lab.github.io/m...
    R package collection for Trajectory Inference:
    dynverse.org/
    Publication comparing various Trajectory Inference methods:
    www.biorxiv.org/content/10.11...
    Chapters:
    0:00 Intro
    0:52 WHAT is Trajectory analysis?
    2:11 What is pseudotime?
    2:43 WHEN to perform trajectory analysis?
    3:57 WHICH trajectory inference method to choose?
    5:52 HOW to perform trajectory analysis? - Workflow steps
    7:04 cell_data_set class
    8:29 Data for demo
    9:20 Fetching the data
    9:47 Load libraries and read data in R
    12:39 Create Seurat object
    16:39 Subset Seurat object to only retain B cells
    19:53 Processing steps in Seurat (NormalizeData, ScaleData, RunPCA, RunUMAP and FindClusters)
    25:25 Convert Seurat object to object of cell_data_set class
    26:06 Retrieving data from cds object
    28:11 Transfer clustering information from Seurat object to cds object
    33:37 Visualize clustering using monocle3: plot_cells()
    36:44 Learn trajectory graph: learn_graph()
    39:06 Order cells in pseudotime: order_cells()
    41:00 Plotting pseudotime for cell types in ggplot2
    43:43 Find genes that change expression along a trajectory: graph_test()
    47:03 Visualizing pseudotime in Seurat's FeaturePlot()
    Show your support and encouragement by buying me a coffee:
    www.buymeacoffee.com/bioinfor...
    To get in touch:
    Website: bioinformagician.org/
    Github: github.com/kpatel427
    Email: khushbu_p@hotmail.com
    #bioinformagician #bioinformatics #monocle3 #monocle #trajectoryinference #trajectory #singlecell #deg #seurat #integration#R #genomics #beginners #tutorial #howto ##research #omics #biology #ncbi #rnaseq #ngs

ความคิดเห็น • 81

  • @adhirajnath5432
    @adhirajnath5432 ปีที่แล้ว +4

    This channel will be a respectable resource in our bioinformatics community

  • @christinaz3573
    @christinaz3573 หลายเดือนก่อน

    Honestly, this was so precisely what I needed in a previously very frustrating situation. The way you manage to explain the background of what you are doing connected to how it is done is absolutely awesome. Thank you so so much!

  • @beyzaozdemir394
    @beyzaozdemir394 ปีที่แล้ว +6

    You are making my learning journey much more easier for an intermediate use and making follow vignettes a breeze! Glad to have found your SEURAT videos!

  • @zlj8435
    @zlj8435 ปีที่แล้ว +4

    Thanks a lot! The class is easy to follow with the github code and great to know how to do that and why we need to do that. Really appreciate it!!

  • @caiquecosta9192
    @caiquecosta9192 หลายเดือนก่อน

    Excellent tutorial 👏

  • @junorzhu4313
    @junorzhu4313 ปีที่แล้ว

    very detailed tutorial, I found that myself more susceptible to your pattern compaired to others

  • @tautarius
    @tautarius ปีที่แล้ว +2

    thanks for making these awesome videos. I really appreciate it !!!

  • @waynejanuzaj9679
    @waynejanuzaj9679 ปีที่แล้ว +5

    Your tutorials have been very timely, informative and helpful. We will appreciate it if you could also make a tutorial on SCENIC. Thank you so much!

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว +1

      Will surely consider making a video on it! Thanks for the suggestion :)

  • @babil1908
    @babil1908 ปีที่แล้ว

    I am learning so much from you, thank you so much!

  • @Aquaria-
    @Aquaria- 27 วันที่ผ่านมา

    Thank you so much! Really helpful for me to convert Seurat object for Monocle3

  • @yairprawer4405
    @yairprawer4405 ปีที่แล้ว

    so helpful!! saved me hours of of reading error messages

  • @5602KK
    @5602KK 9 หลายเดือนก่อน

    EXCELLENT video thank you very much. Excellent clear explanations accompanied with great demonstrations & slides I really mean that

  • @navyanandhanaofficial
    @navyanandhanaofficial ปีที่แล้ว

    Very nice Presentation! I liked it... Appreciate you!

  • @melinabordone8243
    @melinabordone8243 ปีที่แล้ว

    First, thank you a lot. Your tutorial videos on scRNAseq analysis are a treasure! I would like to know if you already have a video on differential cell-type composition analysis or if you are planning to record one. Thank you so much!

  • @savitajayaramph.d.2638
    @savitajayaramph.d.2638 ปีที่แล้ว

    Thanks so much. Very informative videos!

  • @jintaoxu6393
    @jintaoxu6393 ปีที่แล้ว +3

    This playlist is so helpful. Would it be possible to have a Step-by-step tutorial for cell-cell interaction?

  • @abdullahaltulea142
    @abdullahaltulea142 ปีที่แล้ว

    Excellent! Thank you very much

  • @Pato-py7wt
    @Pato-py7wt ปีที่แล้ว

    Amazing clear helpful video

  • @tushardhyani3931
    @tushardhyani3931 ปีที่แล้ว

    Thank you for this video !!

  • @ryanpark7323
    @ryanpark7323 ปีที่แล้ว

    Thank you! So so helpful :)

  • @qiongyujadehe5778
    @qiongyujadehe5778 ปีที่แล้ว

    Thanks alot !very useful!

  • @mayaziv8088
    @mayaziv8088 ปีที่แล้ว

    Thank you great videos!!

  • @prasadchaskar8542
    @prasadchaskar8542 ปีที่แล้ว

    Thank you so much. Best!!!!

  • @anaburgos4969
    @anaburgos4969 ปีที่แล้ว

    Thank you SO MUCH :)

  • @SwedishRagers
    @SwedishRagers ปีที่แล้ว +1

    Hi! there is not tutorial on YT on combining microarray and rna sequencing data under one analysis. this would be a very helpful tutorial! thanks again for all your amazing content!

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      Since microarray and RNA-Seq are different technologies, I am not sure of any use cases where there would be a requirement to combine data from both these technologies.

    • @SwedishRagers
      @SwedishRagers ปีที่แล้ว

      @@Bioinformagician I was thinking of when one does a meta-analysis on data from GEO. Some studies have done this for example: doi: 10.3389/fgene.2021.663787
      however, it is difficult to learn how to replicate this. Thank you though.

  • @potterae
    @potterae ปีที่แล้ว +1

    Your videos are awesome, very helpful! For setting the clusters in the cell data set, do you think it could be a viable option to use the defined subclusters or is it better to use the clusters which seurat found with FindClusters? Thank you!

  • @kiranpatil2924
    @kiranpatil2924 9 หลายเดือนก่อน

    Thank you,, Please Make same video for Spatial Transcriptomics Analysis

  • @sreejas1302
    @sreejas1302 ปีที่แล้ว

    Hi, thank you so much for this video. How to do trajectory analysis in diffusion maps instead of principal components?

  • @adelyntsai1116
    @adelyntsai1116 ปีที่แล้ว

    This is great!! Thank you so much. Will it be possible if you can make tutorials on intercellular interaction tools in R? Thank you again!

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      Thanks for the suggestion, will surely considering making videos covering this topic.

  • @jasminjeffery5668
    @jasminjeffery5668 3 หลายเดือนก่อน

    Would you consider a tutorial for TI with slingshot? that would be so helpful for me!

  • @jianwu4593
    @jianwu4593 ปีที่แล้ว

    Thanks

  • @lukesimpson1507
    @lukesimpson1507 ปีที่แล้ว +1

    Hi Bioinfomagician, great video as always. You spoke about the importance of having the optimal cluster resolution, is there any objective way to determine this? Is there any tools you would recommend? Thank you!

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว +3

      What I usually do is run clustering with multiple clustering resolutions like this:
      FindClusters(object = seurat_integrated,
      resolution = c(0.2, 0.5, 0.8, 1.0))
      and then plot each of them to visually see which resolutions provide optimal separation.
      If you have known cell types in your data, it might be of help to visualize the markers for those cell types too for different resolutions to make sure different cell types, group into separate clusters.

  • @tizianatocci1176
    @tizianatocci1176 ปีที่แล้ว

    Hey, your videos are truly amazing! Thank you so much! I have a question concerning point 3 "# 3 Learn trajectory graph -----------". I obtain a trajectory different from the one that you obtain in the video and the same happens if I copy your code from github. Do you have any idea of what I am doing wrong? Thank you again!!
    This is the error I get when I run the plot of the third point:
    Warning message: ggrepel: 7 unlabeled data points (too many overlaps). Consider increasing max.overlaps

  • @abhimanyu--3741
    @abhimanyu--3741 9 หลายเดือนก่อน

    Thank you for the tutorial. Can you extend this to "plot_genes_in_pseudotime" after the "graph_test"? that is one confusing part of the code on their tutorial

  • @rps2930
    @rps2930 5 หลายเดือนก่อน

    Hi Khushbu, first of all I really appreciate the effort you put in sharing your knowledge with us. I want to know from where I can get dataset for trajectory analysis which can be further published?

  • @erin8360
    @erin8360 ปีที่แล้ว

    Thank you for sharing this! Is there a way to compare the trajectories between two conditions/treatments?

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      You could build separate trajectories for each condition/treatment, get top 50 or 100 genes that change expression over pseudotime from both groups and compare them.

  • @stacygenovese1761
    @stacygenovese1761 ปีที่แล้ว +1

    As always these are wonderful. Quick question - if we're doing a trajectory analysis following integration do we just run as.cell_data_set() on our existing Seurat object? Or do we have to re-create the object transforming the expression matrix?

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      I think you could read the integrated object into as.cell_data_set() and use the clustering information from Seurat's UMAP to cluster cells and learn trajectory on those embeddings.

    • @judep6077
      @judep6077 11 หลายเดือนก่อน

      Make sure to change the active assay to 'RNA' from 'integrated' before you run the monocle or you will get an error.

  • @alexbrown2272
    @alexbrown2272 ปีที่แล้ว +1

    Thank you so much for this great video! Curious if you have found a way to plot individual genes in pseudo time? There is a way in Monocle, but when using this integration with Seurat there is not an expression family that is needed to plot specific genes in pseudo time or to find which genes are driving the trajectory. Any advice would be greatly appreciated! Thanks again!

    • @brooke2100
      @brooke2100 ปีที่แล้ว

      I am wondering this as well. Thanks in advance!

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      You can plot specific genes in pseudotime by running cds

  • @yongdongwu8472
    @yongdongwu8472 ปีที่แล้ว

    ZLJ
    3周前
    Thanks a lot! you are so excellent !!and i have a question,the s5" filter(status=="OK")",what's difference between “OK" and "failure",i cannot figure out the meaning and difference.

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      graph_test() results outputs status "FAIL" for those genes whose p values, Moran I and Moran test statistic values are NA

  • @msumode4493
    @msumode4493 ปีที่แล้ว

    Hello Khushbu. 2 points I am confused about.
    1. I was wondering when converting from Seurat to Monocle3 cds object, are the counts used for downstream analysis in your tutorial or the data from Seurat's data slot? Counts are not normalized and wouldn't that lead to erroneous calculations if not normalized in Monocle3 later on? I am not sure if this was done in this tutorial.
    2. Why take Seurat's UMAP coordinates for analysis in Monocle3? Wouldn't it be more informative to know how Monocle3 projects the Seurat generated clusters in 2D space? Otherwise, isn't Monocle just drawing or projecting pseudotime over Seurat based proximity?
    Thank you.

  • @youvikasingh7955
    @youvikasingh7955 ปีที่แล้ว +1

    Hi @Bioinfomagician..Loved your tutorial, and much-needed channel for budding bioinformaticians.
    I wanted to know if we don't have information on root cluster then how do we order cells according to Pseudotime?For eg in your case ProB cells are from cluster 5 but In my case, I just have CD4T cells in 4 clusters...how do I order them?
    Thanks in advance🙏

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      I am afraid pseudotime can be determined accurately for other cells if we don't know the cells it originated from i.e. the root cluster.

    • @youvikasingh7955
      @youvikasingh7955 ปีที่แล้ว

      @@Bioinformagicianthanks for your reply😍
      is there any strategy to find out root cluster?
      I was doing this like..looking for lymphoid differentiation markers and setting those clusters or cells as root
      I am not sure if this way is right
      I appreciate your help!
      Thanks a lot...
      you are doing a great job..whenever i am stuck somewhere i look into your channel for help😊

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      @@youvikasingh7955 Unfortunately I am not aware of any reliable methods to find out root cluster. Your best bet is to dig up literature and research papers to find out whether any lineage studies have been done previously for the cells you are studying which can give you clues for the origin cell type and associated markers.
      I am glad to hear my channel is serving as a useful resource :)

  • @adampassman
    @adampassman ปีที่แล้ว

    I have hundred of laser-microdissected samples, is there a pipeline for trajectory analysis for this kind of data? Do you think that I could just format my libraries as if they were single cells instead of single microdissections and trick it into working?

  • @meetukaur0909
    @meetukaur0909 3 หลายเดือนก่อน

    Ma'am, can you please let me know where can I get gene and cell meta data for a particular single cell analysis dataset?

  • @2007dolphinlover
    @2007dolphinlover 5 หลายเดือนก่อน

    Why do you also want to compare the cluster before trajectory?

  • @kitdordkhar4964
    @kitdordkhar4964 ปีที่แล้ว +1

    Question? From where did you get the redefined_cluster? I always get confused with the term "Subset" in scRNA analysis.

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      'redefined_cluster' was already present in the data I am using, as the data was already annotated. The term 'subset' is to just get certain group of cells from the entire dataset.

    • @kitdordkhar4964
      @kitdordkhar4964 ปีที่แล้ว +1

      @@Bioinformagician Gotcha! It was already in the ref database I guess. Thanks!

  • @hsinchiehwu4397
    @hsinchiehwu4397 ปีที่แล้ว

    Thank you for all the Rstudio vedios. They're so clear and helpful !!!! I've failed to instal SeuratWrappers (Mac Monterey 12.5, Rstudio IDE 4.2) using remotes or devtools; troubleshooting follow the github site was also nothing worked. Any suggestion would be greatly appreciated !!! Many thanks,

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      What is the error you see?

    • @mmhmmh8545
      @mmhmmh8545 ปีที่แล้ว

      I had the same problem, I was able to install SeuratWrappers after installing R.utils package install.packages("R.utils"). try doing this and see.

  • @user-mb5ld7re8m
    @user-mb5ld7re8m ปีที่แล้ว

    Sorry,my monocle3 cannot find funtion as.cell_data_set(). Can you help me?

  • @eramartinez8790
    @eramartinez8790 ปีที่แล้ว

    Thanks for the video you are saving my PhD, but I have the same problem, I can´t install SeuratWrappers, this is the Warning in install.packages :package ‘SeuratWrappers’ is not available for this version of R , I tried to install from but devtools::install_github("satijalab/seurat-wrappers") and remotes::install_github('satijalab/seurat-wrappers')nothing, any recommendation? I have R version 4.2.2

    • @TheVillka
      @TheVillka ปีที่แล้ว

      Hi, I had the same problem and installed r.utils. Then it worked with SeuratWrappers

  • @user-ck3ki9hq9t
    @user-ck3ki9hq9t 7 หลายเดือนก่อน

    Thank you! I am not seeing any '^MT- genes showing up in the data seuratobj I made from the downloaded data. Just get error: Error in validObject(object = x) :
    invalid class “Seurat” object: 1: all cells in assays must be in the same order as the Seurat object
    invalid class “Seurat” object: 2: 'active.idents' must be named with cell names
    Thanks if you have seen this error before

    • @louisgervais5059
      @louisgervais5059 6 หลายเดือนก่อน

      I have the same error message

  • @merrinleong1388
    @merrinleong1388 ปีที่แล้ว

    Error in as.cell_data_set(b.seu) :
    could not find function "as.cell_data_set"

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว +1

      Have you loaded SeuratWrappers library before running that command?

  • @aimanbarki9968
    @aimanbarki9968 ปีที่แล้ว +2

    link for data is not working :(.. Can you please cite another source

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      It seems to be working fine for me. Here's the link to the associated publication: academic.oup.com/nsr/article/8/3/nwaa180/5896476#267860186
      They have their data deposited in NCBI GEO - GSE137864 and GSE149938

    • @zeeman5007
      @zeeman5007 ปีที่แล้ว

      @@Bioinformagician Hi. Love these videos! The link to the data is not working for me as well. I am able to get the expression matrix file from NCBI GEO. But having difficulty finding the gene and cell metadata files. Any assistance would be greatly appreciated! :)

    • @Bioinformagician
      @Bioinformagician  ปีที่แล้ว

      @@zeeman5007 I have uploaded these files here:
      drive.google.com/file/d/1CJ9VSrUCoqPsUI1jrdm2nrLRawI04xZ1/view?usp=sharing

  • @moinicholas3828
    @moinicholas3828 ปีที่แล้ว

    Hi, Following yout script I find that mitopercent is always 0, any ideas why this might be?

    • @moinicholas3828
      @moinicholas3828 ปีที่แล้ว

      Is it that the sample size is small enough that there are actually 0 mitochondrial genes?

    • @moinicholas3828
      @moinicholas3828 ปีที่แล้ว

      I also find that seu.obj.filtered@metadata has the same number of rows as the orignal, is this right?

  • @MsZhang666
    @MsZhang666 ปีที่แล้ว

    The voice and the video do not match on 25:00-33:00 min.

  • @burakkahveci4123
    @burakkahveci4123 ปีที่แล้ว

    Hi, thank you for this great video, but I have a problem. When I install monocle3, I get a error.
    ** byte-compile and prepare package for lazy loading
    Hata: package or namespace load failed for 'SummarizedExperiment' in library.dynam(lib, package, package.lib):
    DLL 'DelayedArray' not found: maybe not installed for this architecture?
    Ek olarak: Warning messages:
    1: package 'matrixStats' was built under R version 4.1.3
    2: package 'GenomicRanges' was built under R version 4.1.2
    3: package 'S4Vectors' was built under R version 4.1.3
    4: package 'GenomeInfoDb' was built under R version 4.1.2
    Çalıştırma durduruldu
    ERROR: lazy loading failed for package 'monocle3'
    * removing 'C:/Users/Burak/OneDrive - Dokuz Eylül Üniversitesi/Belgeler/R/win-library/4.1/monocle3'
    Warning message:
    In i.p(...) :
    installation of package ‘C:/Users/Burak/AppData/Local/Temp/RtmpC69TpC/file28646e1844d/monocle3_1.2.9.tar.gz’ had non-zero exit status

  • @marinafernandez6778
    @marinafernandez6778 8 วันที่ผ่านมา

    Hi, Great video! thanks! I got this error any idea how to solve it? seu.obj$mitopercent