diff --git "a/docs/2023-10/TimeSeriesAnalysis\345\214\205_\347\224\250\344\272\216\346\227\266\351\227\264\345\272\217\345\210\227\345\210\206\346\236\220\346\265\201\347\250\213.md" "b/docs/2023-10/TimeSeriesAnalysis\345\214\205_\347\224\250\344\272\216\346\227\266\351\227\264\345\272\217\345\210\227\345\210\206\346\236\220\346\265\201\347\250\213.md" new file mode 100644 index 00000000..391ec1a4 --- /dev/null +++ "b/docs/2023-10/TimeSeriesAnalysis\345\214\205_\347\224\250\344\272\216\346\227\266\351\227\264\345\272\217\345\210\227\345\210\206\346\236\220\346\265\201\347\250\213.md" @@ -0,0 +1,15 @@ +--- +title: "TimeSeriesAnalysis包:用于时间序列分析流程" +date: 2023-10-29T23:45:01Z +draft: ["false"] +tags: [ + "fetched", + "生信碱移" +] +categories: ["Acdemic"] +--- +TimeSeriesAnalysis包:用于时间序列分析流程 by 生信碱移 +------ +

老铁快点击蓝字 关注起来

        改进的转录组测序技术现在使得进行纵向实验成为可能,因此产生了大量的数据。目前,还没有专门或全面的方法用于分析这些实验。在下文中,研究者描述了时间序列分析流程(TiSA),它结合了差异基因表达、基于递归阈值的聚类以及功能富集分析。其中,差异基因表达对时间和条件轴都进行了评估。不仅如此,在识别的差异表达基因上进行聚类,每个聚类都使用功能富集分析进行评估。作者展示了TiSA可以用于分析来自微阵列和RNA-seq的纵向转录组数据,以及小型、大型和/或有缺失数据点的数据集。测试的数据集在复杂性上有所不同,一些来自细胞系,而另一些来自COVID-19患者的严重性纵向实验。作者还设计了了自定义的图形,以帮助解释数据的生物学意义,这些图包括主成分分析、多维缩放图、功能富集点图、轨迹图和显示结果概览的复杂热图。他们表示,TiSA是到目前为止第一个为纵向转录组实验分析提供简单解决方案的流程。

参考文档:

https://ylefol.github.io/TimeSeriesAnalysis/

时间序列分析 – PBMC 示例运行

目录

时间序列分析

TimeSeriesAnalysis包可以通过以下函数安装:

install.packages("devtools")
devtools::install_github("Ylefol/TimeSeriesAnalysis@master")

参数设定

设置以下参数进行下游分析:

#Give names to saved object and name of results repository
name_result_folder<-'TS_results_PBMC_example/'
obj_name<-'timeSeries_obj_PBMC_example.Rdata'

#Set-up time series object parameters
diff_exp_type<-'DESeq2' #package used for DE – can also be 'limma'
p_val_filter_type<-'padj' #Either padj or pvalue, used to filter for significance
p_thresh<-0.05 #pvalue or padj value threshold for significance
l2fc_thresh<-1 #log(2)foldChange threshold for significance
name_control<-'LPS' #Name of experiment as seen in the sample file
name_experiment<-'IgM' #Name of control as seen in the sample file
graphic_vector<-c("#e31a1c","#1f78b4") #Pre-set colors for the groups

#Declare organism and load library
org_sem_sim='org.Hs.eg.db'
library('org.Hs.eg.db')

## Loading required package: AnnotationDbi

#Define specimen and ontology parameters
my_ont_gpro='GO:BP'
my_ont_sem_sim='BP'

my_org_gpro='hsapiens' #Set the species for the gprofiler analysis

# The seed serves to create reproducible results with PART.
# A seed will ensure that the random components of PART clustering will be the same
# as long as the same seed is used. For more information on seeds, please consult
# this link: https://www.r-bloggers.com/2018/07/%F0%9F%8C%B1-setting-a-seed-in-r-when-using-parallel-simulation/
PART_seed=123456

PART_l2fc<-2 #log(2)foldChange threshold for PART clustering
PART_min_clust<-50 #Minimum cluster size for PART
PART_recursion<-100 #Number of recursions, default is 100, using 10 for example

log_tp_traj<-FALSE #Defines if timepoints should be log transformed for illustration purposes

# Allows for all temporal combinations to be done instead
# of just sequential comparison. ex: do TP2vsTP1, TP3vsTP2, AND TP3vsTP1. In a normal instance
# only the first two comparison of the example would be run.
do_all_temporal_comparisons=FALSE

#Used to highlight specific genes regardless of differential gene expression significance
genes_of_interest <- c('AICDA','APOBEC3H','APOBEC3F','APOBEC3D','APOBEC3C','APOBEC3G','APOBEC3B','APOBEC3A','SMUG1','UNG','EGFR')

#The ancestors that will be queried, the ontology must be specified (BP,MF,or CC)
#Set to an empty vector c() if not required by the analysis
target_ancestors<-c('GO:0002253','GO:0019882','GO:0002404','GO:0002339','GO:0042386',
'GO:0035172','GO:0002252','GO:0006955','GO:0002520','GO:0090713',
'GO:0045321','GO:0001776','GO:0050900','GO:0031294','GO:0002262',
'GO:0002683','GO:0002684','GO:0002440','GO:0002682','GO:0002200',
'GO:0045058','GO:0002507')
ancestor_ontology<-'BP'

#Some extra set-up
name_save_obj<-paste0(name_result_folder,obj_name)#The object will be saved in result folder
#Create main directory for results, removed for vignettes
# dir.create(name_result_folder)

my_group_names<-c(name_experiment,name_control)
names(graphic_vector)<-c(name_experiment,name_control)

创建 TimeSeries 对象

使用上面的参数,生成一个 TimeSeries_Object 并加载示例数据以及语义相似度数据

TS_object <- new('TimeSeries_Object',
group_names=my_group_names,group_colors=graphic_vector,DE_method=diff_exp_type,
DE_p_filter=p_val_filter_type,DE_p_thresh=p_thresh,DE_l2fc_thresh=l2fc_thresh,
PART_l2fc_thresh=PART_l2fc,sem_sim_org=org_sem_sim,Gpro_org=my_org_gpro)
TS_object <- TS_load_example_data(TS_object)
TS_object <- add_semantic_similarity_data(TS_object,my_ont_sem_sim,vignette_run=TRUE)

差异基因表达分析

加载执行差异基因表达分析所需的函数:如果使用的工具是 DESeq2 (Love, Huber, and Anders 2014),则需要使用其方法对数据进行标准化。如果使用的工具是 limma (Smyth 2005),则应该输入归一化矩阵,因此不需要归一化。

该代码块执行条件和时间差异基因表达,并将结果保存在时间序列对象中。

#Perform normalization if the DESeq2 tool is being used and if normalized matrix doesn't exist
if (slot(TS_object,'DE_method')=='DESeq2' & 'norm' %in% names(assays(slot(TS_object,'exp_data')))!=TRUE){
TS_object <- normalize_timeSeries_with_deseq2(time_object=TS_object)
}

#Perform conditional differential gene expression analysis
TS_object<-conditional_DE_wrapper(TS_object,vignette_run=TRUE)
#Perform temporal differential gene expression analysis
TS_object<-temporal_DE_wrapper(TS_object,do_all_combinations=do_all_temporal_comparisons,vignette_run=TRUE)

部分聚类

下面的代码块准备并启动 PART 聚类(Nilsen 等人,2013)。它首先检索“signi_genes”变量中用于 PART 聚类的重要基因的数量。该块可能会相当长,具体取决于聚类中包含的基因数量以及为聚类设置的递归数量。

#Extract genes for PART clustering based on defined log(2)foldChange threshold
signi_genes<-select_genes_with_l2fc(TS_object)

#Use all samples, but implement a custom order. In this case it is reversed
samp_dta<-exp_sample_data(TS_object)
TS_groups<-slot(TS_object,'group_names')
samps_2<-samp_dta$sample[samp_dta$group==TS_groups[2]]
samps_1<-samp_dta$sample[samp_dta$group==TS_groups[1]]

#Create the matrix that will be used for PART clustering
TS_object<-prep_counts_for_PART(object=TS_object,target_genes=signi_genes,
scale=TRUE,target_samples=c(samps_2,samps_1))

#Sets a seed for reproducibility
if (is.null(PART_seed)==FALSE){
set.seed(as.character(PART_seed))
}
TS_object<-compute_PART(TS_object,part_recursion=PART_recursion,part_min_clust=PART_min_clust,
custom_seed=PART_seed,dist_param="euclidean", hclust_param="average",
vignette_run=TRUE)

Gprofiler分析

下面的代码块运行 gprofiler 分析(Kolberg 等人,2020 年;Raudvere 等人,2019 年)。重要提示:此功能需要有稳定的互联网连接,缺少连接或连接间歇性断开将导致错误和代码块的终止。

如果发生错误,可以通过取消注释(删除前面的“#”)“load('timeseries_obj_res.Rdata')”行,将该代码块与上述代码块分开重新运行。

这将加载 PART 聚类代码块之后保存的结果。

如果完成,此代码块将覆盖保存的对象。然后,覆盖的对象将包含 gprofiler 分析结果,并可用于生成下游代码块的绘图。

TS_object<-run_gprofiler_PART_clusters(TS_object,vignette_run = TRUE) #Run the gprofiler analysis

时间序列分析结果

大多数绘图均以 SVG 格式创建,以便于使用 InkScape(开源软件)等 SVG 编辑软件进行编辑。一些图是以 html 格式创建的,因为它们是交互式图,所以需要网络浏览器才能打开它们

要将 SVG 文件转换为 PNG/JPG/PDF,请访问以下网站:https: //svgtopng.com/ 可以使用每个相应交互右上角的相机图标打开 HTML 文件,然后将其另存为 PNG。

时间序列总结

1. 比较组的名称: IgM vs LPS 

2. 分析的基因数量: 1691

3. 使用的差异表达参数: 

「方法」 DESeq2

「使用的 P 统计过滤器」 padj,阈值为 0.05

「使用的显著性阈值」  Log(2)FoldChange

4. 使用的 PART 参数:

 「PART log(2)FoldChange 显著性阈值 2

「递归次数」 100

「最小簇大小」 50 

「距离参数:」 euclidean 

「hclust 参数 平均

自定义种子」 123456 

「PART 计算时间」 已用 270.209 秒

「样本数据的PCA如下:」

差异基因表达结果(根据plot_wrapper函数)

「每次分析发现的 DEG」

EXPERIMENT.NAMENUMBER.OF.DEGS
IgM_vs_LPS_TP_1 (conditional)464
IgM_vs_LPS_TP_3 (conditional)758
IgM_vs_LPS_TP_9 (conditional)807
TP_3_vs_TP_1 (temporal)300
TP_9_vs_TP_3 (temporal)4
total unique genes1308
上表中列出的每个实验都有单独的结果,可以在“TS_results”文件夹中查看。在主结果文件夹中,差异基因表达结果位于“DE_results_conditional”和“DE_results_temporal”图中。每个单独的实验都会创建以下内容:
「DE_raw_data.csv」:包含所有基因及其相关差异表达结果(无论显著着性如何)的 csv 文件。
「DE_sig_data」:仅包含显著差异表达结果的 csv 文件。
「MA_plot.png」:MA 图,这些通常用于评估归一化的质量。
「Volcano_plot.png」:火山图,将显著上调和下调的基因以及不显著的基因分开。
「PCA_plot」:仅使用差异基因表达分析中涉及的样本的 PCA 图。

该管道还创建两个大型热图,总结条件和时间差异表达结果。热图是使用 ComplexHeatmaps 包创建的(Gu、Eils 和 Schlesner 2016)。这些热图将每个实验显示为不同的列(按颜色区分),而行则区分组。热图中绘制的是对数转换后的计数,而对数转换后的 log(2) 倍变化可在热图底部的直方图中看到。每个实验中的基因数量(彩色柱)显示在热图底部的图例中。该热图如下所示。在时间热图的情况下,行被标记为“实验”和“控制”。“实验”代表进行比较的时间点,而对照代表与“实验”进行比较的时间点。例如,TP2_vs_TP1 的“实验”为 TP2,对照为 TP1,而 TP3_vs_TP2 的“实验”为 TP3,“对照”为 TP2。注意TP=时间点 time point。

「条件热图」

感兴趣的基因结果

如果已指定感兴趣的基因,则管道将为每个请求的基因提取条件和时间的差异基因表达结果,前提是在计数矩阵中找到它们。这些数据文件以及单独的轨迹图存储在“TS_results/genes_of_interest”文件夹中。下面显示了变化最大的基因的轨迹。如果没有提交感兴趣的基因,则从差异表达结果中取出随机基因。轨迹图中显示的是 x 轴上的时间点和 y 轴上的读数 (RNAseq) 或表达(微阵列)的数量。请注意,数据文件和轨迹图是为发现的所有感兴趣的基因创建的,无论它们基于差异基因表达分析的重要性如何。

聚类结果

下面的代码块为 PART 找到的簇创建轨迹图。轨迹首先通过使用可用的重复计算每个时间点的每个基因的平均值来计算。每组(对照/实验)每个基因的平均值计算一次。然后,对基因进行缩放,以便能够在同一值轴上表示它们。每个基因都绘制为单独的彩色线,还绘制了平均线(灰色)以显示簇的整体轨迹。这些情节的灵感来自(Nguyen 2021)

log_tp_traj 参数定义是否应对时间点进行对数转换。如果时间点不是随时间均匀采样的,则时间点的对数变换非常有用。例如,两个时间点分别为 0 和 15 分钟,另一个时间点为 24 小时(1440 分钟),这将导致前两个时间点非常压缩,并且可能无法区分。

# dir.create(paste0(name_result_folder,'PART_results')) #create the directory to store results
PART_heat<-PART_heat_map(TS_object,NULL) #Create a summary heatmap, returns plot if save location is NULL
ts_data<-calculate_cluster_traj_data(TS_object,scale_feat=TRUE) #Calculate scaled gene values for genes of clusters
mean_ts_data<-calculate_mean_cluster_traj(ts_data) #Calculate the mean scaled values for each cluster

#Function which determines the number of SVG files to plot all cluster trajectories
#Function commented out for vignettes
# wrapper_cluster_trajectory(TS_object,ts_data,mean_ts_data,log_TP=log_tp_traj,plot_name=paste0(name_result_folder,'/PART_results/Ctraj'))

#find the most variable cluster, subset necessary data and plot it on a single column
#The function will also filter for a cluster which has gprofiler results
target_clust<-find_most_variable_cluster(TS_object,mean_ts_data)
sub_ts<-ts_data[ts_data$cluster==target_clust,]
sub_mean<-mean_ts_data[mean_ts_data$cluster==target_clust,]
plt_clust<-plot_cluster_traj(object = TS_object,ts_data = sub_ts,ts_mean_data = sub_mean, num_col=1,rem_legend_axis=TRUE,log_TP=log_tp_traj)
cluster_map_sum<-t(as.data.frame(table(slot(TS_object,'PART_results')$cluster_map[,c(1)])))
row.names(cluster_map_sum)=c('Cluster name','Number of genes')
colnames(cluster_map_sum)=NULL

「部分结果总结:」

所有聚类结果都可以在“PART_results”文件夹中找到。在此文件夹中您将找到以下内容(请注意,如果为函数指定了 save_location 并且使用了该函数,则该文件夹存在):

「PART_heat.svg」:PART 结果的 svg 热图。

「PART_heat_with_names.svg」:与上面相同的图,但包含样本和基因名称。这些可能不可见,具体取决于包含的基因数量以及样本名称的长度。

「PART_heat_cmap.csv」:代表“cluster_map”的 csv 文件,提供每个基因排序所在的簇以及为该簇指定的颜色(以十六进制代码表示)。

「PART_heat_data.csv」:“PART_heat”热图中使用的 z 分数值。

「Ctraj.svg」:该文件夹中至少有一个,也可能有多个这样的文件。此/这些 SVG 图分别显示了按组分割时每个簇的轨迹。这意味着每个簇的轨迹显示两次,每组一次。有关聚类和组的信息显示在每个子图的标题中。

「PART 热图和聚类轨迹」在此热图中,我们说明了提交用于 PART 聚类的所有基因。每个基因都使用 Z 分数来说明,Z 分数测量基因与其平均值的标准偏差数。本质上它衡量的是变异性。簇显示为图左侧的彩色条,而组和时间点显示为热图顶部的彩色条。PART 热图是使用 ComplexHeatmaps 创建的(Gu、Eils 和 Schlesner 2016)。

下图显示了变化最大的簇 (C5) 的簇轨迹,实验组的轨迹位于顶部,对照组的轨迹位于底部。x 轴代表时间点,y 轴代表基因的缩放平均表达。通过计算每组中每个时间点的所有重复之间的平均值来获得每个基因的表达。然后对这些值进行缩放以说明它们的轨迹。聚类的总体平均值显示为较粗的灰线。

Gprofiler 结果 – 标准

下面的块创建 gprofiler 结果。与物种和本体相关的一些参数需要定义多维尺度(MDS)图,这些图将由该代码块的最后一个函数生成。下面看到的两个版本的 MDS 图均受到(Brionne、Juanchich 和 Hennequet-Antier 2019) 的启发。

还需要为 MDS 图定义本体。请注意,MDS 图使用的语义相似性度量目前仅支持 GO 本体(MF、CC 和 BP)。这些在一开始就已经定义好了。第一个函数将标准 gprofiler 图(gost 图)绘制到目录中,并将所请求本体的信息检索到 GO_clusters 数据框中。然后将该数据帧与语义距离一起使用来创建两个版本的 MDS 图。

#Create standard gprofiler results
gpro_res<-gprofiler_cluster_analysis(TS_object,my_ont_gpro,save_path=NULL,
return_specific_cluster=target_clust,
return_interactive=TRUE)
GO_clusters<-gpro_res[['GO_df']]
sem_dta<-slot(TS_object,'sem_list')
#Plot and save MDS and clustered MDS
MDS_plots<-wrapper_MDS_and_MDS_clusters(GO_clusters,sem_dta,my_ont_sem_sim,target_dir=NULL,return_plot=TRUE,term_type_gg=FALSE)

每个集群都有自己单独的 gprofiler 图,这些可以在“TS_results/gprofiler_results/figures”中找到。变化最大的簇 (C5) 的 gost 图如下所示。这些交互式图显示了使用基因列表查询时各种数据库的结果。有关这些图及其各种数据源的更多信息,请访问以下链接:https: //biit.cs.ut.ee/gprofiler/gost 。下面是该图的非交互式版本,可以通过设置获得交互式版本将上述包装函数的 return_interactive 参数设置为“TRUE”。在交互式版本中,您可以将鼠标悬停在每个点上以获取该特定点的相关信息。

除了标准 gprofiler 图之外,TimeSeries 管道还创建多维标度 (MDS) 图。这些图说明了由“my_ont_gpro”参数定义的自定义选定本体。第一个 MDS 图显示了指定本体的所有找到的术语,并根据它们所在的簇来区分它们。在 MDS 图中,每个点之间的距离代表术语之间的语义相似度(Yu 等人,2010 年;Wang 等人,2007 年)。这可以宽松地定义为术语之间的“接近度”。语义相似性考虑了许多因素,例如术语的内容(属于它的基因)、它与其他术语的关联、功能上的相似性或缺乏性等。在MDS图中,维度将被调整用所有术语填充空间,因此没有设定的度量来衡量相似性。MDS 图的目的还在于帮助可视化相关术语的不同分组(或集群)。输入即可看到该图。由于基于标准术语的 MDS 中存在大量可能的命中,因此创建了替代版本。MDS 图的第二个版本提供了最近祖先聚类方法。所有找到的术语都会追溯到它们最近的共同祖先。由于这些数据库,特别是 GO 本体,具有树状层次结构,因此我们能够找到每个术语的共同祖先,如果存在太多单独的术语,这可能会提供更广泛的视野。此方法不根据找到术语的聚类进行区分,这意味着来自不同聚类的术语可以配对在一起。此方法中每个点的大小与该共同祖先(点)中排序的术语数量相关,而颜色代表该共同祖先中的主导簇。例如,如果祖先中有 4 个术语,并且其中 3 个术语在簇 1 (C1) 中找到,则该点将带有与 C1 关联的颜色。还可以通过将“term_type_gg”参数设置为 FALSE 来获得交互式版本

Gprofiler 结果 – 自定义

点图旨在说明任何单个本体的前 n 项结果。在下面的代码块中,演示了三种不同的本体:GO:BP(生物过程)、REAC (REACTOME) (Jassal et al. 2020)和 KEGG (Kanehisa et al. 2017)。“target_top”参数定义将在点图上显示的每个簇的项数(从最重要到最不重要)。

显示的所有项均被认为是显著的,“顶部”方面反映了基于调整后的 p 值的显著性。调整后的 p 值进行负对数变换,以便提供更好的可视化效果,其中最显著的是红色,不太显著(但仍具有统计显著性)的是蓝色。

target_top=5
select_ontology<-'REAC'
gpro_REAC_dotplot<-GO_dotplot_wrapper(TS_object,file_loc=NULL,target_ontology=select_ontology,top_n=target_top,return_plot = TRUE)

下图是 REACTOME 途径的点图。

祖先查询图

祖先查询图旨在查询与特定 GO 相关的结果。

该图搜索所查询术语 ID 的子项。路径(例如 GO 路径)是分层组织的,因此单个 ID 将与其他 ID 相关联。例如,“免疫系统进程(GO:0002376)”包含多个“子进程”,这些子进程中的每一个都可能有自己的子进程等等。如果我们使用“免疫系统过程”的 ID,该图将找到“免疫系统过程”的所有子项、子子项等。然后,它将根据找到子项的 PART 簇来分割子项,这些结果以点图格式进行说明。这是通过 GO.db 包完成的(Carlson 2021)

有几个网站可以搜索感兴趣的 GO 祖先,“AMIGO2”是其中之一,“quickGO”是另一个。

对这种类型的情节要小心。它始终将术语链接到最上游的祖先,因此,如果查询包含两个彼此相关的术语 ID,则该图将说明所有结果都属于最上游(最旧/祖先)的术语 ID。查询的每个祖先都将在点图上以不同的颜色进行说明。

#Dotplot for terms relating to specific ancestors
#Check if analysis is required, if not, set to null or empty
if(length(target_ancestors)==0){
ancestor_plots<-list()
ancestor_plots[['MDS']]<-NULL
GOs_ancestors_clust<-data.frame(NULL)
}else{
GOs_ancestors_clust<-find_relation_to_ancestors(target_ancestors,GO_clusters,ontology = ancestor_ontology)
ancestor_plots<-wrapper_ancestor_curation_plots(GOs_ancestors_clust,sem_dta,return_plot=TRUE,target_dir=NULL,term_type_gg=FALSE)
}

为祖先图生成两种格式。第一个是 MDS 图。第二个是点图版本。如果发现多个术语与祖先相关,则会创建 MDS 图,如下所示,否则仅创建点图。如果未找到术语,则不会创建点图。这两个图的文件可以在“TS_results/ancestor_plots”中找到。在 MDS 和点图中,每个项的颜色代表它们所关联的祖先,并且大小与 -log 变换调整后的 p 值成正比。在 MDS 图中,通过将鼠标悬停在每个点上可以看到找到这些术语的 PART 簇,在点图版本中,此信息在 x 轴上可用,而 y 轴代表术语。对于 MDS 图,还可以通过将“term_type_gg”参数设置为 FALSE 来获得交互式版本。

还生成一个交互式表格,以便在找到许多不同祖先的大量术语时更好地导航结果。该数据的 csv 版本可以在“TS_results/ancestor_plots”中找到。(https://plotly.com/)

会话信息

sessionInfo

## R version 4.3.0 (2023-04-21)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Pop!_OS 22.04 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## time zone: Europe/Oslo
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats4 stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] org.Hs.eg.db_3.17.0 AnnotationDbi_1.62.1
## [3] ggplot2_3.4.2 TimeSeriesAnalysis_01.01.01
## [5] BiocFileCache_2.8.0 dbplyr_2.3.2
## [7] SummarizedExperiment_1.30.2 Biobase_2.60.0
## [9] GenomicRanges_1.52.0 GenomeInfoDb_1.36.1
## [11] IRanges_2.34.1 S4Vectors_0.38.1
## [13] BiocGenerics_0.46.0 MatrixGenerics_1.12.2
## [15] matrixStats_1.0.0 knitr_1.43
##
## loaded via a namespace (and not attached):
## [1] RColorBrewer_1.1-3 rstudioapi_0.14 jsonlite_1.8.5
## [4] shape_1.4.6 magrittr_2.0.3 farver_2.1.1
## [7] rmarkdown_2.22 GlobalOptions_0.1.2 fs_1.6.2
## [10] zlibbioc_1.46.0 ragg_1.2.5 vctrs_0.6.3
## [13] memoise_2.0.1 RCurl_1.98-1.12 htmltools_0.5.5
## [16] S4Arrays_1.0.4 dynamicTreeCut_1.63-1 curl_5.0.1
## [19] tictoc_1.2 sass_0.4.6 bslib_0.5.0
## [22] htmlwidgets_1.6.2 desc_1.4.2 plyr_1.8.8
## [25] plotly_4.10.2 cachem_1.0.8 mime_0.12
## [28] lifecycle_1.0.3 iterators_1.0.14 pkgconfig_2.0.3
## [31] Matrix_1.5-4.1 R6_2.5.1 fastmap_1.1.1
## [34] GenomeInfoDbData_1.2.10 shiny_1.7.4 clue_0.3-64
## [37] digest_0.6.32 colorspace_2.1-0 DESeq2_1.40.2
## [40] rprojroot_2.0.3 textshaping_0.3.6 crosstalk_1.2.0
## [43] RSQLite_2.3.1 filelock_1.0.2 labeling_0.4.2
## [46] org.Mm.eg.db_3.17.0 fansi_1.0.4 httr_1.4.6
## [49] mgcv_1.8-42 compiler_4.3.0 bit64_4.0.5
## [52] withr_2.5.0 doParallel_1.0.17 BiocParallel_1.34.2
## [55] DBI_1.1.3 highr_0.10 DelayedArray_0.26.3
## [58] rjson_0.2.21 tools_4.3.0 httpuv_1.6.11
## [61] glue_1.6.2 promises_1.2.0.1 nlme_3.1-162
## [64] GOSemSim_2.26.0 grid_4.3.0 cluster_2.1.4
## [67] reshape2_1.4.4 generics_0.1.3 gtable_0.3.3
## [70] tidyr_1.3.0 data.table_1.14.8 utf8_1.2.3
## [73] XVector_0.40.0 ggrepel_0.9.3 foreach_1.5.2
## [76] pillar_1.9.0 stringr_1.5.0 limma_3.56.2
## [79] later_1.3.1 circlize_0.4.15 splines_4.3.0
## [82] dplyr_1.1.2 lattice_0.21-8 bit_4.0.5
## [85] tidyselect_1.2.0 GO.db_3.17.0 ComplexHeatmap_2.16.0
## [88] locfit_1.5-9.8 Biostrings_2.68.1 xfun_0.39
## [91] stringi_1.7.12 lazyeval_0.2.2 yaml_2.3.7
## [94] evaluate_0.21 codetools_0.2-19 tibble_3.2.1
## [97] BiocManager_1.30.21 cli_3.6.1 org.Ce.eg.db_3.17.0
## [100] xtable_1.8-4 systemfonts_1.0.4 munsell_0.5.0
## [103] jquerylib_0.1.4 Rcpp_1.0.10 gprofiler2_0.2.2
## [106] png_0.1-8 parallel_4.3.0 ellipsis_0.3.2
## [109] pkgdown_2.0.7 blob_1.2.4 bitops_1.0-7
## [112] viridisLite_0.4.2 scales_1.2.1 purrr_1.0.1
## [115] crayon_1.5.2 GetoptLong_1.0.5 rlang_1.1.1
## [118] KEGGREST_1.40.0
参考

本文经过翻译整合

仅供粉丝老铁们参考

如有侵权或错误,请联系删除改正~

+
+原文链接