Tag Archives: pFind

瞻前顾后

  进度比一开始计划慢了,不过总算是在2005年初步跑通了整个流程,验证了新的框架。上周把各个模块的单元测试代码和数据整理完了。今天唐发来了集成测试计划,总共设计了931个测试案例(辛苦辛苦),放假前的10天,平均每人每天需要测试10~11个。

  另外一方面,工程组面临着巨大的压力。似乎又要新开始一个关于交通仿真的项目,数字图书馆这边也在提新的需求……不管怎样,有了去年的痛苦教训,我绝不会再介入其他项目;前几天部门领导谈话,轮到我这组时,提到实验室和公司剥离后的去向问题。

  不管如何,决心静下心来,把精力集中在pFind软件开发和学术论文上,其他事和我无关。发现自己很不善于并发应付太多件事,所以今年我要明确几个主题,其他事情都让路。也许除了pFind工作和论文,买房也算一件重点吧。房子一直在看,房价一直在涨,总说:“到顶了,要调控了,泡沫要破了”,看来不靠谱,要当机立断。

跑通了

  万岁!10:43的时候,蛋白质多肽串联质谱鉴定系统终于输出完整的结果了,刚好是今年的最后一天。秀一下输出的XML报表,嘿嘿。

  从一窍不通到熟悉生物信息基本概念;从阅读几万行代码,到重写了几乎整个系统;从频繁的开会交流,制订接口,培训单元测试工具,双人编程,到最后阶段大胆的重构……踏踏实实干了不少事情。年底的气氛总是浮躁,能控制住自己静下心来,集中精力保证每天八小时工作质量,不加班,也没偷懒,真不容易。成就感:)

  一下子精神起来了(昨晚应酬,早上上班还很疲惫呢)。接下来,整理单元测试代码,准备过几天的汇报演示,1月份开始集成测试。测试方案花了不少心血准备,这下终于可以用上了。

  下雪了,心情不错,新年快乐。谢谢各位同事给我的帮助

蛋白质数据索引

  阅读代码,画图,然后重构,单元测试……搞定了数据库部分。

  被数据结构的细节所纠缠。由于性能原因,无法使用通用数据库平台,只能自行开发一个数据服务。用各种酶在不同修饰条件下,对几十G 蛋白质数据进行酶切,得到肽离子,建立索引(即使最小的库,都有将近九千万条,而且每新增一种酶或修饰,数量还要翻倍),然后用文件映射方式,通过共享内存提供服务。

  其实我很欣赏系统最初的体系结构设计。但是由于1.5版deadline很紧张,老板施加了巨大的压力。为赶进度,工程师编程顾不上接口和重构,产生了大量的耦合和拷贝,弄得整个架构动弹不得。我接手后,只好回过头用几倍的时间阅读和重构代码,何苦呢?

  彻底重新设计了数据访问类,用一个纯虚父类做接口,隔开其他部分。每种具体实现方式作为一个子类,比如目前读取共享内存的代码。还打算把1.0版不通过索引的数据访问方式代码也移植过来,实现另外一个子类,提供给系统内存小于1.5G的用户。

  固定了接口,新版本就可以再实现其他数据访问方式,比如通过关系型数据库和Web Service提供数据服务。用关系型数据库的话,为保证效率满足Web应用,就必须用集群或网格了。这种情况一般都考虑Oracle,但涉及到老板的银子……听说Google采用MySQL,很希望知道他们的方案。

  今天跑通了单元测试案例,用的是马(Horse)的蛋白质库,不加任何修饰。Debug版访问所有肽链一遍,2.266秒。以前还真没对付过这种级别的海量数据。

BTW:早上去了趟所里,玩了玩曙光3000,酷。

里程碑、系统分析、提问和倾听

  士气很高,可能因为pFind开发进度顺利吧。算法层的单元测试案例完成后,就可以放心把各个模块留给博士们独立开发了。开始画应用层SDK的业务流程。周四下午拖着别人开会。傻乎乎的外行问题、写写擦擦的白板、乱七八糟的稿纸。周五整天都在修改Visio图。每30分钟拿着修改稿跑去访问(或者说骚扰更合适)一圈,好累,总算把系统业务流程严谨地定义到白纸黑字上了。下周被其他项目拖住的工程师也能过来了,要启动新的里程碑了,嘿嘿。

  交流真是一种技能。很多时候,你以为懂了,达成一致了,其实没有。必须把细节清楚列在纸上,拿给人家看,被认同,这才算数。

  例子太多了。比如我找几个博士聊过很多次后,仍然以为蛋白质片段匹配的误差分析,是各种质谱类型对应不同的统计图;直到在业务流程上写注释,才意识到可能有误解。跑去一问,原来所有质谱都应该提供多种误差分析工具,只不过生物学家针对每种质谱类型有不同侧重。实际上,调查对象已经多次明显表达出这个意思了,但我的耳朵一直在按软件工程师的思路去听。系统分析像是深入陌生的专业领域签合同,应该始终提醒自己,与领域专家的交流要虚心,提问要细致再细致,总结文档要明确再明确。

  BTW:老板原则很“完美”,不仅要求牛paper,还要实现真正可用的商业级系统。纸上漂亮的模型遇到实际数据不一定管用,实验室的博士生真比别处辛苦。

搞定了两个模块

  昨晚十点多回来,酒有些晕,睡不踏实,挣扎起来继续调程序。凌晨两点,两个多肽质谱预处理模块的CppUnit测试案例都正常通过了,哈哈,绿色进度条特别顺眼。

  需求沟通、接口规范文档、体系重构方案、老版本代码review、人力进度协调、双人编程和单元测试……其实到昨天为止,我并不像表现的那么有把握。这两个模块的完成证实了开发方案的可行性,下一步就很有信心了。