JGG | 多视图数据的植物基因组预测新方法MVBLUP

文摘   2024-12-10 08:14   美国  

文章简介

基于基因组等多组学数据预测植物表型为快速、高效育种提供了便利。随着生物技术的发展,越来越多的生物大数据涌现,为提升表型预测精度提供了丰富的信息资源。多视图数据(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算法及特点

MVBLUP算法步骤

  1. 标准化(Normalization)

  • 输入向量通过Z分数方法进行标准化处理。
  • 为差分进化(DE)算法初始化随机权重,建立初始种群。
  • 训练(Training)

    • 利用差分进化算法的“变异和交叉”步骤更新权重向量。
    • 使用更新后的权重向量通过相似性函数计算多视角亲缘关系矩阵。
    • 利用差分进化算法的“选择”步骤更新权重向量,使用五折交叉验证的平均预测准确度作为适应度函数。
    • 重复以下步骤K次或使用早停机制(early stopping mechanism):
  • 预测(Prediction)

    • 使用优化后的多视角亲缘关系矩阵进行表型预测。

    MVBLUP算法特点

    1. 多视角数据整合

    • 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交叉性极强,需要不同专业的人来做,最好既能懂育种、又懂算法、还能搞开发,才能落地实践。

    生物信息与育种
    致力将生信、AI、大数据、云计算等技术应用于现代生物育种
     最新文章