`
bluky999
  • 浏览: 718282 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Bioinformatics领域的Java应用

阅读更多

对于做Bioinformatics领域的开发工作的朋友,有相当一部分有着Java平台的技术水平。 那么,Java究竟都有哪些具体应用呢? 这里笔者将结合自己的实际工作,小谈一点想法。


第一部分

单就Java语言来讲,它可以开发各种类型的程序,甚至包括较底层的驱动程序开发,以及移动设备上的各种程序开发、嵌入式开发,也许这正是java本身的优势或者说特点吧。 那么,对于bioinformatics领域,我们可能涉及到的java程序大概有如下几种:

1 Java Application :这个名称其实只有java开发者明白它的界定,还要具体再分:

 (1 以.jar 形式分发的java app程序,这种是最常见的了,只要使用java -jar filename.jar [arguments] 即可执行;也许这就是java中的cli程序?。。。

 (2 GUI程序:很常见,带有GUI界面的java程序,最大特点就是平台无关,所谓到哪都会讲方言,界面风格与OS一致;GUI目前还可以分很几种: AWT,SWING,SWT,其中的SWT可不只局限于GUI程序,它可以构建更加复杂的信息系统。

 (3 .jnlp 程序:其实这只是java app的另一种部署方式,避免了客户端更新程序等等,直接使用SUN的jws就可以管理和更新。

 

2 Java Web Application :这种类型占有很大的比重;从一个小型的可视化应用,到包含而不限于大数据集的存储、检索、统计、管理等等操作的复杂应用系统,Java都可以胜任;而且,不同于电信和金融行业,Bioinformatics领域的数据有着自己的特点和性质;虽然由于历史原因等,在Bioinformatics领域,perl所构建的复杂web application不在少数;但是,在当今的环境下,系统的集成、互联互通、重构等等需求越来越多,perl在这些方面的表现相比就没有Java那么优秀了。 

如果说要对这种类型再具体划分子类,那么我也只能粗略地分为简单型和复杂型。简单型比如基于一个小物种的基因组注释数据而构建的web应用,它其实就是把数据存储与后台的数据库,然后在web前端通过图形和表格进行可视化而已,并且后台的数据更新频率非常低,甚至根本不会更新。 复杂型,比如类似ensembl,EBI的webservice等等,Java平台是开发此类应用的首选。


3 API级别 : 最典型的大家都熟悉 - BioJava ,BioXXX之一;其实除此以外,还有很多民间开发的API,只不过由于没有一个组织来收集整理并管理这些资源,所以他们也只是散落与民间而已。

 

4 如果说还有一类,那么就是java的applet了 ;这是java独有的;在web页面,有时候它能帮你解决或者避开一个复杂的问题; 就像如今连facebook的图片上传组建都是java applet构建的。 为什么? 因为今天,java 就好比一个记事本一样地安装在各种平台的系统中,所以我们不用担心,更何况主流的浏览器都有支持,而且默认的选项都是选中“允许java”的。至于最终用户,他们会管你java不java么? 不会,他们只关心自己的照片到底能不能方便地上传。所以只要我们对applet签名,并且用户允许,那么我们就可以轻松地访问本地文件系统。

 

第二部分

上一部分所做的分类,其实是按照java程序本身的结构特点划分的。 综观所有Bioinformatics领域的java程序,几乎有90%的程序都是用来做一件事 --- 可视化,这也符合Bioinformatics领域的特点:复杂而抽象的字符或者数字。所以从数据可视化的角度,Java程序只是一种可选的解决方案。比如要得到一个svg图形,我们可以选择Batik,但这一般是在我们对java熟练,而对svg不够熟练的前提下;如果我们对svg熟知,那么我们更愿意选择perl,python,甚至shell去做这件事。

 

下面列举两个常见的java程序实例:

1 使用java来绘制系统发育树: 简单说,这就是把一个数据结构为树类型的数据进行可视化,所以只要我们对树这种数据结构熟练,那么实现起来很简单. 基本思路是,先把原始数据构建成java的树类型数据结构;然后确定树上的各个节点在画布上的俄坐标,做法是横纵坐标分别计算,先序遍历计算得到横坐标,中序遍历计算得到纵坐标;最后绘制图形。

 

2 使用java来构建一个简单的数据库应用: 在Bioinformatics领域,这样的需求我们一般选择MySQL, Apache+ Tomcat / JBoss。首先需要分析原始数据集的特点和实体之间的关系,确定好数据库的schema;然后确定查询或者可视化的需求,弄清楚哪些数据需要显示,哪些需求统计,哪些是关联查询的,哪些是第一级,等等,确定好所有的查询用例后,基本上,就可以开始底层的编码;同时确定web前端的设计和实现;最后整合所有,做功能测试,集成测试等。

 

我们可以看出,以上两个程序的规模属于中小型,复杂度也是中小,但就是这样的程序却有着很多很多的需求;至于更加复杂的大型应用,那一定是花了money的,我想谁都不会很轻易地简述出来。

 

除此以外,我还要强调两种特别的类型:

(1 SWT ,基于eclipse的RCP程序,主要原因是它适合构建workshop之类的程序。而在Bioinformatics领域,这样的需求也有着不小的比重。 不过已经有开发者在开发开源的Bioinformatics领域基于SWT的workshop程序了。

 

(2 基于ajax的webapp : 尤其适用于数据可视化的web application; 一个页面中我们需要绘制好几张图,如果每次操作都刷新整个页面,那么性能上以及用户友好性上都要打折扣,所以ajax是首选。 我们只需要刷新最需要那张和那几张图。

而且,这样的应用有一个特点是,服务器端的程序你可以采用任何语言来实现,只要它处理的是相应的get或者post请求,返回我们期望的JSON格式的数据就好。 这样的例子有venter的基因组浏览器。 试想,如果我们把前台的图形部分能完全地独立出来,那么是不是就可以做成一个产品呢? 用户只要提供自己的数据源并且编写自己的业务逻辑,然后返回需要可视化的JSON数据,使用我们的前端就可以浏览。。。也许这是个好主意!

 

 

总结

此篇小文简述了Bioinformatics领域的java程序的基本类型和特点,并简单分析了各种类型的基本应用方面,并以实例说明了为何Java适合。

 

 

关于作者

GentleYang ,Developer for Bioinformatics

联系地址: 中国 深圳

 

分享到:
评论

相关推荐

    java for bioinformatics and biomedicine

    本篇文章将深入探讨Java如何促进这两个领域的研究和发展,并通过具体案例来阐述Java的实际应用。 #### 生物信息学与Java的历史背景 生物信息学是一门跨学科领域,它利用计算机技术和信息学方法处理和分析生物学数据...

    Bioinformatics with Python Cookbook

    标题《Bioinformatics with Python Cookbook》指出了本书的重点是教授如何利用现代Python生物信息学库和应用程序来进行计算生物学的前沿研究。描述中提到此书出版于2015年6月,是当时最新的一本将Python与生物信息学...

    bioinformatics and funcutional genomics

    生物信息学和功能基因组学是生物科学领域中两个十分重要的交叉学科。生物信息学主要是指应用...随着这些领域技术的不断进步,生物信息学和功能基因组学的应用将不断扩展,它们将会在未来继续引领生命科学领域的发展。

    BioJava(Java Library)指南

    下面我们将深入探讨BioJava的一些核心特性、使用方法以及在实际生物信息学项目中的应用。 1. **序列处理**:BioJava提供了一个强大的序列对象模型,支持DNA、RNA和蛋白质序列。用户可以创建、操作和比较序列,进行...

    Big Data Analysis for Bioinformatics and Biomedical Discoveries.CRC(2016)

    《大数据分析在生物信息学与生物医药发现中的应用》是由CRC出版社于2016年出版的一本专业书籍,主要探讨了如何利用大数据分析技术解决生物信息学和生物医药领域中的复杂问题。这本书的内容深入且广泛,涵盖了从基础...

    Mastering_Perl_for_Bioinformatics

    掌握Perl在生物信息学中的应用是一项深度且专业的技能,尤其对于那些希望在生命科学数据分析领域有所建树的人员而言。本书《Mastering Perl for Bioinformatics》由James D. Tisdall编写,旨在全面覆盖Perl编程语言...

    python based tools and web serivces for bioinformatics(powerpoint file)

    此外,还有VisBench项目,它是一个客户端-服务器架构的可视化和分析系统,利用Java Swing客户端和通过CORBA/XML-RPC通信的Python-VTK服务器。随着技术的发展,这些研究进一步扩展到Jython和Access Grid™(AG2),...

    perl在生物信息中的应用

    书籍《Perl Programming for Bioinformatics》由James D. Tisdall撰写,是学习Perl在生物信息学应用的入门级读物。 本书的前言、序言、关于本书、使用条件、书籍组织结构、约定、评论与问题以及致谢等内容都说明了...

    bioinformatics-labs:生物信息学课程的大学作业

    在本课程"bioinformatics-labs"中,我们探讨的是生物信息学这个交叉学科,它结合了生物学、计算机科学和...通过使用Java编程,学生可以深入理解生物数据的处理和分析,为未来在生物科学或相关领域的研究打下坚实基础。

    clinical-bioinformatics.io

    1. **源代码**:可能是用于实现分析功能的编程语言(如Python、R或Java)的源代码,供用户了解或定制分析流程。 2. **数据集**:可能包含预处理的临床或生物学数据样本,用于演示分析或训练模型。 3. **文档**:详细...

    Springer - Innovative Applications in Data Mining

    - **生物医学与生物信息学中的计算智能**:Vol.151《Computational Intelligence in Biomedicine and Bioinformatics》重点讨论了计算智能技术在生物医学领域的应用。 ##### 数据挖掘在特定领域的应用 本书还详细...

    hadoop_for_bioinformatics:生物信息学家的hadoop教程

    在生物信息学领域,随着基因组数据、转录组数据以及蛋白质组数据等高通量数据的爆炸性增长,传统的计算方法已经无法满足处理需求。这时,分布式计算框架Hadoop应运而生,成为解决大规模生物数据处理的有效工具。本文...

    MATLAB软件使用指南

    用户还可以通过编程创建自定义图形用户界面(GUI),利用各种函数将MATLAB算法与其他语言和应用程序集成,例如C、C++、Fortran、Java、COM以及Microsoft Excel等。 MATLAB的高级语言特性让其在技术计算领域中...

    论文研究-基于多线程技术的dBM改进算法.pdf

    文件中还提到了一些关键词,比如生物信息学(bioinformatics)、压缩模式匹配(compressed pattern matching)、多线程技术(multithread technology)以及DNA。这些关键词反映了该研究的学科背景和研究方向,指出了...

    MATLAB资料.docx

    - **Bioinformatics Toolbox**: 生物信息学领域的专用工具箱。 #### 七、MATLAB与其它语言的交互 - **C/C++/Fortran/Java支持**: 可以直接调用或被这些语言调用。 - **自定义函数库**: 用户可以将自己的实用程序...

    Python开发WebService系列教程之REST,web.py,eurasia,Django

    在Bioinformatics(生物信息学)领域,WebService是很重要的一种数据交换技术,未来必将更加重要。目前EBI所提供的WebService就分别有SOAP和REST两种方式的服务,不管是数据服务还是计算服务(计算任务提交)。1 ...

    matlab模块库翻译.docx

    MATLAB 是一种强大的数学计算和建模环境,广泛应用于工程、科研和教育领域。这个文档提到了多个MATLAB相关的工具箱,每个工具箱都专注于特定的计算或应用领域。以下是一些主要工具箱的详细说明: 1. **Simulink**:...

    本科毕业设计开题报告(校园初恋网的设计与实现)

    人类已进入21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的迅速发展和广泛应用,对社会的政治、经济、军事、文化等领域产生越来越深刻的影响,也正在改变人们的工作、生活学习、...

    MATLAB2014a安装说明中英文转换.docx

    此外,MATLAB 2014a还集成了多个专业领域的工具箱,如Aerospace Blockset、Aerospace Toolbox、Bioinformatics Toolbox、Communications System Toolbox等,这些工具箱针对特定行业提供了定制化的解决方案。...

    BioInfo:信息生物项目 M2 ILC

    Java作为一门跨平台、面向对象的编程语言,具有丰富的库和框架支持,被广泛应用于生物信息学领域。它的主要优势包括: 1. **可移植性**:Java的“一次编写,到处运行”特性使得开发的软件能够在各种操作系统上运行...

Global site tag (gtag.js) - Google Analytics