ScrnaMetabolicLandscape¶
Metabolic landscape analysis for scRNA-seq data
An abstract from https://github.com/LocasaleLab/Single-Cell-Metabolic-Landscape.
See also https://pwwang.github.io/biopipen/pipelines/scrna_metabolic/.
This is a group of processes to analyze the metabolic landscape of single cell RNA-seq data.
It collects a set of processes and owns a set of arguments. These arguments could either preset the default values for the processes or define the relationships between the processes.
Processes¶
The processes in this group implement part of the pipeline below from the original paper.
The data preparation, preprocessing and clustering already done by other processes of this pipeline. The processes in this group are used to analyze the metabolic landscape of the data.
MetabolicInput
: Input for the metabolic pathway analysis pipeline for scRNA-seq dataMetabolicExprImpution
: Impute the missing values in the expression dataMetabolicPathwayActivity
: Calculate the pathway activities for each groupMetabolicPathwayHeterogeneity
: Calculate the pathway heterogeneityMetabolicFeatures
: Inter-subset metabolic features - Enrichment analysis in detailsMetabolicFeaturesIntraSubset
: Intra-subset metabolic features
Group arguments¶
noimpute
(flag
): Whether to do imputation for the dropouts. IfFalse
, the values will be left as is.gmtfile
: The GMT file with the metabolic pathways. The gene names should match the gene names in the gene list inRNAData
or theSeurat
objectgrouping
: It defines the basic groups to investigate the metabolic activity Typically the clusters.grouping_prefix
: Working as a prefix to group names For example, if we havegrouping_prefix = "cluster"
and we have1
and2
in thegrouping
column, the groups will be named ascluster_1
andcluster_2
subsetting
(type=auto
): How do we subset the data. Other columns in the metadata to do comparisons. For example,"TimePoint"
or["TimePoint", "Response"]
subsetting_prefix
(type=auto): Working as a prefix to subset names For example, if we havesubsetting_prefix = "timepoint"
and we havepre
andpost
in thesubsetting
column, the subsets will be named astimepoint_pre
andtimepoint_post
Ifsubsetting
is a list, this should also be a same-length list. If a single string is given, it will be repeated to a list with the same length assubsetting
subsetting_comparison
(type=json): What kind of comparisons are we doing to compare cells from different subsets. It should be dict with keys as the names of the comparisons and values as the 2 comparison groups from thesubsetting
column. For example, if we havepre
andpost
in thesubsetting
column, we could havesubsetting_comparison = {"pre_vs_post": ["post", "pre"]}
The second group will be the control group in the comparison. If we also have1
,2
and3
in thegrouping
column, by default, the comparisons are done within each subset for each group. For example, for group1
, groups2
and3
will be used as control, and for group2
, groups1
and3
will be used as control, and for group3
, groups1
and2
will be used as control. It is similar toSeurat::FindMarkers
procedure. With this option, the comparisons are also done to compare cells from different subsets within each group. With the example above, we will havepre_vs_post
comparisons within each group. Ifsubsetting
is a list, this must be a list of dicts with the same length.mutaters
(type=json): Add new columns to the metadata for grouping/subsetting. They are passed tosobj@meta.data |> mutate(...)
. For example,{"timepoint": "if_else(treatment == 'control', 'pre', 'post')"}
will add a new columntimepoint
to the metadata with values ofpre
andpost
based on thetreatment
column.ncores
(type=int): Number of cores to use for parallelization for each process