Cells undergo changes to transition from one state to another as part of development, disease, and throughout life. Since those changes can be gradual, trajectory analysis attempts to describe progress through a biological process as a position along a path. Because biological processes are often complex, trajectory analysis builds branching trajectories where different paths can be chosen at different points along the trajectory. The progress of a cell along a trajectory from the starting point or root, can be quantified as a numeric value, pseudotime.
In Partek Flow, we use tools from Monocle 3 (1) to build trajectories, identify states and branch points, and calculate pseudotime values. The output of Trajectory analysis task includes an interactive 2D/3D visualization for viewing the trajectory trees and setting the root states (starting points of the trajectories). From the Trajectory analysis report, you can run a second task, Calculate pseudotime, which adds a numeric cell-level attribute, Pseudotime, calculated using the chosen root states.
Trajectory analysis by Monocle 3 requires data normalization and preprocessing. Regarding the normalization, we suggest to first use the Normalization and scaling section of the toolbox to normalize by counts per million (CPM), and add offset of 1. After that, launch the Trajectory analysis on the Normalized counts node.
According to the Monocle 3 authors, you may want to filter in the top 5,000 genes with the highest variance (2,000 genes for datasets with fewer than 5,000 cells, and 300 genes for datasets with fewer than 1,000 cells) (1). Those number should be used as a guidance for the first-pass analysis and may need to be optimized, depending on the project at hand and the biological question.
To run Trajectory analysis tool, select the Normalized counts data node (or equivalent) and go to the toolbox: Exploratory analysis > Trajectory analysis
These configuration dialog presents four options.
Under the hood, Monocle 3 will perform log2 transformation of the gene count matrix (if Data is logged was unselected), scale the matrix (if Scaling was selected), and project the gene count matrix into the top 50 principal components. Next, the dimensionality reduction will be implemented by UMAP (using default settings of the reduce_dimension command).
Result of running Trajectory analysis in Partek Flow is the Trajectory result data node. Double clicking on the node opens a Data Viewer window with the trajectory plot (Figure 1). Cell trajectory graph shows position of each cell (blue dot) with respect to the UMAP coordinates (axes). Cell trajectories (one or more, depending on the data set) are depicted as black lines. Gray circles are trajectory nodes (i.e. cell communities).
To show / hide cell trajectory tree and trajectory nodes, use the Extra data option on the Content card (Figure 2).
To perform pseudotime analysis, you need to point to the cells at the beginning of the biological process you are interested in. For example, cells at the earliest stage of differentiation sequence. To start, select the root cell nodes (gray circles) by left-click. If the trajectory result consists of more than one trajectory tree, you can specify more than one root node, e.g. one root node per trajectory tree (ctrl & click). If no root node is specified for a tree, that tree will not be included in the pseudotime calculation. Figure 3 shows an example where seven root nodes were identified.
Once you have identified all the root nodes, push the Calculate pseudotime button in the Selection panel (Figure 4).
As a result, the cells will be annotated by pseudotime, using green to red gradient (start and end, respectively) (Figure 5). If, for a particular tree, no root node has been identified, those cells will be omitted from the pseudotime calculation and will be colored in gray (not shown).
Following pseudotime calculation, three types of cell nodes will be annotated on the plot (in addition to the intermediate nodes from the previous step).
Major updates in Monocle 3 (compared to Monocle 2) include: