请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。
林晓微微颔首,轻声作答:“直观解法很简单,哈希表就行。”
“将所有锚点序列哈希转化为键值,再遍历全部Reads逐一查表匹配,逻辑直白、操作简单。”
艾文心头一喜,正欲感慨两人思路一致,总算跟上了林晓的节奏。
可下一秒,林晓又补充了一句。
“但这只是理论最优,实际落地漏洞极大。”林晓语气平淡,条理清晰地剖析:“建哈希表的代价呢?”
“如果锚点有10万个,每个长度是120b,存储这些键值对需要多少内存?在真实的服务器上,这会导致频繁的缓存不命中,实际运行时间可能比理论上的O(n)慢十倍。”
“所以,最终采用了BWT索引,就是BWA算法里用的那个FM-Index。它的搜索复杂度是O的,是查询序列的长度,与参考序列的大小几乎无关,内存占用也小得多。”
艾文彻底沉默了。
行行行!
你字多,你有道理!
临近下课,铃声准时响起。
邦妮教授抬手压了压教室的嘈杂声,布置了本次课后作业。
“请大家写一个小脚本,对于模拟的10万条Reads,分别用暴力遍历和哈希索引两种方式,去寻找一个固定长度为60b的k-r。用ti命令记录两者的运行时间,下次课我们讨论为什么哈希表在某些数据分布下会比暴力法还慢。”
她合上电脑,最后看了一眼全班。
“记住,计算生物学的核心,就是从算法的复杂度和实际成本中找到那个最优雅的支点。”
“有时,那个最快、最精妙的算法,放在你的真实数据上,反而是最难用的。”
“下课。”
下课铃声落幕,同学们纷纷收拾书本结伴离开。
艾文也招呼林晓一同回寝室,却被他摆手拒绝了。
“我有点事,先去实验室一趟。”
艾文也不奇怪,自顾自的回去了。
林晓一个人拎起书包,径直朝着CSAIL实验室走去。
他步履轻快,眼底带着思索的光泽。
此时实验室里,安东尼正安稳处理课题数据。
看见林晓这么早归来,他不由得满脸疑惑,抬头诧异问道:“你不是说上午有好几节课吗?怎么这么快就回来了?”
林晓顺势落座,抬手打开工作站。
他一边等待设备启动,一边随口解释:“刚刚上了邦妮教授的课,略有启发,心里冒出了一点算法的优化新思路。”
话音落下的瞬间,安东尼脸上的笑容慢慢就消失了。
他人都有些麻了,心底只剩极致的荒谬与震撼。
别人上课是听课消化、勉强跟上进度。
林晓上课是边听边悟、当场迭代新思路?
刚跑完一套颠覆性DCA算法。
现在转头听一堂课,又双叒叕顿悟出新的优化方向?
尼妹的!
要不要这么夸张啊?