WGCNA算法:高效挖掘高通量数据模块信息

版权申诉
0 下载量 102 浏览量 更新于2024-11-12 收藏 2.89MB ZIP 举报
资源摘要信息:"WGCNA_1.63.zip_WGCNA_WGCNA quantile_corAndPvalue wgcna_quickly2z" WGCNA,即加权基因共表达网络构建(Weighted Gene Co-Expression Network Analysis),是一种利用高通量数据集来构建基因网络并识别基因模块的算法。该算法主要应用于分析基因表达数据,尤其是通过微阵列或RNA测序获得的数据集。它通过识别共表达的基因集合(模块)来推断生物学功能,这些模块可能在特定生物学过程中扮演重要角色。 WGCNA算法的核心是构建一个网络,将基因作为网络中的节点,通过计算基因之间的相关性来决定节点之间的连接权重。然后,使用聚类分析将具有相似表达模式的基因划分为模块。每个模块内部的基因通常具有相似的功能或者参与相同的生物学过程。此外,WGCNA不仅限于发现基因模块,它还能够通过计算模块与感兴趣的外部信息(例如表型数据)之间的相关性,来识别哪些模块可能对特定的生物过程或疾病具有重要意义。 在WGCNA的操作流程中,往往涉及以下几个关键步骤: 1. 数据预处理:包括数据清洗、标准化处理等,目的是为了减少数据变异性和噪声,提高后续分析的准确性。 2. 构建基因共表达网络:根据基因表达的相关性,构建加权网络,通常使用皮尔逊相关系数或其他相关性度量方法来评估基因间的相关性,并将其转换为连接权重。 3. 网络模块识别:通过拓扑重叠度(Topological Overlap Measure, TOM)和聚类方法(如层次聚类)识别基因模块。 4. 模块特征提取和评估:为每个模块计算代表性的表达特征,例如模块的特征向量或模块的中心基因。 5. 关联分析:将模块特征与外部信息(如表型数据)进行关联分析,以评估模块在特定生物学过程或疾病中的作用。 6. 模块功能注释和验证:对识别的模块进行生物学功能注释,比如通过GO分析和KEGG通路分析,以及可能的实验验证。 WGCNA还提供了一些功能强大的工具,用于处理和分析网络数据,如WGCNA R包。用户可以通过编写R语言脚本来执行从数据预处理到模块识别等全套分析。WGCNA也支持多种R语言生态中的其他生物信息学工具,从而实现跨平台、多功能的数据分析。 WGCNA的核心优势在于其能够处理大量的基因表达数据,并从中识别出结构化的、生物学上有意义的模块。这种方法尤其适用于复杂的多基因疾病,其中许多基因可能以不同的方式相互作用。由于其强大的分析和解释能力,WGCNA已成为现代生物信息学和系统生物学领域不可或缺的工具。 在本资源包中,包含了几个与WGCNA相关的文件,其中"WGCNA"可能是主文件或主程序,而"WGCNA quantile_corAndPvalue"和"wgcna_quickly2z"则可能代表特定的函数或模块,用于处理数据时的特定步骤。量化相关性(quantile)可能涉及到数据分布的标准化过程,相关性与P值(corAndPvalue)涉及统计学相关性评估,以及快速处理(quickly2z)可能是一种用于高效数据处理的方法或函数。这些文件的具体功能和用法需要根据WGCNA工具的详细文档和说明进行深入了解。

def outliers_proc(data, col_name, scale = 3): # data:原数据 # col_name:要处理异常值的列名称 # scale:用来控制删除尺度的 def box_plot_outliers(data_ser, box_scale): iqr = box_scale * (data_ser.quantile(0.75) - data_ser.quantile(0.25)) # quantile是取出数据对应分位数的数值 val_low = data_ser.quantile(0.25) - iqr # 下界 val_up = data_ser.quantile(0.75) + iqr # 上界 rule_low = (data_ser < val_low) # 筛选出小于下界的索引 rule_up = (data_ser > val_up) # 筛选出大于上界的索引 return (rule_low, rule_up),(val_low, val_up) data_n = data.copy() data_series = data_n[col_name] # 取出对应数据 rule, values = box_plot_outliers(data_series, box_scale = scale) index = np.arange(data_series.shape[0])[rule[0] | rule[1]] # 先产生0到n-1,然后再用索引把其中处于异常值的索引取出来 print("Delete number is {}".format(len(index))) data_n = data_n.drop(index) # 整行数据都丢弃 data_n.reset_index(drop = True, inplace = True) # 重新设置索引 print("Now column number is:{}".format(data_n.shape[0])) index_low = np.arange(data_series.shape[0])[rule[0]] outliers = data_series.iloc[index_low] # 小于下界的值 print("Description of data less than the lower bound is:") print(pd.Series(outliers).describe()) index_up = np.arange(data_series.shape[0])[rule[1]] outliers = data_series.iloc[index_up] print("Description of data larger than the lower bound is:") print(pd.Series(outliers).describe()) fig, axes = plt.subplots(1,2,figsize = (10,7)) ax1 = sns.boxplot(y = data[col_name], data = data, palette = "Set1", ax = axes[0]) ax1.set_title("处理异常值前") ax2 = sns.boxplot(y = data_n[col_name], data = data_n, palette = "Set1", ax = axes[1]) ax2.set_title("处理异常值后") return data_n代码每一行解析

2023-05-30 上传