7.多关联双亲染色体片段代换系(CSSL)群体的代谢组分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.多关联双亲染色体片段代换系(CSSL)群体的代谢组分析相关的知识,希望对你有一定的参考价值。

参考技术A

代谢组学分析结合高级遗传群体是研究植物代谢组学的有力工具。然而,水稻( Oryza sativa )代谢组的遗传分析主要是利用自然资源或单个双亲群体进行的。本文以三个具有共同轮回遗传背景的染色体片段代换系群体的剑叶为材料,对水稻的代谢多样性进行了分析。通过将ACC10(A/Z)、Minghui 63(M/Z)和Nipponbare(N/Z)基因组片段引进珍汕97构建的多个相互关联的双亲群体,对代谢数量性状位点(mQTL)进行了有效定位。共产生1587个mqtl,其中684、479和722分别来自A/Z、M/Z和N/Z染色体片段代换系群体。我们鉴定了367个mqtl的99个候选基因。此外,通过25个候选基因的联合连锁分析,特异性地产生了1001个mQTL。其中一些候选基因被验证过,如 LOC_Os07g01020 与吡哆醇及其衍生物的体内含量有关和 LOC_Os04g25980 与顺式玉米苷葡糖基转移酶活性相关。我们提出了O-methylapigenin C-pentoside(O-甲基芹菜素C-戊糖苷)新的生物合成途径,并通过精细定位证明 LOC_OS04G11970 编码了该途径的一个组分。我们推测methylated apigenin(甲基化芹菜素)可能会赋予植物抗病性。这项研究证明了使用多个相互关联的群体能够生成大量可验证的mQTL。在功能代谢组学的背景下讨论了这些结果,并讨论了各自代谢物下候选基因的特征。

大量代谢物由植物产生,其中许多是植物与环境相互作用所必需的。例如,水溶性B6组代谢物不仅在植物抗氧化防御中起作用,而且还可以减少重要的人类疾病的发生率,如高血压和糖尿病。同样,据报道,黄酮类等特殊代谢物参与了植物的生物和非生物胁迫耐受性,并对人类的慢性病和某些癌症具有防御的作用。因此,鉴于代谢产物的重要性,有必要进一步研究其在植物中的功能,探讨其对人类的价值。然而,据估计植物界产生了超过200000种代谢物,并且这些代谢物在不同物种中性质和数量存在很大的差异。因此,有必要更有效、更系统地揭示植物的代谢组。
代谢组学代表了实验系统生物学的一个主要工具,因此,它推动了对复杂遗传特征的理解,无论是单独使用还是与其他组学工具结合。近年来,利用多种代谢组学作为工具探索不同物种的代谢多样性以及通过研究种质资源来解释潜在的生物合成和调控途径方面取得了进展。尽管由于不明确的群体结构和有限的群体资源的限制,关联作图更为流行,已在多种物种(包括拟南芥、番茄、小麦和玉米)的单双亲分离群体中中进行了大量自然变异的mQTL分析。尽管有助于开发和高效地进行QTL定位),但在双亲群体中只有两个基因组的组合可能导致QTL定位的等位基因多样性不足。因此,这可能将mQTL的发现限制在双亲所表现出的多样性上。为解决这一问题,提出了玉米嵌套关联作图群体和多种作物的多个高级遗传互交群体作为多亲本群体解决方案。同时,已经证明利用多个双亲种群也可以提高作图的效率。
水稻是世界上最重要的作物之一,为全球人类消费者提供淀粉和许多其他营养物质。mQTL作图或全基因组关联研究结合代谢组学分析(mGWAS)已在水稻中进行,以解析代谢物含量调节的遗传基础。mGWAS分析提出了将水稻的两个主要亚种(籼稻和粳稻)的生物化学多样性归属于野生后代具有高度遗传多样性。鉴于代谢物与作物产量或营养之间的关系,预计mGWAS和mQTL研究将为理解水稻品种的生物化学多样性奠定遗传基础,并促进功能代谢组学方法应用于培育抗逆性增强和营养特性增强的优良品种方面。为了阐明这些重要代谢性状的遗传基础,我们在3个独立的CSSL群体中对281个代谢物进行了代谢谱分析。这些代谢物是由4个亲本产生的,包括2个典型的籼稻品种(明恢63[MH63]和镇山97[ZS97]),一个粳稻品种(Nipponbare[Nip])和一个野生稻(Oryza rufipogon ACC10),使用ZS97作为共同的轮回背景,其他三个基因型作为独立的供体。结果证明,利用三个相关的CSSL群体可以获得更高的mQTL识别率和更有利于通路的解释。此外,联合连锁分析被证明在绘制某些代谢物图谱方面更为有效。这些联合观察表明,来自不同亲本的群体可能加速代谢产物的基因鉴定和途径阐明。我们随后鉴定和验证吡哆醇(维生素B6的维生素之一)和顺式玉米素O-葡糖苷侧的候选基因。此外,推测了甲基化芹菜素(C-pentoside)产生的生物合成途径。因此,综合结果表明,在鉴定和验证代谢物以及鉴定参与其各自生物合成途径的基因方面,使用这种遗传设计策略能起到很好的促进作用。考虑到候选的代谢物潜在抗病活性,通过代谢分析将为进一步研究特定代谢物提供关键线索。这些研究最终可能试图通过增强植物代谢以确保未来水稻产量中发挥至关重要作用。

抽穗期旗叶采集自4个亲本系,即ACC10(野参)、MH63(籼稻品种)、Nip(日本品种)和ZS97(籼稻品种),以及利用这些亲本系(a/Z、M/Z和N/Z群体)建立的3个CSSL群体的个体,进行代谢谱分析。利用先前建立的广泛靶向代谢组学方法,在水稻旗叶中检测到281种代谢物(其中82种已被标准物质证实),包括29种氨基酸及其衍生物(AAs)、124种黄酮(Flas)、10种脂质(Lips),23个核苷酸,20个酚酰胺(PAs),30种植物激素及其衍生物(PHs)、36种多酚类(PPs)和9种维生素(Vits)。代谢多样性的主成分分析表明,四个亲本在其代谢组分上表现出重大差异。第一主成分和第二主成分(PC1和PC2)分别解释了总方差的41.7%和33.1%,且这些成分主要由不同的代谢物类别贡献:三个亲本(ACC10、MH63、Nip,与ZS97相比,Nip和ACC10中Flas和AAs的差异最大,而MH63中PPs的差异最大.接下来,我们对三个独立的CSSL群体中281种代谢物的变异系数(CV)进行了评估,结果显示,与A/Z和N/Z群体相比,M/Z系中相对较高的变异(CV为30%-90%)占比较低,表明这些代谢物在M/Z系间的变异较小。此外,与其余两个群体相比,M/Z系具有相对较高的代谢物遗传力。这三个CSSL群体的CV和遗传力的观察结果与MH63和ZS97之间的亲缘关系和M/Z群体的代谢多样性低于其他两个CSSL群体的结果是一致的。

在对不同品系进行代谢物分析之后,我们接下来根据CSSL群体的高密度图进行mQTL分析。共有684、479和722个mQTL分别对应于A/Z、M/Z和N/Z三个群体中的239、216和232个代谢物。去除彼此之间在1 Mb范围内的冗余mQTL,它们构成了1587个非重复位点。我们观察到多个热点的聚集,其中一些热点在不同的种群中是同域的。例如,43、42和54 mQTL被映射到染色体6上的8-12mb区块中,分别占A/Z、M/Z和N/Z群体中6号染色体上映射的mQTL总数的60.6%、45.7%和61.4%。其他热点主要定位在1号、7号和10号染色体上。

考虑到四个亲本系之间的变异是由不同种类的代谢分子引起的,可能不奇怪的是,各个CSSL群体的映射结果也有很大不同。在A/Z群体中,大多数代谢类(除了在N/Z系中最高的Flas;图2A)的mQTL映射更多,当考虑到每个代谢物映射的mQTL平均数时,AAs、PAs、PHs的映射结果可能更好。此外,更多的Flas候选基因是从N/Z系中特性获得的,而更多的AAs、PAs和Vits候选基因是从A/Z谱中获得的。AAs在A/Z群体和Flas在N/Z群体中的优先映射与相应群体中相应代谢物水平的增加变化一致。M/Z总体表现出较少的总mQTL,以及每个代谢物类较少的mQTL,并且在每个代谢物类中映射的映射间隔更宽。

除了分别利用三个定位群体(M/Z、A/Z和N/Z)外,还对整合群体MAN-Z(表明ZS97的染色体片段被MH63、ACC10和Nip的染色体片段所取代)进行了联合连锁分析,以提高定位结果。在此方法下,当与从单个CSSL群体获得的结果相比较时,每个代谢物类别获得更多mQTL,分辨率提高。这种趋势也反应在鉴定的每种代谢物QTLs的数量上,特别是Lips和PHs。例如,12mQTL被映射为来自三个CSSL种群的Lips的最高优势对数(LOD)值9,而54 mQTL被映射为联合种群分析后的最高LOD值19.5。类似地,分别从三个CSSL种群和联合种群mapping了70和140个PHs mQTL。仅通过该方法获得且在三个CSSL群体中的任何一个群体中都不存在的特定定位位点,进一步说明了整合群体能够增强定位性能。

总之,在这项研究中,证明了使用相互关联的双亲群体不仅能够提供更高分辨率的mQTL,而且能够改进上位性相互作用的分析,从而重建O-甲基芹菜素C-戊糖苷的生物合成途径,并认为该代谢物具有抗病活性。
由于初级代谢物的变化可通过同位素追踪,这对次级代谢物代谢来说并不容易,因此本文和Kliebenstein等人的研究中所述的方法可能对于目前植物次生代谢的通路非常有用,从而提高我们对植物代谢的基本认识。最终,更全面的代谢通路将有助于在作物改良。

Chen, J , et al. "Metabolome Analysis of Multi-Connected Biparental Chromosome Segment Substitution Line Populations." Plant physiology 178.2(2018):612.

关联映射级联操作关系维护 ---- Hibernate之一对多|多对一关系

叙:hibernate中的关联映射存在“一对多|多对一”关系和“多对多”关系;本章节轻风就关联映射的一对多多对一关系进行学习和总结记录;


Hibernate的关联映射之“一对多|多对一”关系

准备工作

需要有两个实体类以及实体类所对应的映射文件,由于之前创建的有Customer类以及其对应的映射文件,因此再创建一个实体类和其映射文件就好了(下面的代码涉及到马桑要学习的知识,即使看不懂可以先记着,下面会有详细的讲解记录);

创建LinkMan类
这个是联系人类,这个类是客户的联系人,也就是说一个客户下有多个联系人,这个联系人类就是“一对多|多对一”关系中的哪个“多”的一方;

package com.java.domain;
public class LinkMan {

    private Long lkm_id;
    private Character lkm_gender;
    private String lkm_name;
    private String lkm_phone;
    private String lkm_mobile;
    private String lkm_email;
    private String lkm_qq;
    private String lkm_position;
    private String lkm_memo;
    //关联映射的关联类
    private Customer customer;

            :
            :
            :
    // 省略的是类属性的get/set方法的构建

}

 

映射文件LinkMan.hbm.xml
映射文件之前有详细的介绍

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.java.domain">
    <!-- 建立类与表的映射 -->
    <class name="LinkMan" table="cst_linkman">
        <!-- 主键的配置 -->
        <id name="lkm_id" column="lkm_id">
            <generator class="native" />
        </id>
        <!-- 非主键属性的配置 -->
        <property name="lkm_gender" column="lkm_gender" ></property>
        <property name="lkm_name" column="lkm_name"></property>
        <property name="lkm_phone" column="lkm_phone"></property>
        <property name="lkm_mobile" column="lkm_mobile"></property>
        <property name="lkm_email" column="lkm_email"></property>
        <property name="lkm_qq" column="lkm_qq"></property>
        <property name="lkm_position" column="lkm_position"></property>
        <property name="lkm_memo" column="lkm_memo"></property>

        <!-- 多对一配置 -->
        <many-to-one name="customer" column="lkm_cust_id" class="Customer">
        </many-to-one>
    </class>
</hibernate-mapping>

新知识点讲解

根据代码说一下新增的知识点:

在创建的实体类中

  • LinkMan实体类中

在这个类中有一个private Customer customer;这个是创建一个关联映射中关联的类的对象,在这里创建一个Customer类对象是为了在操作数据进行保存联系人时能将关联的客户信息保存到联系人的数据表中;

  • Customer实体类中

这个类并没有写出来,与原来的数据相比需要添加一个private Set<LinkMan> linkMans = new HashSet<LinkMan>();这个是在Customer类中创建一个联系人LinkMan类的对象集合,目的和LinkMan中添加Customer类的对象一样;
分析:
其二者的书写是由其所处的位置决定,LinkMan类是“一对多|多对一”关系中的“多”的一项,多个LinkMan才对应一个Customer,因此在LinkMan类中只要创建一个Customer类就好了,反过来,在Customer类中则需要创建的是一个集合,方便一个Customer对应多个LinkMan;

 

映射文件配置分析

  • LinkMan的映射文件LinkMan.hbm.xml
<!-- 多对一配置 -->
<many-to-one name="customer" column="lkm_cust_id" class="Customer"></many-to-one>

只有一个标签<many-to-one>翻译成中文就是“多对一”,关于映射文件中的关联映射的配置都在这类配置中了(有<one-to-one>、<many-to-one>、<many-to-many>、<one-to-many>),本章节我只学习了“多对一|一对多”关系,因此用到的只有<many-to-one>、<one-to-many>这两种,下面就先对多对一的配置进行学习:
在标签中有三个标签,分别是:

属性名属性值解释
name customer LinkMan类中关联的类在LinkMan类中创建的对象名
column lkm_cust_id 存放关联对象相信息的属性名(在数据表中就是列名)
class Customer LinkMan类所关联的类的全类名(我只写了类名,因为我在hibernate-mapping标签中配置了package的值)
 
  • Customer实体类的映射文件配置

在Customer.hbm.xml中配置的代码如下所示:

<!-- 一对多配置 -->
<set name="linkMans">
       <key column="lkm_cust_id"></key>
       <one-to-many class="LinkMan"/>
</set>

这一段就是配置关联映射的配置;
总共有三个标签,其中各有各自的属性、属性值,详细介绍如下:

标签名属性名属性值解释
set name linkMans Customer类中关联的类在LinkMan类中创建的对象名(因为Customer类中创建的LinkMan类对象是用set集合创建的,因此要用set标签进行配对)
key column lkm_cust_id Customer的主键作为外键被LinkMan的哪个属性(列)所引用;
one-to-many class LinkMan Customer类所关联的类的全类名(我只写了类名,因为我在hibernate-mapping标签中配置了package的值)

在核心配置文件上进行配置

这个也就是在核心配置文件中引入两个类的ORM源路径,如下图所示:
技术分享图片

测试

测试代码如下所示:

package com.java.demo;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import com.java.domain.Customer;
import com.java.domain.LinkMan;
import com.java.hibernate.Utils.HibernateUtils;

public class Demo1 {
    @Test
    public void demo1(){
        // 1.使用工具类创建出session
        Session session = HibernateUtils.openSession();
        // 2.开启事务
        Transaction bt = session.beginTransaction();
        // 3.分别创建Customer类、LinkMan类的对象并写入数据
        Customer c = new Customer();
        c.setCust_name("喜羊羊与灰太狼");

        LinkMan L1 = new LinkMan();
        L1.setLkm_name("喜羊羊");
        LinkMan L2 = new LinkMan();
        L2.setLkm_name("美羊羊");

        // 在Customer类对象中保存其对应的联系人信息
        c.getLinkMans().add(L1);
        c.getLinkMans().add(L2);

        //在LinkMan类对象中保存其对应的客户信息
        L1.setCustomer(c);
        L2.setCustomer(c);

        session.save(c);
        session.save(L1);
        session.save(L2);

        // 4.提交事务
        bt.commit();
        session.close();
    }
}

注意:在此关联映射中,需要关系声明,这个声明是需要两方都进行的,代码就是下面的:

// 在Customer类对象中保存其对应的联系人信息 -- 一对多的插入关系(关系声明)
c.getLinkMans().add(L1);
c.getLinkMans().add(L2);

//在LinkMan类对象中保存其对应的客户信息 -- 多对一的插入关系(关系声明)
L1.setCustomer(c);
L2.setCustomer(c);

运行@Test后数据库中的对应的表中会出现对应的数据,如下图所示:
客户表中的数据:
技术分享图片
联系人表中的数据:
技术分享图片

重点看联系人表中的“lkm_cust_id”这列中的数值与客户表中的新创建的数据的id是否一致;


进阶操作

级联操作

在进行操作时会发现在数据的save()方法保存时存在缺陷,比如,新建一个客户并且客户下有N个联系人需要添加进去,那么在进行session.save(“linkman1”);的操作时需要写N次才行,因此,为了减少此代码的编写量,有了级联操作;

具体用法:
在客户和联系人的ORM文件中配置且配置一样,具体配置如下:

<set name="linkMans" inverse="true" cascade="save-update">

既是:在set标签中添加一个cascade属性;
cascade:级联属性

属性名属性值解释
cascade save-update 配置此值是代表的是级联保存更新
cascade delete 配置此值是代表的是级联删除
cascade all 配置此值是代表的是以上两种都包含

在LinkMan的映射问价中没有set标签,只有一个<many-to-one>标签,因此直接写在这个标签中就好;
当配置完后无论从哪一方进行数据保存时,另一方的亦可以被连带保存;

注意
1) 在联系人进行级联删除时,必须要在客户的映射文件中配置级联删除的功能,不然会存在被级联删除的客户下的联系人仍存在,这样会照成数据垃圾;
2) 一般情况下使用的是save-update这个设置,目的是为了保护数据的安全性,防止被误删;

关系维护

在hibernate中关系的维护默认是一对多和多对一都要进行维护,这是没有必要的,只要有一方进行维护就好,两次的话虽然在这个关系中不会报错,但是浪费资源,并且在多对多关系中会报错(下一章节学习的),因此,我们可以使用inverse属性进行设定是谁来维护;
配置维护方的属性是inverse;其属性值只有false、true这两个,inverse译为反转,如果设置为true,意味着这个实体不负责进行维护关系,如果为false则是负责关系的为维护;
配置的位置和cascade配置位置一样,如果在Customer类的ORM文件中配置了此设置并将其属性值配置为true的话,这就意味着Customer类并不负责关系维护,因此,默认的就是LinkMan类负责(在LinkMan类的映射文件中不要再进行设置);一般情况下只需要一方负责,约定俗成的是由“多”的一方来负责维护;
另外,以上面的代码为例,Customer类代表的是客户,客户不负责对关系的维护后在代码的实际编程中也会有所体现,可以省略掉Customer的关系设置,只由LinkMan类来设置关系就好,具体如下所示:
技术分享图片

pass:本章节的“一对多|多对一”关系学习就到这里了,下章节会对“多对多”关系进行学习记录;


《本章完》





















以上是关于7.多关联双亲染色体片段代换系(CSSL)群体的代谢组分析的主要内容,如果未能解决你的问题,请参考以下文章

构建基因文库的目的和意义?

路径规划基于遗传算法求解多旅行商问题matlab

双亲委派机制JVM:类加载机制深度剖析 - 第7篇

uniform crossover(均匀交叉),遗传算法(Genetic Algorithm,GA),python

uniform crossover(均匀交叉),遗传算法(Genetic Algorithm,GA),python

轮盘赌算法及其实现