生物信息学简史

50年代后期,人们得到了胰岛素的蛋白质序列,这一成就激励人们去开发获得蛋白质序列更有效的方法。Edman降解法就是其中之一,肽链的第一个N-末端氨基酸用异硫氰酸苯酯(PITC)标记,然后通过降低pH来进行切割。通过重复该过程,一次一个N-末端氨基酸进而可以确定肽序列。

MargaretDayhoff(1925-1983)是一位美国物理化学家,他开创了计算方法在生物化学领域的应用。Dayhoff对这一领域的贡献非常重要,NCBI前主任DavidJ.Lipman称她为”生物信息学的母亲和父亲”。1960年,她成为国家生物医学资源基金会的副主任。与RobertS.Ledley一起开发出了第一个生物信息学软件:COMPORTEIN,用于使用Edman测序数据确定蛋白质的一级结构,使用fortran语言开发并运行在打孔卡上,完全运行在这个软件运行在IBM7090大型机上,如下图A所示

在COMPROTEIN软件中,输入和输出氨基酸序列以三个字母的缩写表示(例如赖氨酸的Lys,丝氨酸的Ser)。为了简化蛋白质序列数据的处理,Dayhoff后来开发了目前仍在使用的单字母氨基酸代码。这个单字母代码最初用于Dayhoff和Eck的1965年蛋白质序列和结构图谱,而它是有史以来第一个生物序列数据库。第一版包含65种蛋白质序列,其中大部分是少数蛋白质的种间变异。

1970年,Needleman和Wunsch开发了第一个成对蛋白质序列比对的动态编程算法,80年代早期,做为Needleman-Wunsch算法的推广,第一个多序列比对(MSA)算法首次公布,但是这个算法并没有太大的价值。

多序列比对第一个真正成熟的算法由Da-FeiFeng和RussellF.Doolitle于1987年开发,流行的MSA软件CLUSTAL开发于1988年,作为Feng-Doolittle算法的简化至今仍在使用和维护。

蛋白质到DNA:1970-1980

1968年,64个密码子都被解析出来,DNA成为可读信息后要求我们能都快速获得DNA序列。

第一种被广泛采用的DNA测序方法是1976年发表的Maxam-Gilbert测序方法。由于该方法使用了放射性和危险化学品,同时其固有的复杂性在很大程度上阻碍了其用于支持FrederickSanger实验室开发的方法。Sanger团队在1977年开发出名为“plusandminus”的DNA测序方法,这是第一个要依赖DNA聚合酶进行而成的方法,对该方法进行改进后诞生了目前常见的Sanger双脱氧链终止法,即使在成立40年后的今天它仍在广泛使用中。

第一个专门用于分析Sanger测序读数的软件由RogerStaden于1979年发表。该程序集可分别用于

StadenPackage是第一个包含附加字符(Staden称为“不确定代码”)的序列分析软件,以用于记录序列读取中的非确定性碱基。这种扩展的DNA字母表是现代IUBMB(国际生物化学和分子生物学联合会)命名法的前身之一,用于核酸序列中未完全指定的碱基。

Felsenstein是第一个利用最大似然(ML)方法从DNA序列推断系统发育树的软件。在Felsenstein之后已经开发出了若干种使用ML的生物信息学工具以及用于评估节点稳健性的新统计方法。从某种程度上,在20世纪90年代人们因此受到启发,将贝叶斯统计应用在分子系统发育中并使用至今。

在20世纪70年代后半期,人们又必须克服一些技术限制以扩大计算机在DNA分析中的应用(更不用说DNA分析本身)。接下来的十年是解决这些问题的关键。

与蛋白质和RNA不同,基因不能进行生物化学分级然后单独测序,因为它们都是连续地在每个细胞的少量DNA分子上连续存在。基因通常以每个细胞一个或几个拷贝存在,基因的数量级比它们编码的产品的数量级少很多,可以说DNA是可以测序的最不丰富的大分子细胞成分。

操纵DNA的第二个里程碑是聚合酶链式反应(PCR)的出现,它允许在没有克隆程序的情况下扩增DNA。尽管使用DNA聚合酶进行"修复合成"的描述是在1971年由KjellKleppe等人首次提出的。但PCR的发明却要归功于KaryMullis,因为他对该方法进行了大量优化,特别是使用热稳定Taq聚合酶,以及开发热循环仪。

在20世纪70年代之前,所谓的“小型计算机”仍然相当于一台小型家用冰箱的尺寸和重量(如下图所示),而且还不包括终端和存储单元。这样的体积限制使得个人或小型工作组的计算机购置变得异常繁琐。而且使用起来也异常的不友好。

第一波即用微型计算机于1977年进入消费市场。这一波浪潮出现的首批计算机包括三种型号:CommodorePET,AppleII和TandyTRS-80,在比试,它们代表着体积小,价格低廉和用户友好。这三种计算机都具有一个内置的BASIC解释器,这对于非程序员而言是一种简单的语言。

生物学计算机软件亦开始迅速发展。1984年,威斯康星大学遗传学计算机课题组(GeneticsComputerGroup)发表了与他们同名的“GCG”软件合集。GCG软件包是包括33个命令行工具的集合,可以用于操作DNA,RNA或蛋白质序列。要记住,这是为序列分析开发的第一个软件集合。

生物信息学和自由软件运动

1985年,RichardStallman发表了GNU宣言,概述了他创建名为GNU(基于Unix)免费操作系统的动机。这一运动后来成长为自由软件基金会(FreeSoftwareFoundation),该基金会倡导”用户可以自由运行,复制,分发,研究,改变和改进软件”的理念。Stallman倡导的自由软件哲学是生物信息学的若干倡议的核心,其它的倡议还包括如欧洲分子生物学开放软件套件,其发展始于1996年,作为自由和开放源码用来替代GCG。

最重要的是,在此期间欧洲分子生物学实验室(EMBL),GenBank和日本DNA数据库(DDBJ)开始联合起来(1986年EMBL和GenBank加入,1987年DDBJ加入)。为了规范化数据格式定义了报告核苷酸序列的最简信息,并促进数据库之间数据共享。

20世纪80年代也是生物信息学在现代科学中存在感足以获得专门期刊的时刻。鉴于计算机可用性大幅提高以及在生物领域进行计算机辅助分析的巨大潜力,专门针对生物信息学的期刊ComputerApplicationsintheBiosciences(CABIOS)于1985年成立,现在这个期刊已经更名为为Bioinformatics。

自由软件运动和专用科学期刊的出现拓宽了生物学中计算机的使用范围。然而,对于诸如全基因组和基因目录的大型数据集,使用小型大型计算机而不是微型计算机。这些系统通常在类Unix操作系统上运行,并且使用不同于微型计算机上常用的编程语言(例如C和FORTRAN)(例如BASIC和Pascal)。因此,为微型计算机制造的流行序列分析软件并不总是与大型计算机兼容,反之亦然。

随着20世纪80年代早期x86和RISC微处理器的出现,出现了一类新的个人计算机。桌面工作站专为技术和科学应用而设计,具有与微型计算机相当的尺寸,但具有更高的硬件性能,以及更类似于大型计算机的软件架构。事实上,桌面工作站通常运行在Unix操作系统和衍生产品上,如HP-UX和BSD(图3)。

20世纪80年代中期出现了几种脚本语言,这些语言在今天的生物信息学家中仍然很受欢迎。这些语言抽象了计算系统的重要领域并利用了自然语言特征,从而简化了程序开发的过程。用脚本编写的程序通常不需要编译(即它们在启动时被解释),但执行速度比从C或Fortran代码[61]编译的等效程序要慢。

Perl(实用提取和报告语言)是一种高级,多范式,解释性脚本语言,由LarryWall于1987年创建,作为GNU操作系统的补充,以便于解析和报告文本数据[62]。其核心特征使其成为操纵生物序列数据的理想语言,其在文本格式中得到很好的体现。用Perl编写的最早出现的生物信息学软件可以追溯到1994年(表2)。直到21世纪后期,由于其极大的灵活性,Perl无疑是生物信息学的通用语言[63]]。正如拉里·沃尔(LarryWall)所说,“实现目标的方法不止一种”。BioPerl于1996年的发展(以及2002年的首次发布)促成了Perl在生物信息学领域的普及[64]。该Perl编程接口提供便于典型但非平凡任务的模块,例如(i)从本地和远程数据库访问序列数据,(ii)在不同文件格式之间切换,(iii)相似性搜索,以及(iv)注释序列数据。

但是,Perl的灵活性,加上其严格的语法,很容易导致代码可读性低下。这使得Perl代码维护变得困难,特别是在几个月或几年后更新软件。与此同时,另一种高级编程语言将成为生物信息学领域的主要参与者。

Python就像Perl一样,是一种高级的多范式编程语言,最初由GuidovanRossum于1989年开发。Python更简单的语法使代码读取和维护更容易。2000年之后,Python才开始逐渐成为生物信息学中的主要编程语言。除了Perl和Python之外,一些非脚本编程语言起源于20世纪90年代早期,后来也加入了生物信息学领域。

首个全基因组测序项目是1995年由遗传学家J.CraigVenter领导的对流感嗜血杆菌进行的测序,然而正如我们所知道的那样,开始基因组时代的真正转折点是人类基因组在21世纪初的正式公布。

人类基因组计划于1991年由美国国立卫生研究院(NIH)发起,13年内耗费27亿美元。1998年,CeleraGenomics(一家由Venter运营的生物技术公司)领导了一项竞争性私人形式的人类基因组测序组装项目。最终Celera支持的该计划用NIH项目花费的十分之一成功完成人类基因组进行了测序和组装。两者成本之间的10倍差异主要是由于不同的实验策略和Celera项目使用了部分NIH的数据。

除了费力的实验程序外,科学家还必须设计专门的软件来应对这种前所未有的数据量。几个早先基于Perl的软件就是在20世纪90年代中后期开发用于组装全基因组测序reads的,比如:PHRAP,CeleraAssembler,TIGRAssembler,MIRA,EULER等等。

基因组学时代的早期,20世纪90年代初出现全球化的信息网络扮演者另一个重要角色。正是通过这个网络,NIH资助的人类基因组测序项目可以公开其数据。很快,这个网络将在科学界无处不在,特别是在数据和软件共享方面。

20世纪90年代初,TimBerners-Lee在欧洲核子研究中心(CERN)担任研究员时发起了万维网,这是一个由相互关联的文件组成的全球信息系统。自20世纪90年代中期以来,网络已经彻底改变了文化,商业和技术,并在人类历史上第一次实现了近乎即时的通信。

该技术还促成了世界各地许多生物信息学资源库的创建。例如于1993年在网上公布的世界上第一个核苷酸序列数据库EMBLNucleotideSequenceDataLibrary。几乎同时,1992年GenBank数据库也成为NCBI负责的主要内容之一。然而,那个时候的GenBank与今天截然不同,其首次发行是以印刷品和CD-ROM的形式。此外,NCBI于1994年开始提供在线服务,随后建立了今天仍在使用的几大主要数据库:Genomes(1995),PubMed(1997)和HumanGenome(1999)。

生物信息学软件通常需要先前了解类UNIX操作系统,还需要使用命令行(用于安装和使用)和安装多个软件库(依赖项)才能使用,即使对熟练的生物信息学家而言谈不上直观。但是Web资源的兴起扩大并简化了对生物信息学工具的获取,人们可以通过友好的图形用户界面在Web服务器上进行操作。越来越多的开发人员尝试通过易于使用的图形Web服务器向科学界提供他们的工具,从而无需执行严格的安装过程即可分析数据。核酸研究杂志每年都会发布关于这些工具的特刊。

DNA测序随着二代测序(也称为新一代测序或NGS)的出现而平民化。这种测序始于454焦磷酸测序技术,该技术允许在一台机器对数千至数百万个DNA分子进行测序。处理来自454数据的黄金标准工具Newbler至今仍然由Roche维护,直到2016年454逐步被淘汰。现在其他几家公司和技术正活跃在市场,也有众多工具可用于处理这些数据。

高性能生物信息学和协作计算

生物信息学项目的繁荣加上数据量呈指数增长需要资助机构逐渐适应。对于绝大多数科学研究,生物信息学项目当然也需要资源。虽然在某些情况下简单的台式机就足够了,但一些项目需要更加强大、昂贵且需要特殊专业知识的基础设施。一些政府资助的专门从事高性能计算的资源已经出现,例如:

高性能计算的重要性也促使一些公司,如亚马逊和微软提供生物信息学服务。

例如,一些作者建议将“生物信息学家”这一术语保留给生物信息学领域的专业人士,包括那些开发,维护和部署生物信息学工具的人。另一方面,还有人建议任何生物信息学工具的使用者都应被授予生物信息学家的地位。当然,还有另一个试探性的方法(可能是为了幽默),即通过反面来定义如何不成为一个生物信息学家。

然而可以肯定的是,随着用户友好型工具的显着增加,通常可通过Galaxy等综合Web服务器获得,以及诸如SEQanswers和BioStar]等社区的发展。在学术和企业就业市场上,生物信息学家也存在着爆炸性的需求。为了满足这一需要,有必要督促大学调整其生物科学课程的设置。

现在,那些不直接参与生物信息学项目的生命科学家也需要熟练掌握基本概念以了解生物信息学工具的精妙之处,同时避免滥用和错误地结果解读。

国际计算生物学学会根据三个用户类别(生物信息学用户,生物信息学科学家和生物信息学工程师)发布了在其课程中应具备的核心能力指南和建议。所有三个用户类别都包含核心竞争力,例如:1、使用计算生物学实践所需的现有技术,技能和工具2、应用分子生物学,基因组学,医学和群体遗传学研究中的统计研究方法和一般生物学知识

3、至少对生物学领域有深入了解,以及对生物数据生成技术的理解

为剩下的两个类别还定义了额外的能力,例如:

1、生物信息科学家:分析问题并确定和定义适合其解决方案的计算要求

2、生物信息工程师:在建模和设计计算系统时应用数学基础,算法原理和计算机科学理论

在尝试定义生物信息学专业之前,生物信息学这个词本身可能需要适当的定义。事实上计算机的使用已经在生物学以及大多数自然科学(物理学,化学,数学,密码学等)中普遍存在,但有趣的是只有生物学有一个特定的术语来指代计算机的使用。为什么?

首先,生物学在历史上被认为处于“硬”和“软”科学的分界线上。其次,在生物学中使用计算机需要对大分子(即核酸和蛋白质)结构有一定了解。这导致生物学比其他“硬”科学(如物理学和数学)更晚地计算机化。毕竟第一台计算机就是专门用于解决物理领域的数学计算问题。

这些因素的结合可能会解释为什么生物学和计算机之间的联系并不是显而易见的。这也可以解释为什么“生物信息学”一词的使用仍然是常用的。今天,当几乎任何研究工作都需要使用计算机时,人们可能会怀疑这个术语在未来的合理性。生物信息学家C.TitusBrown在第15届年度生物信息学开源会议上对此进行了有趣的思考,他介绍了当前生物信息学的历史,不过是从2039年的一个生物学家角度进行讲述了这一点。在他假设的未来,生物学和生物信息学紧密交织没有必要区分彼此,大家都被称为生物学。

20世纪后期见证了生物学中计算机的出现,它们的使用以及不断改进的实验室技术使得研究工作日益复杂。尽管对单个蛋白质或基因的测序可能是20世纪90年代早期的博士论文主题,但博士生现在可以在他/她的研究生阶段就分析许多微生物群落的集体基因组。当时确定蛋白质的一级结构都是复杂的,但是现在可以识别样品的整个蛋白质组。生物学现在已经采用了很多整体方法,但在不同的大分子类别(例如基因组学,蛋白质组学和糖组学)中,每个子学科之间还鲜有交叉。

人们可以预见到下一个飞跃:不是独立研究整个基因组,整个转录组或整个代谢组,而是对整个生物体及其环境进行计算建模,同时考虑所有分子类别。事实上,这一壮举已经的生殖支原体的全细胞模型中实现,其中所有基因,它们的产物和已知代谢相互作用都已在计算机中重建。也许我们很快就会见证一个电子计算机多细胞生物模型。尽管对于数百万到几万亿的细胞建模似乎是不可行的,但必须记住我们现在做的也是十年前在计算能力和技术上认为不可能实现的事情。

THE END
1.10大计算机经典算法「建议收藏」腾讯云开发者社区3. 若队列为空,表示整张图都检查过了——亦即图中没有欲搜寻的目标。结束搜寻并回传“找不到目标”。 4. 重复步骤2。 算法八:Dijkstra算法 戴克斯特拉算法(Dijkstra’s algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到https://cloud.tencent.com/developer/article/2089934
2.算法到底是什么?(小白必读)问题不同,解决的思路和采取的方法与步骤就有针对性,所以对应的算法也各不相同。但是,各种算法有如下共同之处:首先计算机要有操作对象,通过输入,给予计算机问题所涉及的对象;最后要能得到运行结果,即有输出;在输入与输出之间是具体的方法和步骤,这些方法和步骤必须是确定的、正确的、有限的、有效的、通用的。https://baijiahao.baidu.com/s?id=1794500673477721607&wfr=spider&for=pc
3.计算机算法有哪些编程:算法的定义是常用算法有计算机算法有哪些 A.编程:算法的定义是常用算法有 算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不同的人可以编写出不同的https://www.ultimate-communications.com/zh/system_418763
4.python的算法有哪些python常用算法有哪些python的算法有哪些 python常用算法有哪些 1. 引言 据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不知道为何要将这五个算法归为最常用的算法,但是毫无疑问,这五个算法是有很多应用场景的,最优化问题大多可以利用这些算法解决。算法的本质就是解决问题。当https://blog.51cto.com/u_16213559/6974323
5.Alibaba最新1000多道Java面试题汇总详解,收藏起来慢慢刷!我分享的这份春招 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝https://maimai.cn/article/detail?fid=1728969401&efid=esjJLvGGL4fAr1LArgq_cQ
6.计算机算法的五个特性是什么?常见问题没有输出的算法是毫无意义的; 可行性(Effectiveness) 算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)。 以上就是计算机算法的五个特性是什么?的详细内容,更多请关注php中文网其它相关文章!https://www.php.cn/faq/464488.html
7.金字塔模板匹配算法,模板匹配算法有哪些,C,C++**金字塔模板匹配算法详解** 模板匹配是计算机视觉领域中一种重要的图像分析技术,它主要用于寻找一个小型图像(模板)在大型图像中的最佳匹配位置。在实际应用中,如人脸识别、物体检测、图像检索等场景,模板匹配都有广泛的应用。本文将深入探讨金字塔模板匹配算法及其在C++和OpenCV库中的实现。 ### 1. 模板匹配基础 模https://download.csdn.net/download/weixin_42696333/22364212
8.比特币挖矿软件有哪些?比特币挖矿软件推荐区块链技术区块链比特币挖矿是一种通过计算机处理复杂算法来验证比特币交易并获取新的比特币的过程,选择一个好的挖矿软件是非常重要的,它可以帮助您提高挖矿效率,并获得更多的比特币,那么,比特币挖矿软件有哪些?以下是我对比特币挖矿软件的介绍 比特币挖矿是通过计算机硬件解决数学难题以验证和记录比特币交易的过程,而讲到比特币挖矿除了https://www.jb51.net/blockchain/909622.html
9.100个网络基础知识普及,看完成半个网络高手有7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。 3)什么是骨干网? 骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。 4)什么是 LAN? LAN 是局域网的缩写。它是指计算机与位于小物理位置的其他网络设备之间的连接。 https://www.ahstu.edu.cn/wlzx/info/1115/2156.htm
10.韩信竟是数学大师?中国古代数学启发计算机加密算法时至今日,中国剩余定理已经成为了很多计算机加密算法的基础,它的应用范围已经超乎你的想象。 影响当今计算机算法 外媒Quantamagazine在一篇名为《古代战争计策是如何影响当代数学》的文章中也提到:中国剩余定理对现代数学、计算机算法、天文学等领域都有很大的启发意义。 https://www.thepaper.cn/newsDetail_forward_14592114
11.算法概述著名计算机科学家沃思提出了下面的公式:程序 = 数据结构 + 算法; 实际上,一个程序应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言来表示。因此,可以用下面的公式表示:程序 = 算法 + 数据结构 + 程序设计方法 + 语言和环境; 常见算法有许多种 https://www.jianshu.com/p/8c8d20a9bde8
12.计算科学:什么是算法?如何编写代码算法?学习如何驾驶汽车意味着学习很多很多的道路规则。我们在驾驶时执行的大多数操作都可以被认为是算法。通过侧方停车、改变车道甚至停车的正确过程都有一组特定的步骤,使它们成为算法。 您还能想到哪些其他例子? 算法 五、算法的类型 计算机科学算法的最基本类型是: https://kidscodes.cn/9038.html