分享

我的生信之路3

 微生信生物 2023-03-24 发布于北京

写在前面

上一次写我的生信之路是在2019年底 距离今日已经三年有余了。时至今日在生信这条路上任然继续前行。这次笔记相比上一篇,已经过去了三年多了,中间间隔了一个疫情。今年,疫情终于慢慢过去了。这两天在出差,零散的时间总愿意看看窗外的风景和广袤的原野。因此,我终于有了写“我的生信之路3”的精力。(科技小院他们每天都能坚持写日志,一个月那就是厚厚一本,者相比就是积累的力量)。

相比于我的生信之路我的生信之路2,这次是不同的:

  • 时间跨度长,相关经历较为完整;

  • 完成博士生到博士后的转变,转变前后,甚有不同;

  • 19年底到23年,我增加了几篇小论文,所以这次我站在科学研究的角度谈论这个话题;

  • 19年底到23年,我已结婚,成家,小棉袄也一岁多了,这一经历夹在其中,时间和精神上必然不同。

  • 19年底到23年,博士导师和博后合作导师沈其荣教授升级为院士,带领我们进行了突破。

  • 19年底到23年,疫情当道,许多人的实验受到了或多或少的影响,但是我几乎没有—以数据驱动的科学研究,验证实验集中在实验室内,不依赖与大田和外部基地。

  • 19年底到23年,袁军老师完成了从博后—讲师—副教授—院士助理的变化,带领我们发表多篇高水平文章,基本确定以成果为导向的科研小组的架构。

明确定位

在一开始我就该确定,我学习生物信息学的目的是什么:为了科研服务。所以在这个框架下学习生物信息学是极为不同的。例如,我的学习路线是:首先学习扩增子微生物组数据处理—代谢组学数据处理—宏基因组学数据处理—转录组学数据处理—培养组学数据处理—其他组学和分析·····,但是如果真正高效快速学习生信,应该是转录组—扩增子—宏基因组—代谢组·····。为什么不同呢,因为转录组是最先开始发展的,技术较为完善,分析体系相对较为简单也极为完善,所以以此为开始,随后着手进行相对复杂的组学学习。

但是我的路线却要先进行扩增子微生物组组学数据处理。因为这是我研究最为需要的。16年入选,我的大方向就是土壤微生物与植物健康,一直在做偏重于土壤微生物生态学的研究。

所以在16年便开始做扩增子微生物组数据分析,其实当时随即开始的还有非靶向代谢组学的处理,因为袁军老师是做化学的,所以相关研究中涉及了这些内容。随着时间推移,这些组学在19年就做的差不多了。我们不得不进行微生物群落功能研究,因此我增加了宏基因组的学习。在研究根系分泌物的基础上进一步研究植物转录,所以又增加了植物转录组的学习。19年去北京拜访了白洋老师,因此,在第二年开始了做高通量纯培养组。没想到这样走来已经三年了,以科学研究为目的的学习,让生物信息学手段回归工具属性,作为一项强有力的工具辅助科学研究。

19年底

19年是困难的,因为那一年疫情来了,我们的科研生活都收到了很大的影响。我记得当时疫情下,在家里待到了三月中旬,后面才逐渐返校。在这期间许多人种植的苗子(盆栽实验)都受到了影响,损失了许多。我记得当时我用的还是戴尔灵越3570这台笔记本,虽然性能不是最佳,但是当时这台本子可以选择增加到32G内存,我就毫不犹疑增加到了。这对于我们做数据的来讲太好了,因为很多工具依赖内存,需要内存,尤其是使用R语言。

这段时间的疫情,让我开始反思,我的生信学习,目前该作什么?静下心来的思考是可怕的。当时我想清楚了,要将自己学习的工具,所写的代码都整理一下,封装函数等。因为长期以来,使用的代码太多了,找起来的不方便。我是以R语言为基础进行分析,所以相关代码整理成一个R包最为合适。因此就逐渐开始了。 经历过16到19年这三年的摸索,终于在19年形成了微生物组分析框架。这个框架就是以S4类对象phylsoeq对象为基础,进行微生物组数据的封装,在这个基础上上完成所有的微生物组分析。后续开发的ggCLusterNet就是沿用这个框架。目前我所整理的微生物组分析最完善的教程三人成师系列也是用的这个框架。点击查看phyloseq

说起来写R包,其实我至今都是业余的,因为大量的工作做在了如何让这个功能更完善,分析更加好用上,而没有让这个R包更好安装,依赖更少,更加符合使用规范。记得我在18年参加广州的微生态会议,当时琛哥和一位女士交谈,提起了我,说我这个师弟挺会做分析的,后面可以交流交流。那女士说:“那你写过R包吗?”,我说:“没有,准备写一个”。没想到一个准备就到了2020年春天了。

春天是播种的时刻,当时我对我的两个部分内容进行R包框架的书写:微生物组分析流程和网络分析流程;这两个R包也就是我毕业论文中的EasyMicro和ggClusterNet。但是到今天ggClusterNet已经和大家见面了,另外一个一直没有见到,其实还在我这里吃土。但是当时确实是先做微生物组分析流程的。在做的过程中发现微生物组分析流程十分庞大,设计大功能当时已经达到了40个以上,而ggClusterNet只有10几个功能。其次微生物组分析流程内容修改较多,更新也较多,所以根本无法短时间内出来。所以我就选择了ggClsuterNet,继续完善。

当时是微生信生物群里面有人需要用基于模块化展示的网络。我心里想,这东西就是将点分散开来,连上线不就好了嘛。所以当时就简单写了几十行代码,并将成图发给了群友。后来基于模块化展示网络的工作就逐渐开始了,逐渐开发了多个基于模块化展示网络的算法,这也成为了ggClusterNet的框架。当时做这件事情得到了袁军师兄的大力支持,这也是我顺利完成的关键所在。

其次,当时刘永鑫老师在开发EasyAmplicon包,我便参与了这件事情中,负责R语言部分的函数写作。但是无论是那个,都极大的提升了我对于分析问题的解决能力。

转眼之间到了20年中旬

这个时候,the ISME joural工作快见刊了。这段时间进行了好几篇文章的修改,例如 ISME, HR,SEL,BMC PB,所以学习任务有些慢下来了。我提起来这件事情的目的还是强调我学习生信的定位:为了科学研究。所以当科研成果在等着我去完善的时候,自然就要腾出来精力。其实修改文章,将我的时间分割开了,因为修改文章有具体的时间节点。有了更多的零散的时间,让我学习了更多的技能,例如非靶向代谢组学分析R包,各种可视化图形的绘制,文章上新出现的分析技术和展示方法等。印象深刻的就是那个lefse分析的R语言重现过程:我记得当时有位Y叔的朋友按照ggtree的旧结构写出了树状结构,但是那个R包不是很好用,对于各种数据的适用性也并不是很好,所以当时我依赖这个R包进行分析出现了许多的问题。在随后的日子里我对这个函数进行修改,不断地用多种数据进行测试,最终去除了对这个R包的依赖,完成这个lefse分析,具体包代码公众号上面有的。

随后的日子,我继续学习,当时学到了宏基因组上来。记得19年开始宏基因组学习从刘永鑫老师的教程开始的。后续持续的学习,20年发表的science的甜菜宏基因组让我如获至宝,学习了这个大概两千行的宏基因组数据处理流程,几乎囊括了全部宏基因组的分析。但是在逐步的分析过程中我发现R语言处理这些数据有些慢。这对于宏基因组数据来讲几乎是致命的。所以当时我开始学习的python,学习pandas处理,随后有入手了numpy。当时学习了半年后确实可以解决很多问题,但是有些数据处理在作图之间,python的作图我还不想用。因此在随后的日子尝试使用data.table进行大数据处理,速度也可以。后面黄天元开发了tidyfst包,我使用后发现借鉴的data.table的快速,和tidy的优雅,所以成为了我主要学习的数据整理工具。

个人学习生信是痛苦的,但是我们生活在这个网络时代是幸运的。分享自己的学习笔记的人太多了,这让我们的学习有很多参考,重要的是不再孤独。当然,如果身边有一个学习相同内容的人就更好了。很幸运有个师弟喜欢搞这个。并且对python及其感兴趣。我记得当时我们使用爬虫爬取了微生物主要期刊的文献,全部SCI的影响因子,爬取大量的其他信息等,甚是有趣。

在20年冬天 ISME, BMC PB,HR等文章都出来了,这些文章有些不错,有些弱一些,但是好歹都是我的第一批成果。也就是这批成果进一步奠定了后续的生信学习之路。

时间很快就到了20年冬天了

我在当时还是比较有意思的,当时我用R语言绘制圣诞树,使用R语言绘制钢铁侠等等做了一些有意思的事情,也是因为当时几篇文章出来了,想歇歇。但是分析技术可是不等我的,比如patchwork的1.0版本的推出,这对于拼图而言是个更好的工具,结构化的拼图让元素可以按照积木样式组合,着实惊讶到了我(点击查看)。当时正值寒假,我记得我们也是从21年开始进行每年的年终总结(21年年终总结)。

这段时间学习较为零散,我在这段时间内开发了花瓣图,学习了ggplot主题系统,修改了EasyStat包,学习了截断坐标轴gg.gap包,甚至更新了一下origin的作图教程,开始阅读英文微生物组分析书籍(点击阅读)。

但是还是做了一件系统的事情,就是这个science组合图形的开发,这个图形有几个人开发过,包括厚哥,与我是好友,我们都进行了开发,只是目前在ggClusterNet中我突出了网络的内容,并没有推荐这个功能。但是要知道ggClusterNet中science组合图表的功能也是很强大的(点击查看)。这个东西其实很简单,就是做一个热图矩阵,然后加上连线即可,所以用于展示一个系统内的相关和系统外的相关。按照这个框架我设计了science组合图表。也就是在这个框架下,我开始构建基于模块的网络展示方式,才有了后来的ggCLusterNet众多漂亮的可视化布局算法。

日子过的是快的,21年春天来了

这段时间我学习的甜菜宏基因组分析流程也接近结束了(点击查看)。我也按照自己的心得写了宏基因组专辑的学习笔记(点击查看)。这篇文章发表在science,而且仅仅只有10个宏基因组样本,可想而知,这个分析流程有多强大,还能在5G样本中bin出来高质量的单菌,所以在当时是非常值得我学习的,整个代码也达到了了惊人的2000行左右。我记得在20年冬天就在学习了,我连续进攻了三次,整整三次,一次一个星期的学习时间,才完整学习完成。整个流程涉及到30多个工具的安装,十几个数据库的配置,整个工作有些软件和工具过时了,我根据新的软件重新进行流程回补,尽量保证其完整性。在随后的日子里,我连续更新了十几期。

等到21年暑假,我开始准备我的博士论文第四章内容,当时是在分析非靶向代谢组学数据。然而我在分析的时候马上遇到了之前没有遇到的问题:机器学习模型无法很好建模,这部分内容是从根际代谢组数据回来正式开始的,由于随机森林模型在之前研究中展示的较好效果,我继续学习了十多种机器学习方法,总体来讲随机森林运行成本和效果都比较好,所以后续我使用了随机森林对代谢组数据进行的分类建模。本来两分类的数据都是比较好建模的:要么健康,要么发病;但是很遗憾,模型区分并不好,准确度也就是60%,按照我们蒙的正确率算是50%的话,这个结果也就近似于蒙的。这让我停滞了好几天,在停滞的期间内仍然继续学习相关技术,我清楚的记得,当时学习到了微生物分析过程中的核心微生物和稀有微生物,这些概念我若有所思。因此,我在代谢组上尝试套用这个概念,按照相对丰度进行分类,也就是:大量,中间,少量,这三个标准分为了三大类。然后每个部分的阈值逐渐扩大,进行机器学习建模。终于整个过程在迭代到0.03和0.01的时候,出现了变化。此时,大量和稀有代谢物模型正确率均超过了90%。也就是说超过3%代谢物,和丰度低于1%的代谢物可能发挥着重要作用。而处于中间含量的代谢物无论是加到大量或者稀有代谢物群体中都无法实现准确的建模。当解决了这个重要分析问题之后,这些问题解决了。这篇文章在21年底搞定了,如今发表在Microbiome上。

21年就要结束了

随着年龄增长,免不了事情越来越多,像我们这样的年轻总是避免不了谈婚论嫁生小孩。这段时间,我女儿出生了,这让我的时间减少了许多。还有就是22年六月份就要毕业了,我当时虽然有很多结果可以完成毕业论文,但是我先前设定的框架始终是不愿放弃。因此我开始了毕业论文第五章的完善。这个研究已经五年啦,为了让这批数据出来,我在分析工作上绞尽了脑汁。因为之前审稿人经常问我们:你们找的关键微生物我不认同,要么就是你们找的关键微生物是否可以代替总体?我清楚地知道他们问的是对的,我确实没有很好的从总体过渡到微生物OTU上来,当时我确实也陷入了困惑。心中思绪万千,想找找前辈看看怎么解决。我想当年发表在PNAS上的水稻微生物文章这篇文章的作者是厉害的,在我学习了他近五年的成果后,我对此人感到深深敬佩,确实从他这里找到了解决问题的办法。也就是从群落,分析到OTU的连贯性的分析体系。这里偏重故事,具体方法可以看第五章文章23年3月18日上线的New Phytologist。

这一年是高兴的,年底院士评选结果出来后,我们大组都很高兴。并且当时写了一篇恭喜沈老师当选院士的推文,阅读量目前还是本公众号最佳。这件事情影响下,我心爆棚。22年初很早就来到了学校开始进行毕业论文的撰写,也有心继续在本组进行博士后深造。当时我虽然内容全部搞定了,但是毕业论文还未开始写。所以这段时间就花费到了毕业论文上来。生信方面似乎没有大的突破。

22年春天到了

正值春夏交替,我的毕业论文完成度也还可以,这段时间也总结了自己这些年来的分析成果,发现ggClusterNet包是时候发表了。这个想法确定,正好刘永鑫老师在组织iMETA的第三期。我便进行了投稿。在投稿之前完善了包中对于跨域网络的支持,网络一体化分析的支持。不负重托,ggClusterNet终于在当年6月份被iMeta接收,那时我也已经毕业入站了。

去年暑假期间,也就是22年夏天,是难过的,毕业花费了大量的时间,因此家庭变得一团糟,心中愧疚甚多。7月份到10月份,家庭,老婆,女儿方面我多花了些时间。老话说得好,攘外必先安内。这样持续到了22年秋天。在这期间我虽然花费在分析上的时间少了许多,但是思考却没有停下来。沈老师成为了院士后虽然没有要求我们怎么样,但是潜意识里面还是提高了对自己的要求。新环境下要发表更好的文章,开发更好用的工具。因此这段时间经常谋求在已有的框架下提高文章的档次。

记得那是22年的夏天,袁梦婷老师的NEE发表后我开始学习其中的网络分析内容。重点学习了其中的网络稳定性和网络模块比对的内容。其实网络模块比对在之前是已经有的,用于网络之间的比对,方法用的是fisher的方法。这里袁老师将这个方法用于比较网络模块之间的联系也是很合理的。这篇文章介绍了物流中网络稳定性的计算方法,让我越来越感受到,做生态,如果在无法验证其深入的机理的时候,那就从多个角度对其观点进行论证。这些网络的方法我都进行了学习,并且整理代码,加入到了ggClusterNet中。下个版本如果要继续发表,得找找袁老师聊聊。我还在ggClusterNet中模拟了模块关系的展示方式,目前在我最新发表的New Phytologist(点击查看)中可以看到,后续会出一个更新版本。供给大家使用

22年底

既然主题是我的生信之路,似乎前面在其他事情上扯的有点多了,但是也免不了,因为毕竟人就是一个整体,各种事情总需要一个权衡。22年底事情朝着好的方向发展。如果说一个毕业,加上家庭孩子刚出生,让我应接不暇,那么年底这些事情的影响算是消散了许多了。我得以回归做一些新的学习。

本来专注于继续开发宏基因组后续的分析内容,但是之前落下的一个内容快到截止日期了:R语言在微生物组分析中的应用;这个主题我们用来写综述,所以年底的时间给了这个综述大量的时间。我的突破性的学习编程了温故知新。

我回顾了这六年来在微生物组分析过程中的各种R包,各种方法,不整理不知道。当我将目前几乎R语言中可以运行的全部微生物组分析功能进行运行之后发现,一共需要350个R包。也就是说从新安装的R语言开始,,到我们完整跑完整个流程,一共需要大约350个R包。基于这些R包和特征,我们进行了综合整理和分析,形成这样一篇综述。这个工作持续到了23年2月底。看上去时间跨度不是很长,内容也很熟悉,但是对我的基金书写造成了很大的压力,唉,成年人啊,总是在同时面临着多种压力,习惯就好。但是事情做好是重要的,通过这个内容我进一步整理了微生物组分析的各个部分,对目前存在的问题进行了梳理,得到了一下结论:1. 微生物组分析目前工具很多,方法也有很多,但是没有标准,基于生物信息学的东西也不是天外来物,也是需要标准的。例如,什么距离算法,什么排序算法,什么多样性算法,相关分析算法等。2.微生物组分析成为了一项常规技术,与其结合的组学和技术越来越多,以微生物为核心或者中介的多组学多指标分析框架变得更加重要;3. 随着微生物组测序越来越便宜,常规实验设计更多的升级为时间和空间序列,针对时空组的微生物组数据分析越来越被需要。

现在

如今已经是3月份了,度过了艰难的基金写作期,要开展一系列新的工作了。春天是美丽的,这几天南京农业大学郁金香甚是好看,二月兰和梨花也都相继开放。然而却下雨了,这两天也没好好看看,就到了要出差的时候了。其实出差是好的,虽然旅途奔波,但是精神上压力并没有那么大。享受这个过程吧,回来之后将继续开展相关内容。

这里我进行一个短暂的展望。如今我学习微生物组学分析技术已经很长时间了,工作重点从扩增子转入了时空组,转入了多组学整合,转入了算法开发等。我一直以来都在暗示自己,生物信息就是个工具,我们如何使用这个工具解决科学问题才是最为关键的,也是我最关心的了。即使是开发算法,也是找到需求点,才能做出来有用的东西。只有不断做有用的东西,学习才能长久。

如今科研环境发生了很大的改变我们也成长了好多年了。有些事终究是要变化的。例如:我们不再关注基础技术的学习,尤其是微生物组的,不在关注之前已经关注的主题,例如常规绘图,改图,画示意图等。

根际互作生物学研究室 简介

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多