立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 1585|回复: 5

[分享] 生物信息学要求的计算机水平等级如何?

[复制链接]
发表于 2024-9-25 17:54 | 显示全部楼层 |阅读模式
回复

使用道具 举报

发表于 2024-9-25 17:54 | 显示全部楼层
生物信息学要求的计算机水平等级如何
我14前从分子生物学硕士 转向生信博士。转行的时候一行代码也没写过,哪种语言也不会,开始的时候以为要八年抗战了,结果18年,三年半博士毕业了。按理说好歹也是个世界百强博士,但是我也没觉的计算机水平有多厉害。所以我觉得起步的话,计算机水平基本为零。
说这个是觉得,大家千万不要担心计算机水平的事儿,他叫生物信息学,不是信息生物学,生物在前的意思是生物学问题是第一。很多代码,流程,软件,github都有,大多数从业着都是应用者,我们大多数时间都是在写脚本,调用别人的包。
1.可能有人说了,这不就是一个调包侠么。对了,就是调包侠。但是你知道么当好一个调包侠,这个最基本的事儿,百分之七八十的生信从业者都做不好。
2.只有当好了调包侠,下一步才回问这个包用的什么模型,解决了那些计算上的,或者说硬件上的问题,同类的包有哪些,分别有啥区别,什么问题时候该用哪个包。这个做好了已经是一骑绝尘。
3.不是每个人都要从底层开始写算法,考虑内存分配,进程调配这些纯开发者的事儿。这个在所有生信从业人员中占比不到10-20%,不重复造轮子,因为造轮子是计算机科学做的事儿,公司里做事情,会有developer一起配合造轮子的时候,作为生信分析从业人员,如何从一堆乱糟糟的数据中得出生物学的结论才是主要的。
回复 支持 反对

使用道具 举报

发表于 2024-9-25 17:55 | 显示全部楼层
谢邀。
作为本科开始就接触生信的我相信有一定的发言权。
1、linux常见操作需要会用,文本操作三大命令awk/sed/grep,会在linux里面写脚本
2、语言方面,如果你入手了perl,时间不太够的话python也可以先不学,后期慢慢补。R的话目前主要是在科研绘图领域。如果你想从事生物信息学注意是真正的生物信息学而不是应用生物信息学,这一点希望大家理清,那么C/C++也是必要的,毕竟一个没有编过软件的生信工程师更像是一个工具人,跑流程调包优化(别问我为什么知道,都是泪),早知道认清现实没有坏处
关于python学习
关于python学习,我不推荐一开始就看太难的书籍,编程语言也很容易劝退,也不希望你只是在单纯的记忆理论,因为那样并没有太大的效果,我个人觉得还是从实战出发:
推荐一本入门的书籍:


理解这本书大约半个月左右的时间,并不会太耽误你的时间。看这本书实战的同时我还希望你做一些很通用的小项目,先在实验楼上进行学习,可以验证你的答案是否正确,这在初期是非常重要的,你一定要能够明确知道你做的是否正确:
精选项目课程_IT热门课程_蓝桥课程 - 蓝桥​www.lanqiao.cn​www.lanqiao.cn​www.lanqiao.cn与此同时,我常常遇到一些完全零基础的初学者,一看到晦涩难懂的代码就直接放弃,还有一部分人学习的过程中不注意代码规范,写出来的代码可读性很差,可以推荐大家看下百词斩的夜曲编程,这个软件最好的一点是规范性,会把细节的问题做成题目加深理解,比如代码缩进,同时支持在线编程,利于因为软件安装劝退的人


另外很多同学都处于一个比较忙的状态,这个程序可以在微信公众号学也可以网页学,公众号直接关注夜曲编程,网页直接搜索就可以,还是比较方便的。很多初学的编程者路径不正确,对于很对概念理解都非常不清晰,这对于后续的学习是非常不利的,基础不牢,地动山摇,这个软件里的概念卡可以帮助⼤家理解和记忆编程概念,最后的思维导图也可加强记忆。这一点对于初学者还是非常重要的。




有一定的基础之后,也许你已经摩肩擦掌准备迎战了,这个时候的你需要有一个大神带带你,一个人闷头苦干虽然很英雄,但我并不认为这样的英雄主义可以提高你的效率,开始入手github吧,如果你对github不算很熟悉,我恰恰写了一篇github的文章:自学生信之番外篇:一键解锁github 希望能够有所帮助
github上面的python100天的项目我本人极为推崇。它可能不是最好的,但是对于初学者是比较适合的,有人带你学习是一件非常幸福的事情。先放一下github的链接


也许你会觉得有点难,突然觉得自己好婆妈,没有关系,作者把前面入门的15天重新做了一个50天练习的项目。


我希望你能够着重注意一下正则表达式的应用(生信中你将经常用到他们): 正则表达式30分钟入门教程
这里我特意提及Numpy、Pandas、Matplotlib这三个库,着实是因为他们很重要。
Numpy:利用Python科学计算的基础包,对Numpy的掌握将会帮助你有效地使用Pandas等
Pandas:结构和操作工具,能够使Python数据分析更加快速和容易
Matplotlib和seaborn:Python可视化库。散点图、箱线图、小提琴图等都是手到擒来。
自学生信-机器学习python数据可视化:一节课入门seaborn
如果你能坚持走几年生物信息的道路,我想未来在生物信息学领域的深度学习会大量运用的,这几个库的熟练应用会给你一些助力,如若有机会你自己也可以尝试实现一些数据挖掘的算法,解锁一些你对于python的期待:数据挖掘18大算法实现以及其他相关经典DM算法
一点建议:我不是很希望你看大部头的视频,我希望那些是你在遇到一些问题无法解决时用来查漏补缺的,我看过很多的pyhon学习视频,大多大而全,即便可以坚持,却容易陷入耗时久远而无法解决问题的困境,没错,我在这样的循环中用了一年多才醒悟。走错的路不希望其他人重走自己的路,仅此而已
3、如果只有一本书必须要学,那一定是数据结构,不懂数据结构和算法的工程师注定是纸上谈兵,无法深刻理解其中的含义,有志于在这个领域有所发展的同学,希望你们更早的重视起来。
数据结构与算法篇正在更新中:
觉得写的好的希望给个三连哦~
回复 支持 反对

使用道具 举报

发表于 2024-9-25 17:55 | 显示全部楼层
作为本科发表了一篇一作生信顶刊的大四学生,来谈谈自己看法。
从目前我对生信了解的角度来说,做生信的人一般做的是两方面的研究工作:偏算法与偏生物。答主做的是偏向研究生信算法的研究。
答主本身是计算机学科出身的,本科做了两年生信的研究,感觉从我的角度来说生信确实需要一定的生物学知识,但是高中水平的我来说做点研究也够了。当然如果要深入研究还是要学点生物知识。对于专门研究生信算法的人来说(计算机转生信),其实对计算机水平要求较高。其本质研究的还是数据科学,而现在数据科学又离不开人工智能算法这类的。所以如果主要做算法,计算机水平肯定是较高的,Python、Linux这种都是必不可少的,因为涉及服务器跑高纬度算法的问题。其次要对数据结构、算法设计也要有一定的基础。
但如果是做偏生物一点(生物转生信)的。其本质还是探寻生物方面的东西,学Python、R语言和一些算法基础,能让代码在服务器上运行是必须的。机器学习现在也用的太多了,也得进行系统的学习。
所以简单列举下需要什么计算机水平:
1、基础编程语言。主要是处理高维数据的Python、R语言这种。
2、基本Linux命令,高维数据是都要在服务器上运行的,所以掌握Linux也是必不可少。
3、机器学习算法,因为现在生信用的机器学习类的算法去进行data mining的太多了。
计算机水平方面当然是越高越好,生信方面要求用计算机的工具能分析生物数据。
总之来说因为生信是交叉学科,是用生物的理论和计算机的工具去解决相应的问题。所以掌握如果想深入研究还是要两门学科都要进行一定的了解与学习的。前景不用多说了,21世纪是生物的世纪hhh。其实美国对生信这方面的独角兽公司越来越多,国内这方面发展还不成熟,但是我相信在信息爆炸的时代,生物信息未来可能是一个风口。
在此推荐几本机器学习入门书籍,自己曾经使用过的~
回复 支持 反对

使用道具 举报

发表于 2024-9-25 17:56 | 显示全部楼层
2023-11-07更新
生物信息数据分析,云平台,零代码,甚至ChatGPT自动化,是未来的趋势。大家可以密切关注。
比如非常著名的 Galaxy 生信云平台,在全世界有许多镜像网站(国内的镜像地址是:UseGalaxy.cn),服务于全世界100多个国家的科研人员。最重要的是,这些服务全都是免费的,非常值得数据分析人员学习使用。
2020-12-03更新:
Linux可以说是生信最基础,也是非常重要的核心技能。
但是Linux命令非常多,新手一开始可能不知道哪些重要哪些不重要,往往无从下手。我根据多年的工作经验,系统整理了Linux的常用命令,先掌握这些就可以了,避免走弯路。
简佐义:生信人的自我修养:Linux命令速查手册<hr/>生物信息学分析任务多数都是在服务器上完成的,比如基因组的组装,重测序项目以及临床上肿瘤或微生物的基因检测等,需要比较大的运算量。
因此,首先你得学会操作服务器,就是要熟练使用Linux常用的命令,能用终端(Terminal)连接到服务器,然后熟练地敲那10几20个命令。
这样,你就能跑别人开发好的流程了,能胜任相关公司的初级生信岗工作。
但这只是入门,你得学会自己串流程,写点脚本,成为一个生物码农。那么脚本语言必须熟练一种,Python或Perl,行业内早期的大佬喜欢用Perl,但现在更推荐Python。
至于热门的R,我赞同@黄树嘉的说法,会Python后,R可学可不学。我一般都是先用Python把数据处理好,结果形成相应的表格后,导入R直接画图,不会用R去处理数据,那通常没有效率。
总之就是,Python/Perl必须熟练一种,能看懂另一种的代码,R的话了解下画图功能,再加上对具体生物学问题的理解,足以应付大部分生信分析工作了。
至于C/C++、Java,那是准备开发工具的人需要的,普通的生信搭个流程,根本用不到。行业内好工具就那么多,竞争非常激励,比如你开发个变异检测软件,别人敢用吗?大家都用GATK、VarScan。
C++写的程序效率确实高,当年我研究生的时候,需要搜索大量物种基因组中的CpG岛,当时没有好的工具可用,于是用C++写了一个,叫CpGIScan,代码在我的GitHub网站上,扫描人类基因组中的CpG岛,脚本开发的工具要几个小时,C++写的只需要3分钟。
当年我学C++,就看了《C++ primer》、《C++编程思想》,还了解了一下编码规范,就上手了,但没有深入研究算法,也只能开发点小工具,搞生信这么多年,主要还是用脚本语言。
C++已经荒废很久了,希望哪天能检起来。
回复 支持 反对

使用道具 举报

发表于 2024-9-25 17:57 | 显示全部楼层

  • 操作系统方面,一定要懂基本的 Linux 操作命令,但要求不算高,能够在终端(Terminal)下操作数据,会用 awk/sed/grep 等基本命令,我估计这个应该就是计算机二级水平。总之就是能够在linux下,编写基本的bash script。
  • 编程语言方面Python、C/C++、Java等至少要精通一样,绝对不能仅仅只会R。而如果你掌握了Python,那么R可学也可不学,但要会看懂。我自己早期是Perl和C++,Perl语言其实也比较容易学(不过前提是你之前学过编程语言),期间我自己为项目写了多个Perl包,但后来Perl换成了Python,原因是我比较喜欢Python,另一个原因是感觉Perl老了,社区都跟不上了。
  • 如果学了Python的话,一定要掌握到面向对象,包括能够写Class,能够自己写Python包,最好是能够写C拓展;
  • 如果学的是C,那么数据结构、结构体、指针、动态内存分配,文本操作要全掌握,能够写1000行以上的有意义代码,处理生物信息问题;
  • 如果是C++,除了上面C里面提到的内容之外,最好要掌握面向对象编程,STL标准库常用数据类型(如:vector、map等),能够写class。
如果编程方面仅仅只会Python,那么最好要掌握如何用Cython写C拓展,但其实Cython的语法模式和编写思想源自C/C++,还是没有直接用C/C++干脆,但好处就是能够和Python共同编写,可以直接调用Python包,效率写起来比单纯用C/C++高,代价就是达不到C/C++的速度(不必相信网上给出的测试说Cython其实效率可以比C高的说法,那些测评都太过简单,真正做起项目来是达不到的),并且代码风格不太好。
我的观点:如果懂用C/C++,那么写核心程序,比如设计生信算法方面就不要用Cython了,可以自己全面写成C/C++之后,编译,再用Python去调用。日常普通的数据处理、小规模的数据分析、写分析流程、统计分析、机器学习和数据可视化(画图),用Python是足够的。
以上。
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表