学习生物信息学,需要配置怎样的电脑呢?

Python0543

学习生物信息学,需要配置怎样的电脑呢?,第1张

首先的问题的是,我们需要什么样的计算机。

关于硬件:

需要至少4G内存,最好可以达到16G以上内存;

至少500G硬盘空间。通常一个RNA-seq的数据量为20G左右,如果再加上分析之后的结果,可能达到50G,所以即使你有500G的空间,也分析不了几组数据。所以硬盘空间越多越好,比如说2TB或者使用高速网络存贮界质。

CPU,至少2核。因为你在运行程序时,通常100%占到CPU,如果没有2核,计算机多半会假死在那里。如果有8核,或者以上更好。

GPU,很多程序开始使用GPU运算,如果能有好的GPU显卡,也是推荐的,但不是必须的。

为了达到以上的条件,入门极的比如说Mac Pro。进阶级的就是独立server,高级的是supercomputer clusters,支持qsub之类的。或者可以购买云计算服务。

对于操作系统,在工作站方面,推荐Mac OS。它运行稳定,与LINUX同源。需要下载安装Xcode和wget就可以了。当然你还可以很方便的安装office办公软件,以及photoshop,AI等工具。最后安装好R/Bioconductor,就可以开始工作了。如果买了兼容机,可以安装上Linux/UNIX系统。它在安装上R/Bioconductor之后基本上就可以了。它的缺点是办公软件,绘图软件的安装。最差的就是Windows了。需要安装比如GCC编译器,make工具,mingw64, perl, zip/unzip, tar, wget, ghostscript等等。

有了软件及硬件,接下来的工作就是了解一些常识以武装你的大脑,这是整个运行环境中最重要的一环。首先,你需要学习了掌握UNIX常用命令,并且不反感字符界面。其次学会安装,设置及构建网络服务,比如apache的websever,以及mysql的数据库服务。第三安装及设置一个Galaxy。当然,第二步及第三步可能会有难度,可以先使用Galaxy本身的服务,但是它有很多限制,所以最好还是自己安装一个比较好。第四步,学习一门计算机语言,比如c, python, ruby, java等,还有一门脚本式语言工具,比如perl。第五步,学习使用R/Bioconductor。第六步,统计学。

至此,你的NGS分析环境就设置完成了。如果快的话,你可以两三个月就设置完成,达到起步的阶段,之后就是漫长的学习过程。慢的话,四年本科也不一定学到多少。

ASP

ASP(Active Server Pages)动态网页,是微软公司推出的一种用以取代CGI(Common Gateway Interface)通用网关接口的技术。我们可以通过ASP结合HTML语言、ASP指令和ActiveX元件以及数据库等方面知识,使用自己的 Web 服务器创建并运行动态的交互式 Web 站点。ASP的主要优点大概可以归纳如下:

1、您可以用 VBScript 或JScript创建脚本,同时结合HTML语言就能够非常方便地完成网站的应用程序。对于 VBScript和JScript,使用哪种语言并不重要,Web 服务器等同地处理这两种语言,并向用户的浏览器发送 HTML 格式化结果。

2、因为ASP采用Script语言(VBScript和JScript)就可以轻松编写程序,因此这就大节省了网络设计人员又得重新学习一种新语言的时间。而且编写ASP无须手工compile编译或链接程序,可在服务器端直接执行,这无疑是更加方便了我们的编写过程。

3、使用普通的使用记事本之类的文本编辑器,即可进行编辑设计,如:Windows的记事本。建议不要用FontPage98或DreamWeaver2.0等主页制作软件修改,因为他们会破坏源代码的。在这里我建议使用CuteFTP携带的CuteHTML编辑器进行编辑设计。

4、ASP是运行在服务器端,所以我们无须担心浏览器是否支持ASP所使用的编程语言,用户端只要使用可执行HTML码的浏览器,即可浏览Active Server Pages所设计的网页内容。ASP在服务器端运行,当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。

5、ASP能与任何ActiveX scripting语言相容。除了可用VBScript或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,譬如Perl、Tcl等。脚本引擎是处理脚本程序的COM(Component Object Model)组件。

6、Active Server Pages的程序代码隐藏,在客户端上仅可以看到由ASP输出的动态HTML文件。因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。

7、可使用服务器端的脚本来产生客户端的脚本。

8、面向对象(Object oriented),并可扩展ActiveX Server组件功能。

9、ActiveX Server Components(ActiveX服务器组件)具有无限可扩充性。你可以使用任何编程语言来编写你所需要的ActiveX Server 组件。

10、可以通过ADO(ActiveX Data Objects,微软的一种新的数据访问模型,是一种可以提供WEB页面开发者轻松存取Internet的数据库,并可以在用户端实现网上立即、即时更新显示的最新WEB页面数据库技术。)非常方便地访问数据库,从而使存取数据库变得轻松容易。

JSP

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,本文简单介绍JSP及其优点。

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。

在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。

JSP的优点:

·对于用户界面的更新,其实就是由 Web Server进行的,所以给人的感觉更新很快。

·所有的应用都是基于服务器的,所以它们可以时刻保持最新版本。

·客户端的接口不是很繁琐,对于各种应用易于部署、维护和修改。

Python

首先就以语法而论,python完全没有perl的灵活紧凑。只能说是中庸,感觉和basic,pascal,java差不多。一个简单的问题,如果没有相应的类库,也要写上一段臃肿的代码。唯一的好处是代码臃肿却直白,容易看懂--和basic一样。

类库-比perl真的是大大不如,只能覆盖很小的范围,更不用说java了,很多需要的工作都要自己来做。

快速开发--说实话,我觉得用python和用C++效率差不多。谁能告诉我python效率比C++高在哪里吗?对于perl我则可以毫不犹豫的说,是它语法的灵活,对于字符处理能力的强大。

很多人说python适合大型工程,但更多的人说,他们用python不过是作为一种原型语言来使用。。这本身不就有点矛盾吗?呵呵 而且对于脚本来完成大型工程,我本身就持怀疑态度。

觉得python唯一的优点在于嵌入C++使用时体现出来的:支持OO,语法容易看懂,有一个boost.python

不是想引起论战,只是不吐不快

Ruby

Ruby是面向对象的编程语言,她追求的是“简便快捷的面向对象编程”。Ruby是解释型语言,因此不需编译即可快捷地编程。同时Ruby具有类似Perl的强大的文本处理功能,她可并不只是个玩具,您可以用她来进行实用的编程。此外,您还可以很方便地使用C语言来扩展Ruby的功能,因此可以把她当作各种库的前端来使用。

若您曾经“想要一种简单的面向对象的语言”,或者认为“Perl的功能虽然好用,但它的语法真让人受不了”,又或者觉得“lisp系列语言的思想不错,但到处都是括号真让人讨厌,最起码算式应该按照通常的样式书写”。那么,Ruby或许能让您满意。

归纳以来,Ruby有以下优点。

解释器

Ruby是解释型语言,其程序无需编译即可轻松执行。

变量无类型

Ruby的变量没有类型,因此不必为静态的类型匹配而烦恼。相应地,错误检查功能也变弱了。

不需要变量声明

所有变量均无需声明即可立即使用。另外,从变量名即可判断出是何种变量(局部变量,全局变量,实例变量)。

语法简单

语法比较简单,类似Algol系语法。

不需要内存管理

具有垃圾回收(Garbage Collect,GC)功能,能自动回收不再使用的对象。

一切都是对象

Ruby从一开始就被设计成纯粹的面向对象语言,因此以整数等基本数据类型为首的所有东西都是对象,它们都有发送信息的统一接口。

类,继承,方法

Ruby当然具有面向对象语言的基本功能。

特殊方法

可向某对象添加方法。例如,可以把GUI按钮被按下时的动作作为方法记述下来,还可以用它来进行原型库(prototypebase)的面向对象编程(有人这么干吧)。

用模块进行混合插入(Mixin)

Ruby故意舍弃了多重继承,但拥有混合插入功能。使用模块来超越类的界限来共享数据和方法等。

迭代器

该功能可以将循环抽象化。

闭包

可以将某过程片段对象化。对象化后的该过程片段就称作闭包。

功能强大的字符串操作/正则表达式

以Perl为样板创造出了功能强大的字符串操作和正则表达式检索功能。

拥有超长整数

添加超长整数功能后,可以计算非常大的整数。例如计算400的阶乘也轻而易举。

具有错误处理功能

错误处理功能可以使您编写代码处理出错情况。

可以直接访问OS

Ruby可以使用(UNIX的)绝大部分的系统调用。单独使用Ruby也可以进行系统编程。

动态加载

若OS支持的话,可以在运行时读入对象文件。

但Ruby也有下列缺点。

Ruby On Rails,优点是不像Struts那样需要大量的配置文件,一切都采取默认的配置,包括访问路径,uri等,而这也是它的缺点,不能灵活的配置。

见笑,小弟看了几天,一点见解。

RERL

第一. Perl强大的正则表示式(regular expression)比对以及字符串操作使这个工作变得简单而没有其它语言能相比。Perl 非常擅长于切割,扭转,绞,弄平,总结,以及其它的操作文字文件。生物资料大部分是文字文件:物种名称,种属关系,基因或序列的注解,评住,目录查阅, 甚至DNA序列也是类文字的。现在互相交换以以文字文件的形式存在的但是具有不兼容的资料格式生物信息资料是一个很头疼的问题,perl的这个方面的优点,可以在这一方面解决不少问题.

第二. Perl 能容错。生物资料通常是不完全的,错误或者说误差从数据的产生时候可能就产生了.另外生物数据的某项值栏位可以被忽略 ,可能是空着的,或是某个栏位也就是某个值,被预期要出现好几次(举例来说,一个实验可能被重复的操作),或是资料以手动输入所以有错误。Perl并不介意某个值是空的或是有奇怪的字符。正规表示式能够被写成取出并且更正错误的一般错误。当然这种弹性也可能是各坏处。

还有,Perl 是组件导向的。Perl 鼓励人们将他们的软件写成小模组,不论是用 Perl 函式库模组或是正统的 Unix 工具导向的方式。外部程序能够轻易的被整合进 Perl 程序,靠着管道(pipe),系统呼叫,或是插座(socket)。Perl5 引进的动态载入器允许人们使用 C 的函式,或者让整个编程过的函式库,被使用在 Perl 直译器中。最近的成果是世界各地的智能结晶都会收录在一组模组里面,称为”bioPerl”(请参考 Perl Journal)

Perl 很容易去写并且能很快开发完。直译器让你不需要宣告你所有的函数型式以及资料型态,当未定义的函式被呼叫时只会引起一个错误,除错器也能与Emacs很好的合作并且让你能用令人舒服的交谈式的开发模式。

Perl 是良好的原型语言。因为它快而且脏(quick and dirty),用 Perl 建构新演算的原型比直接写成一个快的需要编程过的语言来的有意义。有时候发现结果是Perl已经够快了,所以程序变不需要移植更多情形是某人可以用C写一个小的核心程序,编程成动态载入的模组或是外部的可执行程序,然后其它的部分用Perl来完成。这部分的例子可以参考 http://waldo.wi.mit.edu/ftp/distribution/software/rhmapper/)。

有一点要强调的是, Perl 在写作网页 CGI 方面非常优秀,而且重要性随着各实验将资料发表在网络上之后更是增加。我在基因中心环境下使用 Perl 的经验从头到尾都是值得称赞的。然而我发现 Perl 也有它的问题。它的松散的程序风格导致许多错误,这些在其它严格的语言都会被抓到。举例来说,Perl 让你在一个变数在被指定值之前就能使用,这是个很有用的特性当你需要的时候,但是却是一个灾难当你单纯的打错了辨识名称。同样的,很容易忘记要宣告一个函式里面的区域变数,导致不小心地改到了全域变数。

最后,Perl 的不足之处在于建立图形化的使用者接口。虽然 Unix忠实信徒所有事情都能在命令模式下完成,大多数的终端使用者却不同意。视窗,选单,弹跳的图案已经变成了必要的时尚。

直到最近,直到最近,Perl 的使用者界面(GUI)发展仍是不成熟的。然而 Nick Ing-Simmons的努力使得 perlTK(pTK) 的整合使得以 Perl 驱动的使用者接口在 X-window上面成为可能。我的伙伴和我曾经在 MIT 基因中心写过几个 pTK 为基础的应用程序供互连网使用者,而且从头到尾都是一个令人满意的经验。其它的基因中心则更大规模的使用 pTK,在某些地方已经成为主要的生产力。

软件很多 最好先学习底层的C 因为很多东西的底层都是用C来做 C++不错 我蛮喜欢的 JAVA现在是最流行的 也是完全面向对象的高级语言 而且夸平台 RUBY 日本做的语言 优点是可以快速开发一些小软件 还有PERL PYTHON 这两个差不多 PYTHON的语法严谨些 可以快速开发大型程序 PERL在生物信息方面也有突出的特点 MATLAB工程数学软件

我自己学习软件的是顺序是

/C++-VC-MFC-C#

C-JAVA-RUBY-PERL

\MATLAB-FORTRAN

PRLOG没有编程经验的也能学 逻辑式编程语言 用开开发专家系统

学习一种语言 还要同时学习他的数据结构 还要学习算法 因为程序=算法+数据结构

(我现在只用MATLAB C PRLOG FORTRAN PERL :))

现在还有D语言 国内还不是很广泛 有兴趣可以看下