【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. Spring摘记

    spring工作机制及为什么要用? 1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作.2.Dispatcher ...

  2. Oracle EBS-SQL (WIP-11):检查期间任务完工记录数.sql

    select        WE.WIP_ENTITY_NAME                 任务名称,        WDJ.class_code                         ...

  3. LGA(land grid array)

    产品应用 1.射频功放 2.加速度传感器 3.地磁传感器 可靠性 Reliability 高压蒸煮 PCT 121℃,100%RH,2atm,96hrs 高低温循环 TCT -55℃(15min)~1 ...

  4. cdoj 秋实大哥与战争

    首先,显然每个区间的最长连续子区间要么在左孩子里,要么在右孩子里,要么跨越两个孩子.于是我们可以对每个区间维护如下信息ll(left long),rl(rigth long),ml(mid long) ...

  5. aix Mysql-Rpm puppet puppetAgent

    http://www.bullfreeware.com/toolbox.php   (Large Open Source Software Archieve for AIX 提供MySQL5.1 fo ...

  6. Java WebService把Date类型转换成XMLGregorianCalendar

    JavaEE 的WebService中的Date类型在Web应用中调set方法的时候,默认情况下,JAXB将xsd:date, xsd:time, 和xsd:dateTime映射为XMLGregori ...

  7. js堆栈溢出错误

    function prompt() { var answer = prompt("What is your name","") if (answer) { al ...

  8. Dell 2950服务器CPU-E1422错误解决方法

    .造成原因:CPU松动或者是硅胶损耗 .解决方法: .断掉电源,将其后盖打开(在手没有静电的情况下操作) .拔掉周围的排热扇 .按住关卡,将其CPU卸下:并使用清洁剂清理,再次给CPU上涂上硅胶(均匀 ...

  9. SqlServer之存储过程

    存储过程最主要的特色:是当写完一个存储过程后即被翻译成可执行码存储在系统表 内,当作是数据库的对象之一,一般用户只要执行存储过程,并且提供存储过程所需的参数就可以得到所要的结果而不必再去编辑 T-SQ ...

  10. mybatis动态sql语句问题

    1.关于mybatis的insertintoselect命令未结束问题         添加:  useGeneratedKeys="false"     官网的解释是 允许 JD ...