【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. Delphi多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  2. B/S状态(同步)AJAX技术(异步)

    同步(Synchronization).它是最常见的click-refresh状态,或提交一个表单,然后整个页面被刷新. 异步(Asynchrony).当前非常热的AJAX就是典型样例,提交请求返回对 ...

  3. 重写系统中的UINavigationController返回按钮的事件

    1.扩展UIviewController UIViewController+BackButtonHandler.h #import <UIKit/UIKit.h> @protocol Ba ...

  4. Haffman算法(C++)

    Huffman编码,C++实现,只是为了说明大致的思路,还有很多不完美之处,比如在输入数据超出限制等条件下会出现错误. #include<iostream> #include<str ...

  5. 我终于解决UM编辑器了 泪......

    气死我了..... 好不容易测试好了....更显得我笨了..... 原来....什么都不用改   只改了2个小位置....真的是.....回首自己 不敢看 0.0 OK  记下步骤  以免以后忘记 将 ...

  6. 解决VS2010打开Web页面时经常由于内存较低而导致VS2010自动关闭的问题

    在使用VS2010 开发Web应用程序的时候,经常打开一个Web页面进行编辑前台代码的时候要等待很久(甚至等了半天结果还挂掉,简直令人抓狂), 之前也在网上找了很多相关的方法,都没办法解决,今天无意中 ...

  7. 创建SDE表空间

    创建空间数据存储类型为ST_Geometry的要素类有2种方法:1)使用SDE创建要素类从9.3 开始,默认创建的要素类都使用ST_Geometry存储空间数据,9.3 版本之前,可以通过配置dbtu ...

  8. EJB QI查询

    EO.PNAME like ?1 OR  EO.PNAME like ?2";      Query query = entityManager.createNativeQuery(quer ...

  9. leetcode implement strStr python

    #kmp class Solution(object): def strStr(self, haystack, needle): """ :type haystack: ...

  10. 关于用自带摄像机录像无法捕获uri 问题解决

    这个 我自己调用,好像并没有出现什么问题. 下面是我的代码.你们可以参照一下 File file = new File(Environment.getExternalStorageDirectory( ...