我要写个生信软件!自救!毕业~
剑锋
上海交通大学医学院附属瑞金医院、医学基因组学国家重点实验室在读研究生(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。
- 做软件肯定是要和同类软件比较的。