我要写个生信软件!自救!毕业~

剑锋

上海交通大学医学院附属瑞金医院、医学基因组学国家重点实验室在读研究生(2015年入学)

主要感兴趣的研究方向:

数据可视化;高通量测序数据分析方法开发;临床检测相关的软件和数据库的开发;白血病相关的发病机制研究;公共数据挖掘。

已开源的工具: configr 、 BioInstaller 、 iseq 、 ngstk

生信技能:两年生物信息学习和实践经验,熟练使用Adobe的系列工具(PS/AI/PR/AE, 本科以及研究生阶段担任学生会宣传部部长)、熟悉Linux服务器运维、熟练使用git、熟悉网页以及数据库服务的开发及其运维、有Python、R、PHP、Javascript相关的实际项目开发经验、熟悉各类高通量测序数据(WGS、WES、RNA-seq、CHIP-seq)分析流程、参与多个大样本测序项目分析工作。

下面是我咨询剑锋关于”如何开始写生信软件的?”问题的回答:

  • 首先是要确定哪些功能别人已经做过了,然后确定他们的局限性在哪里;

  • 写一个新工具或者软件包之前 可以参考一下类似的包或者工具;

    (开始确定一个要实现的功能,然后去使用、调查各个软件,总结优缺点,明白自己要做啥创新)

  • 你看过其他人写的软件包的源代码没?看懂是先进步 然后是改动和添加功能;

    (如果有一些是python写的怎么办,看不懂也得看,去学)

  • 先从一些小功能的程序写起 熟悉一下软件开发的整个流程

    (从写shiny小程序开始,学习R编程)

  • 现在 开发工具或者软件 一般是三种模式:

    基于别人的框架开发特定工具;

    自己写一个框架然后开发相应工具;

    直接写一个工具

  • 开发基于已有数据库进行宏基因组注释提高宏基因组数据注释率:可以考虑收集已经发表的一些文献附录数据 做一些数据库 ,例如COSMIC就是比较典型的;

  • 如果实验室计算资源多,可以整合以及发表的同样类型的数据,做一些整合分析方法、算法开发;

大师兄

自家实验室的师兄,博士论文用朴素贝叶斯算法写了一个分类器。师兄毕业去美国读计算机硕士,不知道啥方向了。其实自救写软件的想法就是来自师兄的,师兄就是靠自己写了软件发文章毕业的,虽然自救后还是7年毕业。

下面是我问师兄”写一个软件是如何想到用这种算法的?“问题的回答:

算法肯定不是凭空想的,要了解算法领域的知识才能知道用什么。

演林师弟

比我低一年纪,做优化算法工作,现在已经完成一个宏基因组分箱算法优化的工作,开始着手做另外一个关于蛋白质研究软件算法的工作(他问我的蛋白质问题,我都不会,比如蛋白质的三维结构是什么?),打算用支持向量机写。

下面是师弟对”写一个软件是如何想到用这种算法的?“问题的回答:

根据问题去找用什么算法,看看这个问题或者相近的问题大家都是用什么方法解决的,查文献。优中选优,然后用自己决定较好的和别人比较。

Jimmy师兄

基于R和shiny写了一个web小工具,鼓励我做整合性的工作,类似 TRAPR: R Package for Statistical Analysis and Visualization of RNA-Seq Data 、 DEGreport: Report of DEG analysis 。只要你愿意写出来,不一定需要算法,可以是总结,只要是能加速科研发展的,你整理的好,总结的方便,其他人就用你的,就是对科学有贡献。基本上做一个完整的工作,都是可以发的。

下面是师兄对”写一个软件是如何想到用这种算法的?“问题的回答:

一般选择引用率较高的。

浩浩

计算机硕士,本科做的是生信软件算法优化。老板是计算机硕士、数学博士。

下面是浩浩对”写一个软件是如何想到用这种算法的?“问题的回答:

  • 我感觉开发软件用什么算法,这个问题就类似于分析数据用啥软件?主要看积累吧,看看别人的软件里面用了啥算法(类比与别人用什么软件分析数据),如果要做原创性的工作就要了解经典的问题有哪些,解决这些问题的算法有哪些。。。然后确定了大概的思路就要看文献了,然后改进算法应用到新领域。
  • 我觉得最大的点在于拆解问题,能从rnaseq之类的大问题拆解到比对等具体步骤,那么比对软件就很多了。开发软件用算法也是的,具体可能就是比对里面分为建索引和比对两步。
  • 学习软件开发的方法就是最快的方式就是看看别人怎么弄的~ 浩浩小老板做了软件(R语言):https://github.com/XiaoleiLiuBio/MVP/
  • 先确定思路吧,具体实现放后面,不过也不好说,因为编码经验会影响思考方式。。。可能写着写着觉得之前思路有问题。有思路只能多试试,有一个有突破其他都还过得去应该就还OK。
  • 做软件肯定是要和同类软件比较的。