【G-BLASTN 1.0正式发布】G-BLASTN使用GPU来加速NCBI-BLAST里的BLASTN模块,单块GTX780比四核CPU平均快6倍。

http://www.comp.hkbu.edu.hk/~chxw/software/G-BLASTN.html

基于NCBI的BLAST源代码进行修改,150多万行的开源代码,刚开始做的时候,并没有引起太多的注意,只是觉得工程庞大,越到后面,越觉得,这个东西太庞大了,里面参杂了C和C++的不同方式的设计模式,找一个功能实现,可能需要翻阅20-30个文件,整个工程太过庞大,BLASTN一个模块,子工程就有179个,每一个工程之间也有调用;

不过也很佩服BLSAT的开发者们,这个工程已经维护了30多年了,有一种说法是比windows的年龄都大,这么庞大的开源项目,里面的设计模式还是相当的清晰,只是调度过程有些冗余罢了。

之前太多的时间浪费在了繁杂的事情上,从去年开始回归,专注于科研,把BLATN作为了第一个目标,本应该在2009年做的一个项目,到了2012年,才算真正拿起来做了,一年的在实验室不分昼夜,基本上杜绝一切的聚会活动,整个过程的艰辛只有自己清楚,再说,要想成功,又哪有那么容易啦?

blastn的整个代码过程分析花了无数个草图,无数个分析文档,有幸拿到的有关BLAST的设计文档也只是从概念上加上文字上的分析,没有整个框架的设计图,没有每一个模块的调度图,都是一行代码一行代码跟踪出来的。这个过程对于学习别人的代码,有了更深层次的了解,对于发文章而言,只需要修改几个核心函数,不用管太多的框架问题,但是真正要做到开源的项目做成成品的时候,就尽量遵循已有的规则,按照以后的框架来修改代码。这样对后来修改的朋友,也是一种交代。

一年多的代码修改,用svn工具统计了一下,差不多前前后后修改了5万多行代码,也算是一个学习的过程吧。

http://www.comp.hkbu.edu.hk/~chxw/software/G-BLASTN.html

BLAST的框架适合在windows上开发,然后在LINUX上做测试,这次过程中,不只是修改了核心的比对部分的代码,还调整了框架,调整了IO部分,调整了冗余部分,对于一个软的优化而言,永远都是一个迭代的过程,热点不停的转变,最终达到理想的最优态。

【G-BLASTN 1.0正式发布】的更多相关文章

  1. .NET 5.0正式发布,功能特性介绍(翻译)

    本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴今天.NET5.0正式发布.这是一个重要的版本-其中也包括了C# ...

  2. AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!

    文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...

  3. csharp: ODP.NET,System.Data.OracleClient(.net 4.0) and System.Data.OleDb读取Oracle g 11.2.0的区别

    ODP.NET: 引用: using Oracle.DataAccess; //Oracle g 11.2.0 using Oracle.DataAccess.Client; using Oracle ...

  4. 郑轻校赛题目 问题 G: 多少个0

    问题 G: 多少个0 时间限制: 1 Sec  内存限制: 128 MB提交: 192  解决: 40 题目描述 一个n*n的方格,每个格子中间有一个数字是2或者5,现在从方格的左上角走到右下角,每次 ...

  5. Socket.IO 1.0 正式发布,快速可靠的实时引擎

    Socket.IO 是目前 Web 领域最火的实时引擎,用于实现基于事件的双向实时的通信.它适用于任何平台,浏览器或设备,专注于可靠性和速度.您可以将数据推送到客户端,并获得实时的计数,日志或图表. ...

  6. Django 1.6.0 正式发布,大幅改进事务处理

    Django 1.6.0 正式发布了,查看官方发行说明. 下载地址:Django-1.6.tar.gz ,也可通过 pip 安装: pip install Django==1.6 要求 Python ...

  7. Apache Spark2.0正式发布

    Apache Spark2.0正式发布 7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之 ...

  8. avalon1.0正式发布

    2013年最后的收成:avalon1.0正式发布 大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人, ...

  9. Angular4.0.0正式发布,附新特性及升级指南

    本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...

随机推荐

  1. Linux--本地yum库

    Linux配置本地yum云: 第一步:把cd 挂载到目录树 mount /dev/cdrom /mnt/media 第二步:增加/etc/yum.repo.d/local.repo touch /et ...

  2. Android07-Android广播

    ¨广播机制简介 ¨动态和静态注册广播 ¨接收系统广播 ¨自定义广播 ¨本地广播   n广播是一种系统级的事件(Event). n当系统发生某些事件时(例如,收到短信.来电.电量低),就会向整个Andr ...

  3. Hibernate防止SQL注入

    如果在查询字段中输入单引号"'",则会报错,这是因为输入的单引号和其他的sql组合在一起编程了一个新的sql,实际上这就是SQL注入漏洞,后来我在前台和后台都对输入的字符进行了判断 ...

  4. Linux学习之十二、命令别名与历史命令

    命令别名配置: alias, unalias 那么需要下达『 ls -al | more 』这个命令,我是觉得很烦啦! 要输入好几个单字!那可不可以使用 lm 来简化呢?当然可以,你可以在命令行下面下 ...

  5. linux内核函数库文件的寻找

    linux内核函数的so库文件怎么找呢? 首先还是要产生一个进程的coredump文件的 linux有一个lib-gdb.so库,这个进程的coredump文件中所有load段的最后一个load段中, ...

  6. php获取服务器地址

    if ( isset( $_SERVER['HTTP_X_FORWARDED_HOST'] ) ) { // Support ProxyPass        $t_hosts = explode( ...

  7. Android读写JSON格式的数据之JsonWriter和JsonReader

    近期的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.近期打算找一份Android的工作,要继续拾起曾经的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才開始办公 ...

  8. Swift中编写单例的正确方式

    在之前的帖子里聊过状态管理有多痛苦,有时这是不可避免的.一个状态管理的例子大家都很熟悉,那就是单例.使用Swift时,有许多方法实现单例,这是个麻烦事,因为我们不知道哪个最合适.这里我们来回顾一下单例 ...

  9. android混淆打包配置(忽略第三方jar)

    在project.properties里加上   proguard.config=proguard.cfg proguard.cfg 配置如下: -optimizationpasses 5-dontu ...

  10. MySQL 中文显示乱码以及中文查询条件返回0条结果的问题解决

      最近关于中文显示乱码的贴子比较多,所以也做了个总结: 可以参考一下杨涛涛版主的<各种乱码问题汇总>http://topic.csdn.net/u/20071124/08/3b7eae6 ...