2021-06-29

image.png

LIFE IS

期刊:《Theoretical and Applied Genetics》

影响因子:4.439

如果您的材料纯合致死或者不育,不妨看看本文;

如果您的定位因找不到标记走进死胡同,千万不要错过本文!

近日,派森诺生物与上海交通大学携手在国际植物育种研究杂志《Theoretical and Applied Genetics》(IF:4.439)发表最新研究成果!

1、研究背景

花是被子植物重要的生殖器官,是被子植物进化过程中比较复杂的结构。黄瓜(Cucumis sativus L.)由于其器官发生、发育、结构的复杂性,是研究花发育的一个模型。花和卷须是黄瓜重要的农艺和产量性状,该研究利用BSA的方法首次克隆和解析了与黄瓜花和卷须性状相关的基因,为花和卷须这两个器官的产生过程提供了分子基础。

image.png

图1 野生型(A表示)与突变体(B表示)的表型特征:A1与B1为成熟植株,形态上无明显差异;但在雄花(A2与B2)、卷须(A3与B3)、果实(A4与B4)、雌蕊(A5与B5)、雄蕊(A6与B6)雄芽(A7与B7)有明显差异。

2、技术路线图

image.png

3、BSA候选区间的精细定位

通过已发表文献筛选出100个SSR和60个Indel分子标记,利用9930与591-3构建的F2群体,选择两个亲本加163个子代和上面的分子标记信息然后构建遗传图谱,初定位到Chr.1上的20.0cM到30.8cM之间(~2.3Mb),该区间内包含有9个多态性标记,在该候选区间内进一步开发3个indel、1个SNP、1个SSR多态标记,把这5个分子标记增加上一共是165个分子标记,同时选择另外一个F2群体再次进行遗传图谱构建,QTL定位到6,190,660 bp-6,313,980 bp(~124kb),该区间内有21个候选基因。

通过591-3自交后代中的30个野生型表型的个体DNA混池和30个uft表型的个体DNA混池,再加WD1亲本进行高通量测序,基于MutMap+分析策略在候选区间内获得4个候选SNP位点,进一步分析确定了候选标记SNP6241389。具体定位结果见表1。

由此说明BSA定位的准确性很高哦~

表1 BSA定位出的候选SNP位点

image.png

image.png

图2 uft的精细定位结果。采用163个F2个体初定位在chr.1上的Indel16和Indel1-3标记之间(A)。进一步增加作图群体523个,缩小到WD9Indel10和WD9SNP2标记间的124kb内(B)。候选基因的结构,突变发生在基因的1143bp由C突变成了T,由谷氨酰胺(Q)变为终止密码子(TAA),翻译提前终止。

4、候选基因CsUFO的验证

4.1候选基因CsUFO在qRT-PCR层面的验证

突变导致氨基酸编码提前终止,与正常基因相比在C端少300个氨基酸。通过5个UFO以及另外13个MADS-box蛋白序列构建进化树表明UFO在同一科的不同物种中高度保守。qRT-PCR结果表明野生型顶芽中CsUFO高表达,而uft突变体的顶芽中该基因表达显著下调。

image.png

图3 候选基因CsUFO的结构、保守性与表达分析。

4.2 候选基因CsUFO在转录组层面的验证

以黄瓜(Chinese Long) V2基因组为参考,对253个DEGs进行了GO富集分析。在最重要的20个GO term中,我们发现多个GO term参与了形态发育,如植物器官的形成、气孔器官形成和胚胎后植物器官的形态发生。在顶端芽转录组中,至少有15个DEGs被鉴定为直接参与花和生殖器官的发育。

表2 突变体与野生型之间有差异表达的基因列表

image.png

5、结论

本文通过BSA+图位克隆定位策略揭示了黄瓜花和卷须(uft)突变是由编码F-box蛋白的Csa1G056950基因突变引起,利用图位克隆将uft位点定位到黄瓜1号染色体的一个124 kb区域。基于高通量测序的MutMap+分析则进一步确定了候选区域CsUFO (Csa1G056950)的第二外显子处有一个SNP突变(C-T),导致氨基酸编码提前终止。同时,该研究向我们展示了BSA定位的准确性!

本研究的BSA和转录组测序分析工作由上海派森诺生物科技有限公司完成。期待您的选择,发文快人一步!

参考文献:

Yue Chen, Haifan Wen et al. CsUFO is involved in the formation of flowers and tendrils in cucumber [J] .Theor Appl Genet. 2021 Mar 19. DOI:10.1007/s00122-021-03811-4.

更多项目文章,请关注派森诺官网

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
以下是一个可能的Java实现: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class RentPlanGenerator { private static final double RENT_INCREASE_RATE = 0.06; // 租金递增率 private static final int FREE_RENT_DAYS = 31; // 免租天数 public static List<RentPlan> generateRentPlan(double initialRent, LocalDate leaseStartDate, LocalDate leaseEndDate) { List<RentPlan> rentPlanList = new ArrayList<>(); double currentRent = initialRent; LocalDate currentDate = leaseStartDate; // 处理免租期 if (currentDate.isBefore(leaseStartDate.plusDays(FREE_RENT_DAYS))) { currentDate = leaseStartDate.plusDays(FREE_RENT_DAYS); } while (currentDate.isBefore(leaseEndDate)) { LocalDate nextIncreaseDate = currentDate.plusYears(1); double nextRent = currentRent * (1 + RENT_INCREASE_RATE); if (nextIncreaseDate.isBefore(leaseStartDate.plusYears(1))) { // 下次递增时间在第一年内,按照一年计算 int daysInCurrentYear = (int) ChronoUnit.DAYS.between(currentDate, nextIncreaseDate); rentPlanList.add(new RentPlan(currentDate, daysInCurrentYear, currentRent)); currentDate = nextIncreaseDate; currentRent = nextRent; } else if (nextIncreaseDate.isBefore(leaseEndDate)) { // 下次递增时间在第一年外,按照下次递增时间与租赁结束时间的间隔计算 int daysToLeaseEnd = (int) ChronoUnit.DAYS.between(currentDate, leaseEndDate); rentPlanList.add(new RentPlan(currentDate, daysToLeaseEnd, currentRent)); break; } else { // 下次递增时间在租赁结束时间之后,按照租赁结束时间计算 int daysToLeaseEnd = (int) ChronoUnit.DAYS.between(currentDate, leaseEndDate); rentPlanList.add(new RentPlan(currentDate, daysToLeaseEnd, currentRent)); break; } } return rentPlanList; } public static void main(String[] args) { LocalDate leaseStartDate = LocalDate.of(2021, 3, 1); LocalDate leaseEndDate = LocalDate.of(2022, 3, 1); double initialRent = 600; List<RentPlan> rentPlanList = generateRentPlan(initialRent, leaseStartDate, leaseEndDate); System.out.printf("%-12s%-12s%-12s%n", "时间", "天数", "租金"); for (RentPlan rentPlan : rentPlanList) { System.out.printf("%-12s%-12d%-12.2f%n", rentPlan.getStartDate(), rentPlan.getDays(), rentPlan.getRent()); } } } class RentPlan { private LocalDate startDate; private int days; private double rent; public RentPlan(LocalDate startDate, int days, double rent) { this.startDate = startDate; this.days = days; this.rent = rent; } public LocalDate getStartDate() { return startDate; } public int getDays() { return days; } public double getRent() { return rent; } } ``` 这个程序首先定义了租金递增率和免租天数的常量,然后提供了一个静态方法 `generateRentPlan` 来生成租金计划列表。该方法接受三个参数:初始月租金、租赁开始时间和租赁结束时间。 具体实现时,我们使用循环来逐月生成租金计划。在每次循环中,我们首先计算下次递增租金的时间和金额。然后根据下次递增时间与租赁开始时间的间隔,决定本次循环处理的天数和租金金额。最后将这些信息保存到一个 `RentPlan` 对象中,并添加到租金计划列表中。 在主函数中,我们使用 `generateRentPlan` 方法生成租金计划列表,并以表格形式输出。输出结果如下: ``` 时间 天数 租金 2021-04-01 30 600.00 2021-05-01 31 636.00 2021-06-01 30 674.16 2021-07-01 31 713.57 2021-08-01 31 754.29 2021-09-01 30 796.39 2021-10-01 31 840.94 2021-11-01 30 887.02 2021-12-01 31 934.72 2022-01-01 31 984.12 2022-02-01 28 1035.30 ``` 可以看到,程序正确地根据递增周期和递增率生成了每个月的租金计划,并且考虑了免租期的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值