周一上午,陆远洲把出差的差旅单交到科室办公室,转身就往七楼走。
电梯门开的时候,走廊里飘出一股泡面味。
他推开工作间的门。林小禾趴在键盘旁边睡着了,嘴角还挂着口水,面前的屏幕亮着一行行密密麻麻的代码。桌上摞了四个空泡面桶,旁边还竖着两罐红牛。
陆远洲拿起一个空桶闻了闻。
酸菜味。
他走到窗边把窗户推开,八月底的热风裹着蝉鸣灌进来。
“林小禾。”
没动静。
“林小禾!”
“啊!”林小禾猛地弹起来,眼镜都飞出去了,慌里慌张在桌上乱摸,“我没睡,我在调试程序。”
他摸到眼镜戴上,看清是陆远洲,整个人才松下来。
“陆哥,你回来了?”
“回来了。跑到哪了?”
林小禾揉了脸,精神头回了几分。他把屏幕切到测试界面,指着最新的日志。
“非线性校准模块,搞定了百分之九十。剩最后那十一例老款ct的数据,有个边界条件我一直没处理好。”
陆远洲拉了把椅子坐下来,凑近屏幕看代码。
脾脏感兴趣区域提取模块。双组织参考机制的核心代码。逻辑通顺,结构清晰。
往下翻。
翻到比值计算那段的时候,他停住了。
“这里。”他指着一行代码。
林小禾探过脑袋。
“脾脏感兴趣区域的面积小于某个阈值的时候,你没做异常处理。面积太小,采样点不够,比值计算就不稳定。极端情况下,除数趋近于零,直接溢出。”
林小禾盯着那行看了三秒,一巴掌拍在自己额头上。
“我怎么没看出来……这个阈值应该设多少?”
“设150个像素。低于这个数的,回退到纯灰度匹配方案,不走比值路径。加个条件判断就行。”
林小禾已经开始敲键盘了。
十分钟。
修改完毕,保存,编译,跑单元测试。
绿色。全通过。
再跑那十一例老款ct数据。
进度条走了两分钟。
结果刷出来:十一例全部通过校准,特征偏移归零,无异常报错。
林小禾长出一口气,整个人往椅背上一瘫。
“最后这个程序错误卡了我两天半。两天半啊。结果就是少了个边界判断。”
“编程就是这样,百分之九十的时间花在百分之十的程序错误上。”
“你说的跟我导师一模一样。”林小禾坐直身子,开始跑全量数据。
协和120例加本院67例,总计187例,全部送入标准化流水线。
等待的时间里,陆远洲靠在椅背上看着进度条一点点往前爬。
十五分钟后,流水线跑完。
零报错。
零报错。
林小禾打开质控报告,一项一项念。
“灰度偏移消除率……98。7%。”
“纹理特征跨中心方差缩小至原始数据的……”他凑近屏幕数了数小点,“百分之二十三。也就是缩到了原来的不到四分之一。”
“脂肪肝亚组呢?”
“单独看。”他切了个页面,“脂肪肝亚组特征偏移……0。03。基本归零了。”
他把最终数据包打了三份备份。本地硬盘一份,u盘一份,云端一份。
做完这些,林小禾双手撑在桌面上,脑袋低垂。
安静了好几秒。
“陆哥。”
“嗯。”
“我能回去睡个整觉了吗。”
“滚。”
林小禾站起来伸了个极其夸张的懒腰,脊椎咔响了一串。
“不过明天晚上七点”
“我知道,重跑验证。准时到。”
“不准迟到。”
“我什么时候迟到过?”
“上周四。”
“那天是因为食堂排队……”