学霸的模拟器系统: 第140章 积分、反演与迷宫的出口(求订阅求月票)
林允宁顾不上去给身后的埃米特和玛利亚解释。
他现在满脑子都是一个词??反推。
他几乎是跑着穿过戈登综合科学中心的玻璃大厅,迎面撞上几个端着咖啡的博士生,也只是匆匆说了句“对不起”,便一头扎进了四月午后微凉的空气里。
他需要立刻找到程新竹。
电话打过去,响了很久才被接起,那头传来程新竹有气无力的声音,背景里是风声和一些模糊的人声。
"......
“你在哪?”
林允宁问得又快又急。
“克雷勒图书馆前面的草坪......晒太阳......怎么了?”
“别动,等我。”
林允宁挂掉电话,快步穿过马路。
草坪上,学生们三三两两地坐着,享受着芝加哥难得的晴天。
程新竹就躺在靠近图书馆的一块草地上,枕着一本厚厚的《分子生物学》,两眼望天,看着灰色的天空发呆,像一条被晒干的鱼。
那股属于天才少女的活力,消失得无影无踪。
“别躺着发呆了,有好消息告诉你。”
林允宁走到她身边,弯下腰,挡住了她的视线。
程新竹懒洋洋地挥了挥手,说道:
“干嘛啦,我正在进行光合作用,别打扰我吸收宇宙负能量。”
林允宁没理会她的耍宝,一把将她从草地上拉了起来,拽到旁边一条无人的长椅上坐下。
“你看这个。”
他从背包里拿出笔记本和笔,在干净的一页上,飞快地画了一个示意图。
那是一个迷宫。
一个只有一个入口,却有成千上万个出口的复杂迷宫。
“这是蛋白质的构象空间,”
他用笔尖点了点那个唯一的入口,“这是健康的、折叠正确的初始状态。”
然后,他的笔尖在那些密密麻麻的出口上划过。
“这些,是你用冷冻电镜拍到的几万张‘终点’快照。每一个出口,都代表一种不同的、错误折叠的病变构象。”
程新竹看着那个图,眼神依旧没什么光彩,嘟囔道:
“所以呢?我们让一只蚂蚁从入口进去,它在里面兜兜转转几百年都找不到正确的出口。这就是‘遍历性灾难,你不是已经知道了吗?”
“对。所以我们不放蚂蚁了。”
林允宁看着她,眼神亮得惊人,“我们换个玩法。如果我们已经知道了所有出口的位置,为什么不能从这些出口出发,倒着往回走,把整个迷宫的地图给画出来?”
程新竹愣住了。
“倒着走?”
“对。我们不需要模拟蛋白质如何从头折叠,那是正向的‘积分’过程,是无底洞。我们要做的,是根据已有的实验数据,去‘反演”这个过程,是‘逆问题'!”
林允宁的声音不大,但每个字都掷地有声,“这不是一个算力问题,这是一个信息重构问题!”
程新竹呆呆地看着草稿纸上的迷宫,脑子有点转不过来。她毕竟是搞实验生物学的,对这些抽象的算法理论,理解起来有些吃力。
“这......这不还是算吗?”
她小声问,“倒着走就不会迷路了?”
“当然会。所以我们需要一个罗盘。”
林允宁在草稿纸的另一边,写下了一个数学符号:Dki(P||Q)。
“这个叫‘KL散度’,是信息论里的一个工具,”
他用最简单的语言解释道,“你可以把它理解成一个测量’意外程度”的尺子。它衡量的是,我们用一个假设的模型(Q),去描述真实的数据(P)时,会丢失多少信息。”
他看着程新竹,打了个比方:
“简单来说,我们从成千上万个‘出口往回推,每走一步,就用这个‘罗盘’算一下。如果算出来的信息损失变小了,说明我们走了;如果信息损失变大了,说明我们走错了,那就退回来,换条路再试。”
“这样一步步倒推回去,最终就能找到那条信息损失最小,也就是概率最大,能量最省力的路径。那条路,就是蛋白质从健康到病变,最可能走的那条主干道’!”
这番话,终于点醒了程新竹。
她猛地坐直身体,一把抢过林允宁手里的笔,眼神里重新燃起了光。
“我懂了!”
她的大脑开始飞速运转,立刻用自己熟悉的生物学语言重构了这个逻辑,“你的意思是,我们不是要去从头养大小白鼠,看它最后得了什么病。而是直接解剖一万只已经得了不同病症的小白鼠,通过对比它们的基因和生理指
标,来反推出最开始是哪个基因出了问题?!”
“非常精准的比喻。
林允宁笑了。
“天啊......”
程新竹的呼吸急促起来,她看着林允宁,像在看一个怪物,“你这个想法......简直是疯了!你把物理学的信息论,用到了蛋白质折叠上?”
“为什么不呢?”
"......"
程新竹激动得说不出话,她站起身,在长椅前焦躁地来回踱步,嘴里不停地念叨着,“构象反向传播......最大似然路径......天啊,如果这个能成......”
周围路过的几个学生,都用看神经病一样的眼神看着这两个在长椅前手舞足蹈,嘴里念叨着无人能懂的词汇的亚裔年轻人。
最终,程新竹停下脚步,猛地转过身,双手抓住林允宁的肩膀,用力晃了晃。
“走!现在就去干!”
两人分开后,林允宁直接去了克雷勒图书馆。
他在三楼找了个僻静的角落,把笔记本电脑接上电源。
桌子上,摊开着两本书。
一本是《Numerical Recipes in C》,另一本是David MacKay的《Information Theory, Inference, and Learning Algorithms》。
他戴上耳机,隔绝了周围的一切声音,开始将脑中那个疯狂的想法,翻译成一行行冰冷、精确的代码。
他没有从头造轮子,而是将之前为Aether开发的贝叶斯推断框架,进行了一次彻底的升级,将目标从“参数估计”,转向了“路径搜索”。
两天后,算法原型完成。
周五晚上,I-House的大厅。
林允宁和程新竹并排坐在那台嗡嗡作响的笔记本电脑前,神情专注。
“就用一千张图先试试,”
程新竹显得有些紧张,双手合十放在胸前,像是在祈祷,“要是这个再失败,我真的不知道该怎么办了。”
“不会的。”
林允宁的语气很平静,他打开终端,敲下了一行命令:
python pim_cc.py --data tau_subset_1k.dat --mode backward
按下回车。
笔记本的风扇开始发出微弱的嗡鸣声,屏幕上,进度条缓慢地向前移动。
时间一分一秒地过去。
程新竹紧张得不停地咬着自己的手指甲,眼睛死死盯着屏幕。
几个小时后,当时钟指向凌晨一点,进度条终于走到了100%。
一个Matplotlib绘图窗口,自动弹了出来。
窗口的背景是黑色的,上面散落着上千个白色的数据点,像一片杂乱的星空。
每一个点,都代表着一种蛋白质的“幽灵构象”。
程新竹屏住了呼吸。
下一秒,一条红色的细线,毫无征兆地出现在屏幕上。
它像一个技术高超的画师,灵巧地穿梭在那片星空中,将一个个看似毫无关联的、孤立的数据点,优雅地串联了起来。
最终,形成了一条平滑、连续、符合能量梯度下降的轨迹。
“成功了......”
程新竹捂住嘴,声音里带着一丝颤音。
那条红色的轨迹,就是他们梦寐以求的,蛋白质错误折叠的路径!
“等等,”
林允宁没有庆祝,他指着屏幕上那条轨迹的中间某个位置,“你看这里。”
他将那部分区域放大。
只见在那段平滑的轨迹上,有一个极其突兀的“尖峰”。
“这是什么?”
程新竹凑了过去。
“能量势垒。”
林允宁调出了轨迹对应的能量变化曲线,“蛋白质在折叠到这里时,需要克服一个巨大的能量障碍才能继续往下走。
“换句话说,这是一个能量极不稳定的‘过渡态’结构。”
他敲了几个命令,将这个过渡态对应的三维结构单独渲染了出来。
屏幕上,一个由无数原子构成的、结构极其扭曲的蛋白质模型,静静地悬浮着。
程新竹看着那个模型,呼吸猛地一滞。
“等等......这个形状......折叠片在这里发生了致命的错位......它就像一个结构上的“瓶颈'!”
她猛地抬起头,看着林允宁,眼神里爆发出难以置信的狂喜。
“它就是那个中间体,药物设计的完美靶点!”
林允宁冷静地看着屏幕,点了点头。
“而且,”
他指着能量曲线上另外几个稍小的尖峰,“很可能不只一个。”