立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 3670|回复: 5

[分享] 如何自学生物信息学?

[复制链接]
发表于 2024-12-27 11:56 | 显示全部楼层 |阅读模式
回复

使用道具 举报

发表于 2024-12-27 11:57 | 显示全部楼层
我硕士是纯生信,博士是生信加实验,我对目前生信的定位就是,解决生物学问题的工具,生物信息我觉得主要分两个部分:
第一部分,纯生信,我以前就是纯生信,会许多工具,杂的很。但是随着研究深入,我觉得纯生信有弊端——代码编不过计算机专业,我就对这事挺担忧的。如果生物信息被互联网公司盯上,代码没人家优雅,工具没人家好用,技术没人家前沿,危机就会到来。目前一些测序公司已经开发出傻瓜式分析平台和可视化平台,虽然说暂时还没那么好用,但是生物信息傻瓜式一站分析,迟早的事。
而且纯生信能做的就是两件事,一是TCGA和GEO公共数据挖掘,跟着热点,灌灌水。其二就是开发cellrank,seurat,wgcna,deseq2这种软件包等算法类研究。但不是说纯生信,毫无价值,发不了高分论文,只不过这条路难走,会有很多人抢饭碗(计算机行业)。再我自己想通这件事后,我读博士就直接跳到了纯实验课题组,加强自己能力范围。而且我个人极力不推荐生物专业学生去做算法研究,这是计算机行业人干的,简单来说,灌水行,做精难。
当然了,纯生信找工作是足够的,但是如果想继续在科研圈活下去,这铁定是不够的。
第二部分,也就是我现在的角色,实验得到一手数据,自己个性化生信分析,当一个完美的掉包侠。把生物信息当做一个解决生物学问题的工具,这条路可以帮助你走的更远。把他人辛苦辛苦编的软件拿来用,弄明白软件运行原理,会调参数就行,把更多的精力用来解决生物学问题上,才能让自己走的更远。
我们要把生物信息的本质看清楚,这是一门用计算机学解决生物学问题的交叉学科,重点是生物。而不是用生物学促进计算机学发展的学科(仿生不算,我也不懂)。
说的有点多,瞎写的,没怎么润色语言。至于怎么学习生信,在下面。
先学R,首当其冲就是安装R包无压力(包都安不上,生信就别学了),然后直接用tidyverse系列包处理数据(玩明白了),剩下的就是学习deseq2(read count 求差异)、seurat(单细胞)、clusterprofiler(注释)、complexheapmap(热图)等频繁使用的包,先会用,然后有精力后再研究原理。生信包太多了,玩透常用的,剩下的会调用就行(毕竟作者编的也不一定对,里面水分太大,为了结果好,也不一定会考虑到底对不对,bioinformation出来的R包没必要盲目信任)。把R学会了,就代表可以数据挖掘了,去搞点TCGA数据,就能灌水了。
linux,更多都是为了处理fq文件,二代DNA测序无脑BWA,二代RNA测序无脑STAR,然后就是bedtools、deeptools、samtools、featurecount、macs2、meme、gatk等软件,基本衔接R就能解决好多问题了。会用shell命令,awk/sed/find/grep/ls/cd/rm/cp,就那么几个基础的。
python,前期我觉得需要哪个软件,就会哪个。不过这是一门值得多学习的语言,学了几天发现的确挺好用,现在一些脚本都用python编的。
perl,学个屁。
至于C,java等其它各种语言,我不推荐初学者学习,也只推荐生信算法人员研究,其它领域人真心用不上。
综合来说,初学者做一个完美的调包侠;有精力了就把使用的包,原理吃透了;再有精力了,把编程水平提上来;再有精力了,学学算法;再有精力了,试着编个软件。如果通过自学走到了这一步,并成功发表顶刊,就别干生物了,去计算机行业不香么?
别被网上教程吓到,一步一步来,有的人说自己会了很多语言,怎么怎么样的,其实就是扯淡,会而不精,谁都可以,玩透了才是真学习。当然了,如果能力强,就想什么都学习,我也不反驳。但是会的再多,解决不了生物学问题,发不了论文,在科研圈都是妄谈,毕业都是个问题。
把生物信息当做实验的protocal,一切都是为了生物学问题服务。算法研究的再花花,编程玩的再溜,实验做的再熟练,WB跑的结果再好,解决的确是浅显的生物问题,终究没卵用。
奉劝那些生物专业想学生信的同僚,不要眼高手低,刚入门时候,闷头学各种公众号、各种教程、各种书、各种算法,人的精力是有限的,生物行业我暂时还没见过天才型选手,这是一门充满实践和失败的领域,更多的是苦逼科研狗,为了一个好的WB结果,可能要付出一个月的时间。
举个例子,例如鸟叔linux,R实战啥的,讲真,现在我都没下载看过。我从来不反驳别人的教程是否有价值,如果有那个精力把全部都学了,而且是真会了,想解决一件事,噼里啪啦就能敲代码自己解决,那肯定很棒啊,技多不压身。
但是我做生信五六年了,好多知识真心用不上,大脑记不住那么多命令(我承认自己这里废),编不出来代码,就百度。不过我擅长记录,每解决一个典型问题,我都会保存,下次碰到了,就直接找原来成功的代码就行。包括网上众多的pipline,总结成为自己的,才是真的学会。其实这也是一个现在大家学生信的障碍,搜的教程看着都还行,都可以练手做一做,但是太冗余了。
其实我一直在收集整理大家的教程,感觉哪个知识点比较好,我就放进自己整理的教程里,只不过就我自己用,哈哈哈,因为我怕涉及到版权什么的,被人骂一顿犯不上。我也推荐有能力的人这里做,毕竟随着年龄增长,好多东西真的记不住,只能随时记录。
况且生物类论文,各种新观点,新概念,新方法,新算法,新流程,随时都在更新,放眼整个科研界,生物和医学类论文占了绝大多数。刚入门的同学,一定一定一定要选择适合自己的流程,先学会了解决自己遇到的问题,有时间了有精力了再去扩展自己的生信能力。
很少在互联网写东西,第一次被这么多人收藏,怎么感觉有点动力了。我说的这些其实就对新手有用,而且参考参考就行,每个人都有自己的学习方法。随手写的,语言不通顺见谅,懒的修饰,大家见谅,祝大家论文多多,早日毕业,哈哈。

22.11.19记
真没想到会这么多朋友收藏,谢谢大家,我会回答一些朋友的问题。
23.02.08记
最近chatGPT火了,试了一下,会写生信代码,虽然还没那么完美,但肯定会逐渐改善,变得更加完美。好在我学会实验了,chatGPT总不能把生物实验结果给我凭空捏造出来吧。
回复 支持 反对

使用道具 举报

发表于 2024-12-27 11:58 | 显示全部楼层
2023-11-07更新
感谢大家的认可和支持。
我从研究生阶段,到工作至今,在生物信息领域已经10年了,时间过得真快。现在兴趣转向了生物信息云平台。
因为:
云平台是每一个做数据分析的人的最终梦想。
注意我说的是数据分析,不仅仅是生物信息分析。
曾经,我们花了太多时间去学习计算机基础:R / Python / Perl / Linux / C++ / Java / docker / k8s / Apptainer / 虚拟机 / 集群任务投递等等,这对于从业人员来说,无可厚非,是我们需要经历的磨炼。
但是,这对于外行来说,做数据分析要掌握这么多东西,门槛可太高了,很多人没有开始就选择了放弃。那么有没有工具,能降低数据分析门槛,使得专业人员能够轻松地处理数据,从而能够把精力集中在自己的业务上?
生物信息云平台是一种很好的解决方案。比如非常著名的 Galaxy 生信云平台,在全世界有许多镜像网站(国内的镜像地址是:UseGalaxy.cn),服务于全世界100多个国家的科研人员。最重要的是,这些服务全都是免费的。
最后,对于云平台的使用,我的建议是:

  • 如果你只是想尽快处理数据,无意花费太多时间学习生信基础知识,那么云平台非常值得尝试。
  • 如果你的目标是学习生信底层技术,那么编程语言这些该学还得学。
  • 说白了,如果你是使用者,那么肯定是什么工具顺手用什么。如果你是开发者,那你可以参与开发云平台,为社区作贡献,推动行业发展。
<hr/>生物转生信,一路走过来,我的经历有一定的代表性。大学本科自学了Linux,临毕业又学了C++,读研期间学了Python,进而从生物走向了生信之路。我也总结一下这些年来对生物信息学的理解。希望对新人有所借鉴。
<hr/>
看透了如此多的秘密,我们已停止相信尚有不可知之物。然而,那不可知之物却仍然坐在那里,冷静地舔着自己的嘴唇。
                                                                                                              ——H.L. Mencken
尽管人类已把航天器送出太阳系,奔向了无尽的宇宙。而人类的眼睛,借助天文望远镜早已延伸到亿万光年之外。尽管蕴藏在原子内部的巨大能量已被发现并加以利用。但时至今日,人类对自身的了解,才刚刚起步。
一、生物信息学:源起

人类基因组计划(Human Genome Project,HGP),是人类下定决心认识自己的开始。这是一项可与阿波罗登月媲美的宏伟工程,它的目标,就是测定人类的基因组序列。随着计划的开展,产生大量的基因组数据面临分析困难,计算机辅助分析的手段不断被开发出来,进而形成了一门专业的学问——生物信息学。
下面是人类血红蛋白的一个beta亚基(HBB)的基因序列。这种序列类似于一副扑克牌,但只有不同的4张,分别是A、T、C、G。所有核酸都是由这4张牌不同的排列组合而成。比如人类基因组中这样的牌有30亿张。生物信息学是处理海量序列数据的利刃,是遨游数据海洋的一叶扁舟。
>NM_000518.4 Homo sapiens hemoglobin subunit beta (HBB), mRNA
ACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAACAGACACCATGGTGCATCTGACTCCTGA
GGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC
AGGCTGCTGGTGGTCTACCCTTGGACCCAGAGGTTCTTTGAGTCCTTTGGGGATCTGTCCACTCCTGATG
CTGTTATGGGCAACCCTAAGGTGAAGGCTCATGGCAAGAAAGTGCTCGGTGCCTTTAGTGATGGCCTGGC
TCACCTGGACAACCTCAAGGGCACCTTTGCCACACTGAGTGAGCTGCACTGTGACAAGCTGCACGTGGAT
CCTGAGAACTTCAGGCTCCTGGGCAACGTGCTGGTCTGTGTGCTGGCCCATCACTTTGGCAAAGAATTCA
CCCCACCAGTGCAGGCTGCCTATCAGAAAGTGGTGGCTGGTGTGGCTAATGCCCTGGCCCACAAGTATCA
CTAAGCTCGCTTTCTTGCTGTCCAATTTCTATTAAAGGTTCCTTTGTTCCCTAAGTCCAACTACTAAACT
GGGGGATATTATGAAGGGCCTTGAGCATCTGGATTCTGCCTAATAAAAAACATTTATTTTCATTGC参考:为什么说生物信息学是真正的大数据专业?
二、生物信息学:全景

生物信息学的应用领域非常广泛。小到细胞,大到生命之树,只要是生命,就有核酸,只要有核酸,就有测定序列的需求。
因为核酸是遗传信息的载体,遗传信息描绘了生命的蓝图。种瓜得瓜,是男是女,都由遗传信息决定。
测定核酸序列,才能从源头上探索生命的奥秘。当然我们也要小心还原论,认为只要测定序列就可以知道生命的所有秘密。但是对一个生命的研究,没有其核酸序列显然是不完整的。
我们可以从三个视角来总结生物信息学的应用领域,分别是:

  • 细胞
  • 生物体
  • 生命之树。
我专门有一篇文章介绍:生物信息学:全景,在此不展开。
三、从菜鸟到专家

1. 职业前景

生物信息学作为交叉学科,既要生物学知识,又要数理知识,还要编程。很多初学者往往感觉无从下手,产生畏难情绪,这是对自己的定位不清楚的结果。
我把生物专业人员的职业发展分成三个方向:

  • 生命科学专家。就是专注于解决生物学问题,不需要花心思去掌据计算机知识,可以与生信专家合作。生物信息学是数据驱动的科学,你手里有好数据,有资源,不愁没劳力、没合作者。很多老板,PI,就是这类人。
  • 计算生物学家。专注于开发生物信息学软件,为行业提供工具的人。比如开发短序列比对软件BWA等一系列工具的李恒等。他们是Tool makers
  • 介于两者之间,既懂点生物,也懂点编程,这就是搞生信的绝大多数的普罗大众了。通常是Tool users
  • 有没有两者融会贯通的顶尖高手呢?我暂时还说不上一个名字来。
2. 基础知识

假定你我都是第三种人。身处第三世界,那如何获得比较优势呢?

  • 分子生物学和细胞生物学,掌握基础知识。
  • Linux,熟练掌握常用命令;
  • Python,熟练掌握基础语法;
以上三种技能,需要优先掌握。并且这三种技能是可以在短时间内攻克的,一旦学会,终身受用。
对生物学知识的要求

生物信息学一开始对生物学的要求并不高,只需要具有分子生物学和细胞生物学基础知识就可以了。知道细胞里面有什么,中心法则上下游的一些概念。
参考书:《基因XII》。
为什么要学Linux?

因为生物信息学处理的数据通常比较大,普通笔记本和台式机根本承受不了,必须放在服务器上处理。而Linux是最常用的服务器操作系统。很多生信软件都是为Linux系统开发的,不会Linux,就没法使用这些优秀工具。不用担心,Linux是非常容易掌握的,因为我们的目的是使用,而不是研究操作系统。
参考书:
生信人的自我修养:Linux命令速查手册。相关命令我整理在一篇文章中,掌握这些命令足够用了。
《鸟哥的Linux私房菜》。作为参考书帮助理解上述手册中的命令。
为什么要学Python?

生物信息学使用各种软件,如何把不同软件串联起来工作,Python就是非常好的胶水语言。其次现成的工具有时不能满足数据分析的所有需求,难免需要自己写一些脚本协助解决,比如软件可能会给出许多结果,其中有不少的噪声,如何过滤这些结果,需要脚本。下面是一些比较好的教程。

  • 《Python简明教程》。适合快速入门。
  • 廖雪峰的Python教程。主要是掌握Python的语法,数据类型,文件读写等基础知识,像图形界面,网络编程,数据库可以先不用学。
  • Python官方文档。官方文档是最好的学习资源。入门之后,应该反复看官方文档。
聊一聊Perl和R。

早期生信人用Perl写的一些代码,现在还在工作。因此能看懂Perl代码很有必要,花点时间看一下基本语法就可以了。内置正则表达式是Perl的一大特色。而正则表达式在学习Linux和Python时,也需要了解。Perl总的来说是一种过时的语言,大量符号也不符合快乐编程的需求。人生苦短,我用Python
R,其定位是一个综合的统计绘图软件,不是一门编程语言,这点需要清楚。因此就算精通R,也不可不学Python/Perl。
最佳生物信息工作环境

最佳生物信息工作环境:Mac篇
最佳生物信息工作环境:Windows篇
SSH应用,如何优雅地登录远程服务器?
生物信息基础:conda包管理器安装和使用
代码版本控制及托管:我的最佳实践
3. 成为工程师

组学知识

生物信息学为测序而生。当前最成熟,应用最广的是二代测序(Illumina,MGI,Ion Torrent)。目前格局大致如下。

  • 一代测序通量低,数据分析容易,因而不需要太专业的人才。
  • 二代测序上游的PCR技术,现在面临NGS的全面挑战。PCR在特定领域有用,如新冠检测;但难堪大用,如肿瘤基因检测方面。
  • 新一代的三代测序,没二代配合还很难单独形成应用
  • 蛋白组,代谢组,刚刚兴起。
组学涵盖面也是非常大的。有DNA-seq、RNA-seq、ChIP-seq,基因芯片等。拿DNA-seq项目来说,涉及多个环节,每个环节可能就是一个工作岗位。

  • 基因组如何获得?
    测序,组装。测序花样多,二代,三代,Hi-C,光学图谱等,用一种技术,还是几种技术组合?有无参考基因组?情况不同,组装策略也不一样。
    从研究对象上来说,有人、动物、植物、微生物、病毒、线粒体、叶绿体,不同的研究对象,测序和组装的手段可能都不一样。
  • 基因组中有什么?
    注释基因组中的有效元件,如基因等。这是数学上的模式识别问题。同样研究对象不同,需要的生信手段也不一样。
  • 比较基因组学
    这是目前的热门。如临床上肿瘤基因检测,微生物基因检测等。以肿瘤基因检测为例,需要检测样本中的各种生物标志物,如:SNV/InDel,CNV,Fusion,TMB,MSI,LOH,HRD等。通过我这篇《基因大数据智能生产及分析》笔记。从中可以看到,仅仅在健康领域,基因组学和生物信息学的应用之广。
  • 生物进化
    通过基因组测序,研究物种的进化以及迁徙等,满足人们的好奇心。
由此可见,即便只是基因组学,一个人想掌握所有环节都面临巨大挑战。因此不要试图什么都学,要聚焦自己的课题,否则会很焦虑
要说哪些东西是组学中必须掌握的,我觉得有以下这些。

  • 测序原理:一代、二代、三代测序。Illumin、MGI、Ion Torrent、PacBio
  • 基本的文件格式:Fasta, Fastq, BAM, VCF, GFF
  • 数据质控:fastp,Fastqc, Multiqc
  • 比对软件:blast等。序列相似,推断结构相似,结构相似,推断功能相似,是生物学的基本假设。因而要深刻理解生物信息学中相似性比对的思想。
其他东西都是根据项目不同具体去了解,比如:
重测序WGS:主要就是走GATK最佳实践流程(针对人类)。
重测序Panel(WES/大Panel/小Panel):主要走Fastq -> BAM -> VCF -> 变异注释流程,用到的软件fastp,bam, samtools,bcftools, varscan, annovar, snpEff, VEP等。
病原微生物检测:主要是质控 -> 降噪 -> 去嵌合体 -> 生成OTU表 -> 物种鉴定 -> 功能鉴定。用到的软件,fastp,vsearch, usearch, Qiim2等。
参考书/在线课程:
《Bioinformatics Data Skills》——讲得基础。印象最深的是介绍find + xargs + parallel用法,至今受用,其他忘了。
《高通量测序技术》——李金明。介绍高通量测序在临床基因检测中的应用。
《生物信息学与功能基因组学》——非常好的入门教材。
《北京大学生物信息学在线课程》——偏重算法。
《山东大学生物信息学在线课程》——我没看过,但很多人推荐。
《陈润生院士中科院生物信息学课程》——课程虽然有点老(07-08年的),但讲解的知识现在也不过时。我当年主要看这个课入门,其次是北大的课。
我的转型之路:一个生信人的自白:从生物转生信,我的学习与工作经历
理论联系实际

最好的学习方法是项目驱动。每接手一个项目,都把它做到极致,这样随着经验的积累,能力自然也提高了。如果没项目,有这几个选择:

  • 找实习单位:有两个大方向,科研或者临床。
  • 参加竞赛:建议先用瓶中基因组计划中的NA12878样本,走GATK最佳实践流程,GATK官方网站有详细的使用文档。
  • 复现文章套路:套路不在多而在精。
业内经常举办一些“竞赛”。组织者获得一些问题的金标准“真相”,如组装一个基因组或评估变异检测流程的准确性等,然后邀请业界内成员在一定时限内来竞争解决这些问题。通过比较基于不同方法的结果,组织者可以评估每一种方法的性能,即真阳性和假阳性,真阴性和假阴性,并通过定义灵敏度和特异性来了解选用何种工具。一些竞赛案例如下。
名字/首字母缩写竞赛
GIAB瓶中基因组计划
Alignathon比较基因组比对方法
EGASPENCODE基因组注释评价项目
Assemblathon比较基因组组装软件的效果
GAGE基因组组装金标准评价
ABRF生物分子资源设施组织(ABRF)磷酸化评估
CASP结构预测的重要评估
CAFA蛋白功能的重要评估
CAGI基因组解释的重要评估
PrecisionFDA Truth Challenge精准FDA真理挑战赛
Rosalind通过解决各种问题学习生物信息学
值得一提的是瓶中基因组计划,其中的NA12878样本,被认为是研究得最清楚的人类基因组,因而是一个非常好的学习材料。此外临床基因检测方面,有一些室间质评的数据,带参考答案。这对于构建一个分析流程来说非常重要。除了用模拟数据,带标准参考答案的测序数据,对于检验流程的性能很有用。
4. 成为专家

选定一个领域,精耕细作,深挖一口井,假以时日,必有所成。专注一个领域,这样你虽然在就业市场上面临的选择少了,但是你精于某一方面,反而更容易找到工作,并且能谈到更高的价钱,毕竟你要的不是一个行业,你要的只是一份工作,要那么多工作机会干啥?一个就够了。
专业,你唯一的生存之道。
——大前研一《专业人士》
掌握一门高级语言

C/C++,Java,至少学一样。行业优秀软件如BWA,Samtools等,是C/C++写的;GATK,VarScan,snpEff等是Java写的。虽然咱们平时干活主要用Python,但掌握一门高级语言,有两大好处:

  • 可以编写高效率软件
  • 看懂优秀组学软件的源码
参考书,C++的:
《C++ Primer》
《C++编程思想》
《Effective c++》
研究优秀生信算法

这一点尤为重要,甚至比自己写软件重要。因为我们大概率写不出优秀的软件。但看优秀的源码,在IT行业是常识,生信也应如此。很幸运许多优秀的生信软件都是开源的,我们有机会通过源码,知道软件具体的工作方式。如此生信技能必将上一个台阶。这是一块硬骨头,也是成为高手的必由之路。
建议结合一本书看:《生物序列分析Biological Sequence Analysis》。曾经华大基因的王俊称赞这本书:是生信最好的教材,没有之一。
发现问题,解决痛点

作为专业人士,发现问题,解决痛点的能力非常可贵。这个时候你不再是一个跟随者,而是某一个领域的开创者。

  • 期刊杂志:Nature, Science,Cell,Bioinformatics。获得行业新视角。
  • 行业会议:尽量多参加重要的行业会议。
  • 行业政策:行业相关重要的政策文件,比如临床上各种指南、专家共识等。
  • 行业报告:比如基因慧的行业报告就很好。
  • 行业论坛:Biostars。专业的生物信息论坛。
  • 最重要的:Google,国内Bing。搜索引擎能解决大部分问题,往往比问人快。
最后附上《专业人士》对专家的定义:
有强烈期盼成功的欲望,对自己能够获得成功,充满自信。时刻保持一颗好奇心。为自信提供源源不断的动力。不敢怠慢自己的智慧,努力自我成长,为顾客提供最大价值。并能遵守纪律。达到以上条件的人就是专业人士,也称为专家。
四、求知若渴,不止生信

读书和运动,是普通人成功的捷径。
《物种起源》——达尔文。生命科学永恒的经典,书中的书。若只读一本生命科学著作,读它。
《生命是什么》——薜定锷。从物理学角度看生命是什么:生命是逆熵,生命通过耗散能量来维持自身的秩序。
《遗传学》——刘庆昌。与《基因XII》一样,案头必备。深入研究生命科学,遗传学必须精进。
《基因论》——摩尔根。遗传学经典科普读本。
《自私的基因》——理查德·道金斯。我们都是基因的奴隶。
《DNA:生命的秘密》——詹姆斯.沃森。DNA之父的作品,必读。
《上帝的语言》——弗兰西斯.柯林斯。一本有意思的书。作者是领导了人类基因组计划(HGP),他说自己的工作就是为了证明上帝的存在。
《基因传》——悉达多·穆克吉。关于基因的科普。
《癌症传》——悉达多·穆克吉。天生万物,死生轮回。癌症是否设定了人类寿命的极限?
《癌症.真相》,《癌症.新知》——李治中。癌症科普图书。
《人类简史》,《未来简史》,《今日简史》——尤瓦尔·赫拉利:人类简史三部典。我们从何处来,向何处去?从人文主义,到数据主义,再到半人半神,是否就是人类演化的方向?
《成事》——冯唐。要成事:结硬寨,打呆仗。
《明朝那些事儿》——当年明月。隐忍,知行合一。
《卓有成效的管理者》——彼得·德鲁克。管理者必须卓有成效。
《能力陷阱》——埃米尼亚.伊贝拉。人们习惯于做自己擅长之事,陷入自己的能力陷阱中不可自拨。作为专业人士尤其要注意,有机会要尝试跳出舒适圈。
《原则》——瑞.达利欧。关系 > 事业 > 金钱。
《你要如何衡量你的人生》——克莱顿.克里斯坦森。生活除了眼前的苟且,还有诗和远方。
五、最后总结

生物信息专业人士的成长路线是:

  • 掌握细胞与分子生物学基础知识
  • 掌握Linux常用命令
  • 掌握Python编程基础
  • 学习组学相关知识
  • 学习一门高级语言
  • 研究优秀生信算法
  • 发现问题,解决痛点,成为专家
作为一门交叉学科,生物信息学的入门是容易的,所需的计算机,数理知识,在这些学科看来也只是入门水平。因而很容易跨过初学者阶段。但我们始终要明白,所有的计算机,数理知识,甚至云计算,5G等技术,都是为生命科学服务的。我们似乎绕了一大圈,又回到了生命科学本身。
推动生命科学进步的,唯有生命科学家自己。

标题:如何自学生物信息学:从菜鸟到专家
版本:1.0 日期:2020-11-23
生信系列文章永久地址:https://jianzuoyi.github.io/
如果你也喜欢生物信息学,欢迎关注公众号:简说基因,让一部分人先懂生信。
回复 支持 反对

使用道具 举报

发表于 2024-12-27 11:58 | 显示全部楼层
开始生物信息这个专业今年已经是第七个年头了,本科自己所学的专业就是生物信息学,同样是从一个小白开始,经过了相对系统的训练。更加能够体会生信学习如果没有领路人是非常困难的这一事实,因为要学习的东西确实很多,整个大一大二的时候课程几乎排满,但有幸的是现在入行生物信息学有很多优秀的项目以及很多经验可以参考,可以快速入门。我会把自己学习过程中踩过的帮大家毙掉,减少学习成本。
你真的知道什么是生物信息学吗?
生物信息学和应用生物信息学不知道大家有没有分清,现在生信炒的很热,说的大多也都是基于测序技术的发展,目前来看,大多数人理解的生信都是应用生物信息学,题主是临床医学,那么可以断定是应用生物信息学了。
什么意思呢?就是以生物信息学作为工具,诸如此类,入门相对容易,也并不需要太扎实恶的数理基础和计算机编程能力,而更严谨的生物信息学目前更多的是基于全组学的软件和算法的开发,这个前景是非常广阔的,也是需要很多优秀的生信人为之努力的,在这一块的关键核心技术是掌握在国外的,有点可惜,但是国内的生信时间还不长,相关产业还么有那么高端,未来还有很大的进步空间,相信未来可期。
聊一聊应用生物信息学
很多人是生物学出身,生信的一些大牛也曾说过不用过分迷恋生信,如果你能够把这个工具学好,更好的去解决生物学问题,那是极好的。
还是建议编程基础不强的的尽量不要做硬生信,就是软件开发和算法,这真的需要时间的积累,希望不要被很多人忽悠,做做项目,硬啃下几本书,一年半载就开发算法。这样的回答其实挺不负责任的,每个人的人生每一步都至关重要。如果有志于做这方面的,后期可以一起探究和学习,这里就不展开讲了。
如果做生信需要掌握什么?
1、首先是生物学知识,我的导师在面试我的时候考察了很多恰恰不是编程的知识,而是生物学的知识,她说很多博士对于基因结构的理解都不是很深刻。这里总结了导师讲的这方面的内容,希望有所帮助。
这可能是全网最详细的真核生物基因结构讲解
这一次对于生物学的知识我更加建议是根据自己所在领域的文献查漏补缺,大量阅读本领域的文献,了解自己所需要的基础知识。
2、测序原理
目前市面上测序技术层出不穷,二代三代技术交相辉映,眼花缭乱,认准一个全基因组测序或者转录组测序都可以,这些是基础,一通百通,初学者通一门比门门都懂,但是不精通要好的多。二代illumina测序十分经典,其中的原理一定要特别通透。
可以先看下视频:
Illumina测序原理​v.youku.com生信基础
这一部分我进行了整理归类,也是按照学习路径来分的~
总论
转录组
表观遗传

3、项目经历
重复一篇数据好的转录组文章,这里可以给大家推荐一个,数据简单,适合新手
Transcriptome analysis of an apple (Malus × domestica) yellow fruit somatic mutation identifies a gene network module highly associated with anthocyanin and epigenetic regulation
我要自学生信之生信基础-转录组:分析流程大全解,看这一篇就够了
同时近期自己整理了转录组、代谢组和宏基因组的流程代码资料,已经有超过100人试用,第二版正在内侧中,详细可私信。
另外如果有机会一定要去实习:
比如华大、诺和这些,用来学习是可以的,大多数基因公司对实习的要求是不高的,勇敢向前拼
4、计算机基础
1)linux
基因数据分析,极度不推荐在Windows下完成,有很多的工具不支持,而且不利于学习,也不利于我们对数据的理解,不过,我们不需要成为运维专家,对于生物信息研究人员来说,只有了解Linux的一些常用命令即可。我也总结了常用的一些命令
分为几个部分
软件安装、文件操作、文本处理(awk、sed、grep等)、上传下载、目录(绝对路径、相对路径),基本熟悉这些就可以上手了,后续有需要的命令大家可以自己去找。我自己也总结了部分,还在继续整理中。
也推荐一个学习的网站。
Linux 教程 | 菜鸟教程​www.runoob.com2)编程语言
关于R语言学习路径:

基础技能入门:安装加载包、数据结构、变量类型(str)、数据导入/导出(read)、数据筛选数据(filter/select)、合(merge)、匹配(match)、追加(mutate)、长宽转换(reshape)、数据索引(index)、循环(while.for)、判断(if)、排序(sort/rank)、缺失值(is.na)、正则
这一部分我推荐你看一些书籍,直接对着书上面进行基本技能练习,在这个过程中head、str、help函数的使用频率>=1000次是极佳的。哪一本都可以,比如这一本的第二版前三章
近期更新了第三版的书籍,大家可以直接选择第三版了。这一版都是大多基于tidyverse对于初学者理解较友好。
北大李东风老师的R语言教程也是我个人强推的学习R语言的资料。该版本更新于2023.7.27日
R语言教程这个时候你的基础已经初步具备了,下面咱们就要开始做数据分析了。R做数据分析有些人比较喜欢用r-base(基础版本),当然我个人比较倾向于tidyverse(可以理解为加长升级版本)。使用前需要先安装然后加载他(安装就像你买了回来,加载表示你要用他了)。你以为这些就可以直接画图了吗?各种脏数据扑面而来,60%的时候就花费在了数据预处理上,我们看一下数据处理的流程。


第一步:数据预处理:
下面就开始第一步了,这里推荐完成 R语言数据处理120题 一定不要复制粘贴,一个一个敲起来。优秀的预处理能力是你的数据分析中的锋利的宝剑。尤其是在缺失值、异常值离群点、冗余数据的处理技巧上。
第二步:数据可视化
做数据可视化的过程中会涉及一些统计的知识,那么下面的一些统计基础就派上了用场。
如果是医学生,恰好有一本深得人心的医学统计书籍。
我自己也在着手更新:
其实什么类型的数据画什么图都是很有讲究的


至于画图的细节每一种类型的图都需要详细进行讲解,我的ggplot2科研绘图篇也即将开始更新了,可以和小柯一起学画图。先来张看一看效果~


赶着学习的可以多看看书,专门挑ggplot2画图这一节即可,理解底层画图逻辑(像PS的图层)。看视频虽然也讲的很清晰,但是最好还是查漏补缺用。我这里也更新了一些:

第三步:数据建模
许多的数据可视化后不用建模就可以得出一定的结论,有些复杂的数据需要通过分类、聚类等不同的方式进行分析。可以分为探索性分析和预测性分析。这一部分我会单独在我的专栏进行讲解,这里就不展开了。至于深度学习的部分还是推荐用python。

关于R语言学习的一些疑虑
1、没有编程基础怎么办
R是我学习的第一门正式学习的编程语言,零基础也可以学会,达成目的即可,有时候只是为了画图而已,坚持一切编程都是纸老虎(怕就永远都不会)。
2、前面的学习路径还是不是很清晰,能不能简单再顺一下

  • R语言实战前三章
  • 数据处理120题
  • 基本图形+统计学了解
  • ggplot2科研绘图
3、学习路径太慢,可不可以直接开始科研绘图
亦可,边学边整理数据处理和统计相关知识,但是前面的基础技能还是需要看完,后期需要大量项目来进行补足,题海战术在语言学习中依然适用。你是不是想和我说没有办法实战怎么办?我……好人做到底,论文中的图片哪里来,R绘图来,数据哪里来,论文里面来(拿起论文-下载数据-开始画图
R语言的学习教程我已经开始陆续更新,更加贴近实际引用,解决问题:
R总论
R绘图
R语言与统计

关于Python语言:
关于python学习,我不推荐一开始就看太难的书籍,编程语言也很容易劝退,也不希望你只是在单纯的记忆理论,因为那样并没有太大的效果,我个人觉得还是从实战出发:
推荐一本入门的书籍:
理解这本书大约半个月左右的时间,并不会太耽误你的时间。看这本书实战的同时我还希望你做一些很通用的小项目,先在实验楼上进行学习,可以验证你的答案是否正确,这在初期是非常重要的,你一定要能够明确知道你做的是否正确:
精选项目课程_IT热门课程_蓝桥课程 - 蓝桥​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)编程原理
当你有了一些基础后,可以开始写一点点代码了,那就要考虑代码的效率问题了,以及如果能够写出优美而省时的代码。这就要依靠数据结构和算法来实现了。
推荐入门书籍:

数据结构与算法篇:
这个一脉相承,是用python写的,有学C的强推大话数据结构
关于计算机这块可以看下之前我的回答,比较详细
生物信息学要求的计算机水平等级如何?​www.zhihu.com5、统计学+算法
生物信息离不开统计学,假设检验,贝叶斯推断、随机森林,SVM,回归分析,PCA等等等等,R语言高级绘图的部分和这一块紧密相连。
关于贝叶斯这篇文章写的自认可以(不要脸的自夸)
我要自学生信之数据挖掘:朴素贝叶斯统计基础(在R语言的部分已经讲)
再加一本入门书籍推荐(除了医学统计学):

6、机器学习
西瓜书+南瓜书,周志华的西瓜书确为机器学习入门的经典教材,但是其中很多公式的推导初学时真的看不懂啊。南瓜书就解决了这一点,带你的数学水平提到周老师眼中大二下的水平。

南瓜书的电子版恰好准备了电子版,想要的来领取吧。
这个部分有点难度,B站吴老师的机器学习可以作为参考。
[中英字幕]吴恩达机器学习系列课程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com专栏内也收录了一些经典的算法:
7、批判性思维
重要性就不言而喻了,如果你面临一个事件或者一个项目提不出一个问题,或者思维混乱,那么你很难在这条路上走的很远。很多人可能觉得不甚重要,但要是按照重要性来排,我一定把它排在第二位。批判性思维的训练是需要长期进行的,是后天形成的。
推荐学习书籍:

8、好奇心+终身学习
多阅读相关领域顶刊的文章,持续下去,不出半年,定有所成,很多人都想一口气吃成个胖子,但学习往往不是一蹴而就的,树立终身学习的理念,站在巨人的肩膀上起点会高很多。

最后送给大家一句话:人要忠于年轻时候的梦想!
我在知乎学生信专栏、我要自学生物信息学系列持续更新中,一起和众多初学者度过新手区。
回复 支持 反对

使用道具 举报

发表于 2024-12-27 11:59 | 显示全部楼层
作为本科学生物,后来转行生物信息的人,经常会被人问起,为啥学习生物信息了呢?这背后通常会带着一些困惑,生物信息分析好不好学?
生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题。但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视频后就直接写程序。也许你可以跟着一个测序分析流程完成操作,但不懂得背后的原理,不知道什么参数需要修改,结果可以出来,却把我不住对还是错。
我读书的时候,实验室纯计算机出身的人员只占很小比例,更多的是大学期间学生物的;特别的,有个做的挺好的师兄,本科是商科出身。从这来看,像我这样本科学生物转行生物信息还不算是有跨度的。这也从一个侧面说明,专业背景不是能否学好生信的决定因素。
想想自己大学开始自学生信的时候,可以说是一头雾水,只知道先学习编程,查了查资料,是要学习perl语言,但是不知道要在什么地方写,怎么去运行。费了些劲,在windows上安装好perl,写个文本文件,改下后缀,发现文件的图标变成了perl的图标,双击就可以运行了,不会写命令行参数,不会输出重定向,一种傻呵呵的体验。
后来接触了Linux系统,体验到在终端输入命令的快意,才找到了编程的感觉。不过,深深印在脑海里的还是作为一个生信小白的时候,写一个程序不知道在哪写在哪运行。看过不少的教程都默认学习者会打开终端,会使用终端,会在终端运行命令。而我却是个例外,什么都不会。程序可以照着教程写下来,却不知道怎么运行。所以在我后来写python教程的时候(后台回复
python
可获取),第一部分就是介绍程序在哪儿写,在哪儿运行,怎么运行。(最开始学习perl,在研一时在QQ群一个同一大学学长的忽悠下,尝试了下python,那时有些编程基础,寒假在家看了遍《python简明教程》就可以写了,以后也就习惯了这个语言)。
我个人是个理解能力比较差的,尤其是在接触新的领域时,阅读不少教程,总觉得这些教程都是给有些基础的人写的,自己去学习时,需要多方尝试多多综合,才能找到门路。为了方便自己学习,也为了记述学习过程,就开始写博客去记录,力争从一个小白的视角、从最基础的角度去写作,记述哪怕是最简单的一步操作,一个错误,提供一个近乎人人可以直接上手的教程 (比如虚拟系统Docker的使用教程任务流控制管理的Airflow教程,这些文章被转载后,在同一平台相比于同类的教程阅读量多了10倍,我想这正是因为简单、可操作,为初学者接触这些工具提供了最大的便利)。
在初步知道程序语言怎么运行并能成功运行完示例后,就要系统地读一本简明教程;简明的教程不多见,因为一般的教程都涵盖的面比较广,而我们初期只需要关注最基本的就好

(所以我提取了我个人认为比较重要的基础内容,形成教程),可以找本经典书,请身边朋友划下重点,先从头到尾读一遍,不管理解多少,然后再读一遍。读不下去,就抄写一遍。最好的自学方式就是守住一本教材,一遍一遍地去读去熟悉,每看一遍都会有一些了解,从陌生到熟悉,慢慢就串起来了。然后就开始自己去写代码,代码就是我们思想的体现;我在教人写代码时,总会让他先描述下如果没有程序,我们自己是如何一步步的手动处理这个问题的,模拟的是程序运行的过程。理清一遍思路之后,怎么想的就怎么写,只要你敢写,就成功了
当然这个时候一般会遇到初学者经常犯的错误,写完代码,觉得自己写的很对,但运行时却总是提示错误。绝大多数情况下,错误是我们自己写作的错误;起码在最开始时,要相信是自己的错误,不是程序语言设计的错误。错误的种类就这么几种,比如引号未配对、缩进不对、少了空格、文件名不对、变量名字不一致等。这时需仔细看屏幕提示的错误信息,在提示的错误行附近反复去查看。在之前的python教程和后续的文章中,都有或会提到经常出现的错误和解决办法。
能让程序提示的错误都算不上大的错误,而程序运行成功,不等同于程序的逻辑是对的,获得的结果是对的。程序是我们设计的,多数情况,我们对程序的输出结果是可以预估和判断的,不符合预期的结果是我们最应该慎重对待的。
在能独立写作程序后,一方面是学以致用,在解决问题中逐步学习;这时谷歌是你最好的帮手,把你遇到的错误或想解决的问题的关键字提取出,一键搜索,可以帮你解决大部分问题。另一方面,则是去学习别人的代码、学习初学时跳过的内容,利用社区中提供的优秀的模块或包来简化、加速自己的操作。入了门,就不需要像刚开始时,什么操作都自己去写了,俗语叫“自己造轮子”;可以用很多经验更丰富的开发人员做好的轮子解决我们的问题。

学习生信从来就不是一个简单的事,需要做好持久战的心理准备。
在学习时,我们都希望由浅入深的逐步深入,不断地练习和实践,这就是为什么我们需要一本书,因为书很系统。但生信发展的历史短于计算机编程的历史,如果想要一门程序设计的入门数据,每种语言都可以找到几本。但想要一个囊括生信的书,就有些难了。本身生信跨领域,需要多学科的知识,而其内部又有不少分子,都囊括了太大,包括的少又有些隔靴搔痒的感觉。
我们当时都是零基础下自学Linux,  
自学Python,自学R,自学高通量测序;这些学习经历,之前都零星地记录在博客里。现在回头去看几年前自己记录的东西,觉得好简单,而当时却费了很大的力气。这些零星的随手记,当时也只是为了自己看,到现在确实只有自己能看得懂,不便惠及更多的人。
因此我们创建了生信宝典,希望从不同的角度传播知识。这个不同有三点含义,一是形式上的不同,摒弃之前主编们单人作战想写啥就写啥,而是有组织有计划的内容聚合,提供一系列的教程,由入门到提高。二是内容的不同,不去用网上现有教程的通用数据做例子,而是拿实际生物数据,讲述如何解释生信中普遍碰到的问题,讲述如何处理自己的数据。三是立足点不同。在写作时,我们回到了当年,在回忆中用整个阶段的学习去指导当初的那个小白,从那些会了的人觉得微不足道而不会的人又迈不过的坎入手,直击痛点。知识点的收录依据不是是否炫酷,是否难,而是是否必要。如果必要,再简单,也要提及;如果不必要,再炫酷,也暂不纳入。
通过大量的生信例子、关键的注释和浓缩的语句形成下面的一系列学习教程。每一篇内容都不多,可以当做小说阅读,也可以跟着去练,反复几遍,每读一次都会有不同的收获和体会。
教程合集

加拿大生信课程

Illumina测序应用手册

系列教程

蛋白质组学研究

转录组研究

单细胞

GEO/TCGA数据

扩增子三步曲

宏基因组教程

宏基因组分析专题

ChIP-seq专题

Linux 全介绍

CIRCOS系列

R统计和作图

NGS基础和软件应用

生信宝典之傻瓜式

Python

Cytoscape网络图

分子对接

文献精读

精选文章推荐

科研经验

软件和数据库

扩增子分析

宏基因组分析

实验设计与技术

文献精读

科普视频*寓教于乐

系列宣传

永久链接

回复 支持 反对

使用道具 举报

发表于 2024-12-27 11:59 | 显示全部楼层
看了一圈回答后,发现很多答主自己也是初学者,可能还在摸索中,回答也并没有真正抓到重点。作为一个过来人,我觉得这个问题其实非常重要,相信也困扰着不少人。我自己本来是学物理的,在2009年,大学三年级的时候,由于机缘巧合进入了华大基因创新班,从此跨行进入了生物信息和基因组学领域,应该说是最早一批接触NGS技术的人之一,期间做过很多大型的人类基因组学项目(https://www.researchgate.net/profile/Shujia_Huang/contributions),因此在这里我想结合自己的体会回答一下这个问题。
什么是生物信息学

生物信息学与以往的传统生物学不同,它本身是一个混合体,而且在今天看来它应当还要包含现在的NGS和基因组学。我认为,它重在数据,因此在这个领域中 比较重要的是数学和计算机——计算机我指的是:编程能力和算法设计能力。这是我的切身体会,许多生物知识其实可以往后慢慢学,不必一开始花费大量时间补充生物知识。
但生物信息毕竟还是和生物有关,毫无生物知识其实也说不过去。对于初学者来说,想要进入这个领域,我觉得一开始需要重点搞清楚几个基本概念。比如,什么是基因组,什么是转录组,什么是蛋白组,什么是染色体,什么是基因,什么是染色体重组,什么是进化/演化,什么是表观遗传,什么是变异,变异类型有哪些,NGS技术是什么,测序仪的工作原理是什么,DNA是如何被测出来的等这些东西。因为,你只有真正了解数据是如何来的,才能更好地明白数据该如何处理和分析,以及如何才能有效地挖掘出它背后隐含的生物知识
至于 分子生物学中诸多涉及细胞机制机理的知识我觉得在刚开始的时候反而可以缓一缓。我本来是学物理的,做生物信息可以说是半路出家,但其实没觉得有什么障碍,后来在实际需要的时候慢慢补上即可。推荐大家买本 《基因X》屯着——这是一本有厚度的基因必读书(曾经是《基因8》),作为参考书,平时有空的时候记得多翻翻




此外,我觉得尽量避免去看生物信息学导论那类书,很多都太旧了,用处不大是一个方面,关键是还会浪费不少时间。
好奇心、兴趣和目标

这应该是促进我们学习的第一要素。所谓,“知之者不如好之者,好之者不如乐之者”。兴趣的力量是强大的,基本上是你乐于继续下去的动力来源。如果仅是以赚钱为目的的话,那么我觉得还是另择一行吧,有很多其它更适合赚钱的领域。那么话说回来,要培养兴趣的话,我们可以先了解现在整个基因科技行业的发展情况,了解学习这些知识都可以做些什么,能够解决什么问题(在这些方面你如果感兴趣欢迎查看我微信公众号中的文章,我也有所谈及)。然后再定一个目标,完成一个具体的项目,自学最怕没有目的性,在没有他人可以指导的情况下,很容易迷失方向。但如果没条件的话,可以尝试利用现有的数据(比如:千人基因组,GIAB等)复现它们的成果,甚至构建一个分析流程也行,这样子学起来才会比较高效,同时也有利于夯实所学的知识。
使用Google

条件允许的话,请使用Google。在这个信息时代中信息已经足够多了,使用Google至少可以更快让你找到想要的东西,而学习生物信息,我们经常需要找东西。
那么,在有了上面这些基本的认识和目标之后,我们就可以开始了。
Linux

基因数据分析,极度不推荐在Windows下完成,有很多的工具不支持,而且不利于学习,也不利于我们对数据的理解。因此掌握Linux,特别是直接在Terminal中进行数据分析是必须的。
不过,不用太担心,我们不需要成为Linux专家。对于生物信息研究人员来说,只有了解Linux的文件系统结构,能够在Terminal中灵活运用基本的Linux命令就足够了,不过vi需要掌握——我们编写程序时需要用到它。但要 达成这些目标不需要看大部头的Linux书籍——这个也是我想给所有要学习生物信息的小伙伴们提个醒,这样可以节省很多不必要花的时间,不然等你看完一大本Linux书,恐怕兴趣也都被磨得差不多了,要直奔目标


我自己使用Linux的时间超过8年,,但是所使用的命令,合起来频度超过99%的竟然不超过20条!基本上就是在接触生信的第一天学会的,而对于聪明如你们的人来说,相信一定可以用更短的时间融汇贯通,对于这几个命令我简单列一下(注意都是在Terminal模式下):

  • pwd:列出当前目录的完整路径,明确你在哪;
  • cd :跳转到其他目录,两个好用的cd命令,”cd -“ 跳回最近一次的目录,”cd ..” 退回上一层目录;
  • ls:列出当前目录内容,最好加上 -l -rt 参数,会更加清晰,目的是明确目录下都有什么;
  • mkdir:创建目录;
  • rm:删除文件或者目录;
  • mv:重命名文件或者目录;
  • cat:打开文本文件,内容输出到屏幕;
  • less -SN:打开文本文件,这个是查看文本文件更合适的方式;
  • head -n:查看文件前n行;
  • tail -n:查看文件尾n行;
  • wc -l:计算文本文件的行数;
  • ”|“: 管道操作;
  • grep命令;
  • awk命令;
  • sed命令;
  • sort命令;
  • du -sh ./: 检查当前目录所占空间大小;
  • bc -l:启动Terminal下的计算器,可以在这里进行简单的数学运算,输入”quit”就可以退出;
  • chmod:修改文件或者目录权限;
这里推荐看一下”极客学院“中那一篇”一步一步学Linux“的文章,我觉得那篇博文就足够了。值得你多花些时间研究的是Linux中 “|” 管道命令的妙处。另外,掌握基本的grep,sed,awk操作。我之所以推荐这三个命令是因为,它们很适合快速进行简单的文本操作,可以让很多工作直接快速地在命令行上完成,而不需要编写程序。比如抽取一个文本文件特定的几列信息、匹配相关信息、修改输出等,用awk实现起来非常简单。上面这些掌握了之后,你再学习如何利用这些命令和相关执行程序组建简单的shell任务流程,到这个阶段,Linux部分基本就OK了。至于如何在Terminal中编译程序或者安装软件包,一般都有教程,按照教程来就可以了,真碰到问题可以多Google。
至少掌握一门高级编程语言

生物信息是一定离不开程序设计的,而且你不能只会R。我建议先学Python(不推荐Perl),它很容易上手——被称为”可执行的伪代码”,社区强大而活跃,碰到问题很容易找到解决办法。而且,支持组学数据分析的工具包也很丰富。还被誉为数据科学第一语言!不但可以进行文本处理,还可以进行统计分析,机器学习,或者作出精美的数据图等等,比起曾经的Perl真的强大很多。
在掌握了Python之后,我推荐的另一门高级语言是C(或者C++),它是难的,我之所以依然觉得有必要,是因为它可以让你具有干大事的能力。
虽然在实际的工作中Python已经足够强大,基本上可以应对项目中的各类大小事宜。但在我看来,如果你希望技术上做得更强,C一定是绕不开的,学会C/C++至少有两个好处:

  • 让你理解机器的工作原理,理解你的程序是如何运作的。这非常有助于你以后写出更加优秀的代码;
  • 设计高效率的算法模块,往往需要借助C/C++,而且设计出来的模块还可以很方便地包装起来用在Python中。同时,也有很多优秀的组学数据处理包是C/C++写的,比如,SSW、Bamtools和SeqAn——这个包很强大——我们可以用它编写比对算法,变异检测算法等。



Python如何调用C++

另外,我认为R是很容易学的,这里也无意起语言之争,虽然Python比R好。只要你有兴趣,在有了上面的基础之后,可以在很短的时间内学会。
Python教程很多!我这里推荐一下gitbook上的这个《简明Python教程》。另外,廖雪峰的Python教程也不错。
掌握常用的组学数据分析软件

生物信息的工具众多,不过数据分析过程中常用的工具和软件还是可以列出来的,主要是:bwa,samtools,picard,GATK,bedtools,bcftools,vcftools,FastQC,MultiQC,VEP这些。基本都是在构造如WGS、WES这类分析流程的时候需要被用到的。另外,还有关于GWAS的一系列分析工具等,这些其实可以根据后续的具体项目逐步深入。除了工具之外,基本的数据文件格式也必须认识,比如:Fasta,Fastq,BAM,gff,vcf等,我在下文中推荐的《Bioinformatics Data Skills》这本书里面就系统讲了诸多在基因数据分析过程用到的工具和文件格式解析,值得一读。
实践

“书上得来终觉浅,绝知此事要躬行”。实践是必须的,如果没条件的话可以到Rosalind这个网站上做些训练题,这上面有着很多有意义的生物信息题目,从难到易的都有,涵盖的面也比较广(包括RNA,DNA,蛋白),值得一战。另外要积极寻找到大型基因科技公司(比如华大基因)或者基因研究所实习的机会。


构建一个流程,敢于造轮子

在掌握了Linux和编程知识之后,建议利用公开的数据构造一个完整的数据分析流程,比如全基因组数据分析流程或者复现一个项目的全过程。现在最好的一个公开数据来自Genome in a bottle(GIAB) 。你可以用这个数据参考GATK的最佳实践或者不久前我写的一个“从零开始完整学习全基因组数据分析系列”的文章,构造一个WGS数据分析流程。需要注意的是,你在构建、复现甚至重造的时候,要尝试去理解各个环节的意义,不要只是机械地将一个分析过程串接起来,因为你的目的是学习,碰到问题时也尽量自己解决,这样才能真正掌握它。
数理知识

生物信息离不开数学,准确地说是离不开统计学。有太多的数据分析都需要统计学知识的参与,包括常用的假设检验,贝叶斯推断、随机森林,SVM,回归分析,PCA等。因此,在你获得初步的基因数据处理能力之后,更进一步应该去做的就是加强这方面的知识。
多看优秀的组学算法

站在巨人的肩膀上才能看得更远。生物信息领域有一个比较突出的特点,就是绝大多数的东西都是开源的,因此很多优秀的算法和程序你都能够在github上直接找到,比如,比对软件bwa和后缀树算法,Smith-waterman局部比对算法;基因组组装软件SOAPdenovo2的de Bruijn graph;变异检测GATK、freebayse、Platypus应用到的贝叶斯、最大似然、EM、Pair-HMM和高斯混合模型等;变异注释工具VEP,GWAS的一系列方法等。特别是GATK,它的问写的很优秀,因此值得多泡在它的一系列文档中。通过学习它们的源码,不但可以精进你的编程能力、算法设计能力,更重要的是还能让你深刻理解诸多组学数据分析的奥秘!这会在不知不觉中提升你对基因数据的理解,就如同维纳斯的面纱在你面前一点点被揭开了一样,有种豁然开朗的感觉,你不再觉得那堆东西很神秘了
不要固步自封

最后,一定要紧跟前沿。生物信息学以及现在的基因组学领域,知识的更新迭代可谓一日千里,可能半年不留神就会落后,所以平时一定要多看前沿的文章成果。但那么多杂志应该看哪些呢?我的建议是直接看最顶级的CNNS(Cell,Nature,NEJM,Science)杂志,如果时间不够用那么更加不必看其它的,原因有三个:

  • 这些顶级杂志所代表的基本上就是领域的最前沿——也正因此它们才会在CNNS上发表。虽然其它杂志也有可能,但概率低很多,因此不必浪费时间,要看就看最好的;
  • 这些杂志上的文章大多都能给你带来新的视角,能够开阔你的眼界。带来看待问题、解决问题的新思路和新想法,这会有助于你做出创新性的工作;
  • 我认为多看这类文章,也会有更高的概率在这类杂志上发表成果。
另外,也可以多看看生物探索、奇点网这些公众号,上面每天都会报道很多关于这个领域的前沿信息,当然也别忘了请一定要多!多!关!注!我!(认真脸)另外,加入一些优质的生物信息交流圈,有机会的话参加一些重要的基因组学会议,千万不要关起门来闷头学,一定要看着外面的世界
书和课程推荐

推荐两本基础的基因数据处理书籍,都是基于Python语言的:

  • 来自OReilly《Bioinformatics Data Skills- Reproducible.and.Robust.Research.with.Open.Source.Tools》主要偏重工具的使用和数据文件的处理,虽然讲的不是很深入,但是作为生物信息初学者的入门书来说还是十分有价值的,2015年出版的,也不算旧。


2. 第二本是《Bioinformatics with Python Cookbook》这一本相比于第一本来说会难一些,它会侧重于一些主题性质的内容,比如群体遗传学,基因大数据等。



这两本书都有pdf电子版。感兴趣的小伙伴可以在公众号后台回复“入门书籍”这四个字就可以获得了。
最后,再推荐几个在线课程。第一个是Coursera上的一个课程:genomic data science


这是约翰霍普金斯大学组织的一个系列课程,紧扣现在主流的组学数据分析,非常适合于入门学习,是一个精品系列,讲的很好,力荐,但是需要收费,只有7天的免费体验时间。
另外,EMBO上也搞了一个,在这里,不过我认为没有Coursera的系统全面,但它是免费的。


好了,最后,祝你学习快乐。



2018-03-31 更新:
我发现越来越多的朋友看到了这个回答,我把自己公众号的文章做了个整理,如果你有决心学习生物信息,我觉得你可以参考一下这个系列的文章:这是一个关于全基因组数据分析的系列文章,学习生物信息,你可以从最主流的WGS入手,它涉及到很多个方面的知识,看过之后(我发现手机端才能看全),相信你对生物信息和基因组学有一个初步的认识,祝你好运!
入门篇<hr/>
附以上入门篇的目录:



目录

喜欢更多的生物信息和组学文章,欢迎搜索并关注我的微信公众号:  helixminer
回复 支持 反对

使用道具 举报

发表回复

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

本版积分规则

关闭

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

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