南城医科大附属医院的数据中心,是苏晚在接下来两个月里最常去的地方。
巨大的服务器机柜像沉默的巨人,排列在恒温恒湿的房间里,发出低沉的嗡鸣。空气里浮动着淡淡的臭氧味和金属冷却液的气息。苏晚坐在工作站前,面对三块巨大的显示器,屏幕上滚动的不是代码,而是数以万计的生命密码。
新冠康复者队列的数据,比她想象的还要庞大,还要……凌乱。
基因组数据来自三家不同的测序公司,格式不统一,质控标准各异。临床数据分散在十几个电子病历系统里,字段缺失、录入错误、单位混乱的问题比比皆是。免疫组学数据和代谢组学数据更是重灾区,不同批次的检测偏差,不同平台的信号校正,让数据像一锅煮糊了的粥。
苏晚已经连续一周,每天只睡四个小时。大部分时间都耗在数据清洗和整合上。她写了上千行代码,用来统一格式、填补缺失、校正批次效应、去除异常值。眼睛干涩发痛,颈椎僵得像块木板,但进度依然缓慢。
“苏晚,又熬通宵了?”值班的工程师小李端着咖啡走过来,看见她屏幕上一行行滚动的错误报告,啧啧两声,“你这数据,够呛啊。医院这些老系统,当年上线的时候就没想着以后要整合,现在抓瞎了吧?”
苏晚揉着太阳穴,苦笑:“是啊,没想到最难的不是分析,是让数据能‘被分析’。”
“正常,搞生物信息的,百分之八十的时间都花在数据清洗上。”小李喝了口咖啡,“不过你也真够拼的,陈院士的课题吧?我听说了,这可是个大项目,做成了能发顶刊。压力大吧?”
“大。”苏晚老实说,盯着屏幕上又一个报错的脚本,“但我没退路。”
“也是,陈院士的弟子,哪有退路。”小李拍拍她的肩,“加油吧,需要算力支援就说,我帮你协调。”
“谢谢李工。”
小李走了。数据中心重新陷入沉默。苏晚盯着屏幕上卡住的数据流水线,深吸一口气,重新开始调试。错误报告指出,某个临床指标的数据分布严重右偏,导致后续的标准化步骤失败。她点开原始数据,发现是录入员手误,把小数点标错了位置,导致一批病人的某项指标被放大了十倍。
这样的错误,这两个月她见了不下百次。有时候是小数点,有时候是单位混淆(把“mmol/L”录成“mg/dL”),有时候干脆是张冠李戴,把甲病人的数据贴到乙病人名下。每一个错误,都需要她像侦探一样,结合其他指标的逻辑关系,去推断,去修正,去核实。
枯燥,繁琐,消耗心力。但苏晚知道,这是科研的基石。垃圾进,垃圾出。如果数据本身是脏的,再高级的模型,再精巧的分析,得出的结论也是空中楼阁。
她活动了一下僵硬的脖子,开始写新的清洗规则。窗外,天色从暗到明,又从明到暗。她忘了时间,忘了吃饭,眼里只有屏幕上滚动的数据和不断被修复的错误。
手机在桌上震动,屏幕亮起又暗下。是江屹。她看了一眼,没接。现在不能停,一停,思路就断了。
不知道过了多久,最后一条错误报告终于消失。数据流水线顺畅运行,开始输出清洗后的整合数据集。苏晚看着进度条缓缓前进,长长地舒了口气。身体像散了架,但心里是轻松的。
她拿起手机,给江屹回拨过去。
“喂?”江屹的声音传来,背景很安静,应该是在车里或办公室。
“江屹,我刚弄完。”苏晚的声音有些哑,“你打给我了?”
“嗯,打了三个,你没接。”江屹顿了顿,“又在数据中心?”
“嗯,数据清洗卡住了,刚解决。”苏晚靠着椅背,闭上眼睛,“你吃饭了吗?”
“吃了。你呢?”
“……忘了。”
电话那头沉默了几秒。苏晚几乎能想象出江屹皱眉的样子。
“现在几点了?”他问。
苏晚看了一眼电脑右下角:晚上十一点四十七分。
“……快十二点了。”她小声说。
“苏晚。”江屹的声音沉下来,“我上周才跟你说过,按时吃饭,按时睡觉。你答应过我什么?”
苏晚心虚地缩了缩脖子:“我……我错了。但今天数据卡在关键地方,不弄完我睡不着。”
“数据永远弄不完。”江屹说,“但胃只有一个。现在,立刻,马上,离开那里。我在医院门口等你,带你去吃东西。”
“不用了,我……”
“十分钟。”江屹打断她,语气不容拒绝,“十分钟后,如果我见不到你,我就上去找你。”
“……知道了。”
挂了电话,苏晚保存进度,关掉工作站。站起身时,眼前黑了一下,她赶紧扶住桌子。低血糖,加上久坐,身体在抗议。她缓了几秒,才慢慢往外走。
走出医院大楼,夜风带着凉意。南城的春夜,还有些料峭。她裹紧了外套,看见江屹的车停在路边。他靠在车门上,手里拿着个纸袋,看见她,走过来。
“给。”他把纸袋递给她,里面是个保温桶,“红枣小米粥,还热着。先喝点,暖胃。”
苏晚接过,抱在手里。温热的触感透过纸袋传到掌心,一直暖到心里。
“谢谢。”她小声说。
“上车。”江屹拉开副驾驶的门。
苏晚坐进去,打开保温桶。粥熬得很稠,红枣的甜香混着米香,热气扑在脸上。她小口喝着,温热的液体滑过食道,空荡荡的胃终于有了着落。
江屹启动车子,开得很慢。没问她工作,也没说她熬夜,只是安静地开车。车载音响里放着轻柔的爵士乐,萨克斯风慵懒地流淌在车厢里。
苏晚喝了大半桶粥,才感觉活过来一点。她盖上盖子,抱着保温桶,靠在椅背上。
“江屹,”她小声说,“我今天……把数据清洗完了。”
“嗯。”江屹应了一声。
“很不容易。”苏晚继续说,像在自言自语,“数据乱七八糟的,错误百出。我花了两个月,才把它们弄干净。有时候我觉得,我像个清洁工,天天在垃圾堆里翻找有用的东西。”
“但清洁工很重要。”江屹说,声音很平静,“没有清洁工,城市就臭了。没有干净的数据,科学就脏了。”
苏晚愣了一下,转头看他。他专注地看着前方,侧脸在路灯的光影里明明灭灭。
“你是在安慰我吗?”她问。
“我是在陈述事实。”江屹看了她一眼,“苏晚,你做的事,很基础,很枯燥,但也很重要。万丈高楼平地起,地基打不牢,楼盖得再高也会塌。你现在打的,就是地基。”