生物信息学简史

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.算法训练营补day2(10.31)题目1: 209. 长度最小的子数组[https://leetcode.cn/problems/minimum-size-subarray-sum/]代码: 题目2: 59https://www.jianshu.com/p/79ee20cef81d
2.《C语言向量运算:点亮人工智能几何计算之路》通过深入理解其数学原理,并巧妙地运用 C 语言实现这些运算,我们能够在人工智能的几何计算世界里游刃有余,推动人工智能技术在更广泛的领域中实现创新与突破,为构建更加智能、高效的人工智能系统奠定坚实的数学与编程基础。https://developer.unity.cn/projects/676039fcedbc2a7bccf0f297
3.C++基础代码—20余种数据结构和算法的实现基本上可以分为两大类,一种是关于数据结构和算法的(例如:RBtree,stack),另一种是关于C++语言本身层面的(例如:reference_count,Uncopyable)。这些类,可以在如今C++标准库或者其它C++库(如:boost)中找到类似的实现,实现它们的目的不是想自己造轮子,而是通过实现,来深入的理解到一些更本质的东西。很多时候,人们往往“http://help.louzhutie.cn/?developer/article/2477584
4.计算机几何算法库(编程常用)计算机几何算法库是编程领域中一个非常重要的工具集,它主要涵盖了处理二维和三维空间中的图形、曲线和表面等几何对象的各种算法。这些算法在计算机图形学、游戏开发、CAD/CAM系统、地理信息系统(GIS)、机器人技术以及许多其他领域都有广泛的应用。下面将详细介绍从给定文件中提取出的一些关键几何算法及其应用。 ### 计算https://download.csdn.net/download/zxxyyxf/1235256
5.计算机工程与设计杂志中国航天科工集团第二研究院706所主办为提高遗传编程算法的泛化能力,提出基于自助法的遗传编程算法BGP。应用自助法从训练集生成自助数据集,计算训练集的训练误差和自助数据集的方差。设计融合训练误差和自助数据集方差的双层锦标赛选择策略,用于选择个体参与复制遗传算子,提高算法的泛化能力。实验结果表明,应用自助法能有效提高遗传编程算法的泛化能力,没有充分https://www.youfabiao.com/jsjgcysj/201703/
6.并行算法框架编译指令在高级别并行编程中的设计与实现【摘要】:随着计算机技术的发展,并行程序设计越来越流行,屏蔽并行程序底层细节的高级别的并行编程框架应运而生。并行算法框架是一类高级别的并行编程框架,它总结了一些常用的并行模式,封装了并行程序设计以及硬件架构的底层细节,提出了一种结构化的并行程序设计方式,能够让对并行程序开发没有经验的程序开发人员快速上手。https://cdmd.cnki.com.cn/article/cdmd-10558-1012027486.htm
7.数学建模论文模板15篇[通用]各种算法。 3.建模算法与编程知识(思想的具体实现) 了解各项算法。 各种算法以及编程具体实现,提前将代码准备好。 知道何种问题用何种算法,编程可以直接拿来用。 4.资料获取能力(文件检索) 各种网站与论坛(数学中国、校苑数模等)的资源的利用。 (可以建群讨论)(注册收集体力从而下载东西) https://www.yjbys.com/biyelunwen/fanwen/shuxue/734071.html
8.单片机原理及应用教程第4版第1章单片机应用基础概述在线免费当PC运行单片机等微处理器开发环境软件时,可以通过PC方便地实现对单片机等微处理器芯片的编程、编译、代码下载及调试,这时的PC通常称为上位机。PC作为上位机与单片机开发板通信如图1-4所示。 图1-4 PC与单片机通信连接 1.2 数制与编码 在计算机中,任何命令和信息都是以二进制数据的形式存储的。计算机所执行的全部操https://fanqienovel.com/reader/7110144623195982860
9.福建省教育厅关于公布福建省普通高中学业水平合格性考试信息技术(15)了解Visual Basic编程环境。 (16)了解在Visual Basic窗体中添加控件的方法。 (17)了解算法的思想与方法,了解使用自然语言、流程图及伪代码描述算法的方法。 3.信息资源管理 (1)了解常用的信息资源管理方法。 (2)了解信息资源管理的发展历程。 (3)能描述常用的信息资源管理方法的特点和优势。 https://fszx.lyun.edu.cn/info/1039/1057.htm
10.高中信息技术课程标准(1)结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。 (2)经历用自然语言、流程图或伪代码等方法描述算法的过程。 (3)在使用计算机解决实际问题的过程中,通过观看演示、模仿、探究、实践等环节,了解顺序、选择、循环三种基本结构及其重要作用,掌握计算机https://www.fqkhzx.cn/index/article/view/id/94.html
11.计算机应用数学12篇(全文)因而, 在实际的编写程序过程中要充分发挥数学算法对计算机编程的优化作用。在编写程序时融入数学算法的思想, 在C语言进行编写程序时, 通过不断地简化编写语言的流程, 使计算机编程得到优化。 进行程序设计时, 计算机专家必须要使用众多数学方法。只有以科学的数学方法做基础, 才能寻找出数据的共性, 设计出的计算机程序https://www.99xueshu.com/w/ikey304qnqm3.html
12.算法交易算法交易是一种使用自动预编程交易指令执行订单的方法,其中考虑了时间、价格和交易量等变量。这种类型的交易试图利用计算机相对于人类交易者的速度和计算资源。在21世纪,算法交易一直受到零售和机构交易者的青睐。被投资银行、养老基金、共同基金和对冲基金广泛使用这可能https://vibaike.com/124957/
13.新课标指导下的初中信息技术《算法思想初探》单元教学设计.docx学生通过算法思想学习和编程的过程体验,有助于把物理世界中的实际问题进行分析—抽象—建模—编程实现—调试优化,学会举一反三解决一类问题,达到知识迁移的高度。七、学习目标(1)理解算法的概念,明确算法对于程序设计的重要性。(2)学会使用自然语言和流程图描述算法。(3)理解算法的三种基本结构。(4)在用不同方法https://max.book118.com/html/2022/0916/8067134142004137.shtm
14.KuhnMunkres配对算法腾讯云开发者社区应用此算法我们可以解决许多配对问题。比如,离子液体中单个阴离子或阳离子带有电荷不便描述,若配对组成不带电荷的离子对,计算就变得容易[Phys. Chem. Chem. Phys.,2018, 20, 13547];又如,广义价键(Generalized Valence Bond, GVB)计算要求成键轨道与反键轨道配对成轨道对,对小型体系人们尚且可以手动完成,但对稍大https://cloud.tencent.com/developer/article/1679029
15.基于FPGA的数字卷积加减速算法的设计与实现AET采用FPGA硬件编程的方式实现加减速控制算法,简化系统结构,提高运算效率和算法的稳定性。 参考文献 [1] 郑金兴,张铭钧.梯形速度控制变插补周期的实时插补算法研究[J].机床与液压,2007(1):77-80. [2] 朱明,游有鹏,何均.S形加减速算法前瞻处理研究[J].小型微型计算机系统,2011(10):2140-2144. [3] 陈晓兵,廖http://www.chinaaet.com/article/3000010026
16.汽车行业车载智能计算平台深度研究:架构趋势格局当前阶段还处于算法快速迭代 时期,需要依托 FPGA 可编程性,进行开发过程不断试错。因此结合两者优势,形成当下主流 GPU+FPGA 的异 构解决方案。 未来自动驾驶芯片的核心架构是 ASIC。当前阶段 FPGA 的优势是算法快速迭代背景下开发的便利性,当 自动驾驶汽车量产,形成了较为稳定的算法后,ASIC 的量产低成本、性能高、https://www.dongchedi.com/article/7131900552548139560
17.招计算机类专业!2024招商银行招银网络科技社会招聘公告(深圳市1、大学本科以上学历,计算机、安全、数据等相关专业背景,3年以上算法经验; 2、扎实的编程基础,精通至少一门语言,如Python/Java; 3、熟悉机器学习、深度学习相关算法,熟练使用TensorFlow、PyTorch、Keras、MxNet等其中一种或多种深度学习框架; 4、了解大数据分析处理框架,如Hadoop/Spark/Flink/ES/Clickhouse; https://www.gaodun.com/jr/1590779.html