文章简介
基于基因组等多组学数据预测植物表型为快速、高效育种提供了便利。随着生物技术的发展,越来越多的生物大数据涌现,为提升表型预测精度提供了丰富的信息资源。多视图数据(Multi-view data)指来自多个来源的数据,可以从不同角度对同一生物对象进行互补性描述。整合多视图数据可以提高预测精度,然而其数据间存在复杂的相关性和异质性问题,目前仍缺乏有效的方法将这些数据进行充分整合利用。
近日,Journal of Genetics and Genomics在线发表华中农业大学杨文宇副教授团队题为“Multi-view BLUP: a promising solution for post-omics data integrative prediction”的研究论文。该研究提出一种多视图最佳线性无偏预测模型MVBLUP (https://github.com/bjwu555/MVBLUP),可以将多视图信息有效整合到表型预测中,提高植物复杂性状预测能力。
MVBLUP是一种灵活的机器学习方法。它基于差分进化算法,通过为多视图数据分配权重的方式,有效整合多维度、多视角信息,实现对复杂性状的精准预测。差分进化算法借鉴自然界中物种的进化机制,模拟进化过程中的变异(Mutation)、重组(Crossover)和选择(Selection)等生物学过程,经过多代演化,最终携带多视图数据最优权重的个体被保留下来。通过在番茄、水稻、玉米等多个数据集中对MVBLUP方法进行验证,发现MVBLUP能够有效提升农作物产量等复杂性状的预测精度,与BLUP、LASSO和XGBoost等模型相比,提升幅度最高可达20%。综上所述,MVBLUP技术将有助于加速选育农作物新品种,为未来农作物基因组设计育种提供技术支持。
MVBLUP算法及特点
MVBLUP算法步骤
标准化(Normalization):
输入向量通过Z分数方法进行标准化处理。 为差分进化(DE)算法初始化随机权重,建立初始种群。
训练(Training):
利用差分进化算法的“变异和交叉”步骤更新权重向量。 使用更新后的权重向量通过相似性函数计算多视角亲缘关系矩阵。 利用差分进化算法的“选择”步骤更新权重向量,使用五折交叉验证的平均预测准确度作为适应度函数。 重复以下步骤K次或使用早停机制(early stopping mechanism):
预测(Prediction):
使用优化后的多视角亲缘关系矩阵进行表型预测。
MVBLUP算法特点
多视角数据整合:
MVBLUP方法能够整合来自不同来源(视角)的数据,这些数据可以提供互补信息,以更全面地描述生物学对象。
自适应权重调整:
通过差分进化算法(DE)动态确定多视角特征的最佳整合权重,以反映每个视角的重要性。
提高预测准确性:
与单视角方法相比,MVBLUP在多个数据集上显示出提高的预测准确性。
差分进化算法(DE):
DE算法用于优化权重,模拟自然进化过程,通过变异、交叉和选择操作进化种群,寻找最优解。
早期停止机制:
当适应度函数值的最大误差低于指定容忍度或达到最大迭代次数时,DE算法将停止,以节省计算成本。
灵活性和可扩展性:
MVBLUP算法灵活,可以适应不同的多视角场景,并且可以扩展到更广泛的多视角数据整合,包括RGB图像和基于光谱图像的表型数据等。
具体参见源码GitHub:https://github.com/bjwu555/MVBLUP
MVBLUP使用
1. 输入数据准备
1.1 多视角文件(Multi_view file):
需要包含表头,第一列显示个体名称。 基因型文件中的基因型(如AA, AT, TT)需要转换为基于等位基因频率的整数格式(0, 1, 或 2)。 转录组数据、代谢组数据和其他特征数据也必须是数值格式。
1.2 表型文件(Phenotypic file):
必须包含表头,代表性状名称。 第一列显示个体名称,性状值为数值格式,缺失值表示为NA。
2. 使用方法
2.1 分析前准备:
准备表型数据和多视角数据文件,确保所有文件中的个体顺序一致。
2.2 读取文件:
使用R代码读取多视角数据和表型数据文件。
# read multi-view data
Multi_view1 <- read.table("./data/Multi_view1.txt",
header=TRUE,
sep="",
stringsAsFactors=0,
check.names=FALSE)
# read phenotype
Phenotype <- read.table("./data/Phenotype.txt",
header = TRUE,
sep = "",
stringsAsFactors = 0,
check.names = FALSE)
2.3 划分训练集和测试集:
准备一个文本表格,包含个体的集合信息,第一列是个体名称,第二列是集合身份(训练或测试)。 使用R代码读取集合信息。
train_test_id <- read.table("./data/train_test_id.txt",
header = TRUE,
sep = "",
stringsAsFactors = 0,
check.names = FALSE)
2.4 获取多视角亲缘关系矩阵:
定义相似性函数来量化两个个体之间的相似性,并用它来计算多视角亲缘关系矩阵。 首先,使用单视角数据集的内积计算初始关系矩阵。 然后,使用MVBLUP模型获得的权重对初始单视角亲缘矩阵进行加权求和,得到多视角初始亲缘矩阵。 将这个矩阵纳入相似性函数,得到精细的多视角亲缘矩阵。
A_N <- similarity_inner_product(Multi_dataset, n)
A <- similarity_kinship(A_M)
# Notes:
# 1.Multi_dataset: a list composed of multi-view datasets.
# 2.n: the number of multi-view datasets.
# 3.A_M: a multi-view initial kinship matrix, constructed through the weighted integration of inner products derived from single-view data.
2.5 优化单视角数据集的权重:
在训练集中,构建差分进化算法来寻找最优权重集合,这些权重代表不同单视角数据在表型预测中的重要性。 使用“MVBLUP_weights”函数获得最优权重值。
MVBLUP_results <- MVBLUP_weights(NP, n,
CR, Mu,
s0, s1,
thre, iter,
cv, trid,
A_N,
Phenotype,
train_test_id)
#Notes:
#1.NP: the size of population.
#2.n: the number of multi-view datasets.
#3.CR: crossover factor.
#4.Mu: scaling factor.
#5.s0: the lower bounds of the search space for weights.
#6.s1: the upper bounds of the search space for weights.
#7.thre: threshold of the early stopping mechanism.
#8.iter: maximum iteration.
#9.cv: the number of folds for cross validation.
#10.trid: which trait.
#11.A_N: the single-view inner product for calculating multi-view kinship matrix.
#12.Phenotype: demonstrative phenotypic data with 100 individuals and 2 traits.
#13.train_test_id : file that identifies the sample IDs for the training and test sets.
2.6 测试MVBLUP模型的准确性:
在测试集中,将上述最优权重值与多视角数据整合用于预测,并计算测试集中观测值与预测值之间的相关性,作为MVBLUP模型的准确性。
MVBLUP_accuracy <- MVBLUP_PreTest(kinship_test,
testop1_ex,
trainop1_ex)
#Notes:
#1.kinship_test: multi-view kinship matrix obtained from the MVBLUP model.
#2.testop1_ex: true phenotypes of the test set.
#3.trainop1_ex: true phenotypes of the train set.
3. 输出结果
3.1 输出不同单视角数据集的权重:
“MVBLUP_weights”函数可以学习不同视角数据集的最优权重,以最大化基因组预测性能。 用户可以通过“MVBLUP_results$MVBLUP_information”获得最优权重。
3.2 输出预测的表型和测试集的准确性:
“MVBLUP_PreTest”函数计算MVBLUP模型的准确性,用户可以通过“MVBLUP_accuracy”获得预测值和预测准确性。
3.3 可视化MVBLUP算法的学习工作流程:
使用“plot_learning”函数可视化MVBLUP算法的学习工作流程,生成两个图表:1)八种不同数据类型的迭代训练过程;2)MVBLUP模型学习过程中最优权重的变化。
plot_learning(MVBLUP_results$Training_Accuracy,
MVBLUP_results$Training_Weight,
MVBLUP_results$MVBLUP_information,
output_path)
#Notes:
#1.MVBLUP_results$Training_Accuracy: the average accuracy obtained from each iteration of five-fold cross-validation on the training set.
#2.MVBLUP_results$Training_Weight: the optimal weights obtained in each iteration.
#3.MVBLUP_results$MVBLUP_information: the optimal weight values and the number of iterations required for convergence
#4.output_path: the path for storing the output results.
碎碎念
多视图数据在GS中也发了不少文章了,如很多研究将基因组、转录组、代谢组、蛋白组等数据整合到G矩阵中,但几乎都不区分不同组学的权重,认为它们具有相同的效应。MVBLUP主要就是把每一类数据集都训练赋予权重值,进而建模预测。这实际上是杨老师TOP(Target-Oriented Prioritization)算法的延伸,只不过TOP是对不同表型性状进行权重预测,在一定程度上替代了常见的综合选择指数。
算法很好,值得借鉴研究。但限于成本,多组学数据在短期内是不可能直接应用于育种的。当然,多视图数据不局限多组学(具有不同特征集的相同样本),多类型数据(同一特征集测量的不同样本组)、多环境数据(在不同条件下由同一特征集测量的相同样本)、多关系数据(同一系统中的不同特征和不同样本)都是可以尝试的。
现代育种是一个非常系统化的工程,GS交叉性极强,需要不同专业的人来做,最好既能懂育种、又懂算法、还能搞开发,才能落地实践。