在围棋胜利之后,Hassabis和DeepMind的顶级科学家David Silver决定,是时候从围棋比赛,转向解决现实世界的问题了。于是他们开始转攻蛋白质的问题,而生物学家John Moult数十年的工作为DeepMind进入生物学铺平了道路。1994年,他创办了CASP 蛋白质结构预测大赛(Critical Assessment of Protein Structure Prediction)。参赛者会被分到大约100个未知的蛋白的氨基酸序列,这些蛋白质的三结构已经是确定的但并未公布过。参赛团队将有几个月的时间去研发和使用数学模型以解决这些未知的结构。Moult会对他们的预测进行准确性评分。满分100,超过90就表明结构预测接近完美。DeepMind在2018年的CASP会议上进行了首次公开尝试。AlphaFold的第一个版本赢得了比赛并击败了世界标准。在比赛中,获胜者的预测准确率通常为40%左右,而AlphaFold的成绩是60%。虽然这个成绩让人眼前一亮,但AlphaFold的预测有很多错误,还不够完美。Hassabis 想做得更好。
在CASP结果公布前几个月,AlphaFold背后的顶级科学家之一John Jumper正在与他的团队一起规划,想要对该技术进行渐进式的改进。Hassabis 却出人意料地叫停他们,大概意思是「用现在的模型解决这个问题是不是太难了?是不是做个别的模型?」那次谈话之后,Jumper就抛弃了AlphaFold的第一个版本,直接从头开始。Jumper说,「AlphaFold 2是在对蛋白质有更多生物和物理知识的基础上构建的。」在2020年年底的CASP上,AlphaFold 2交出了答卷,预测蛋白质结构的准确率达到了近90%,远远高于其他参赛选手。专家们认为它有效地解决了这个问题。「那一刻,我知道我们改变了科学史,」Jumper说。
在2019年,Raphael Townshend作为DeepMind实习生,在AlphaFold工作,当时他正在完成斯坦福大学的计算机科学博士学位。现在,他在旧金山经营着一家名为Atomic AI的创业公司,希望开发他所谓的「RNA的AlphaFold」。RNA读取我们的遗传(DNA)中的指令,在体内创造蛋白质。他的公司想要预测RNA分子的结构,并且希望利用这些研究来开发药物。其他生物技术公司也在将AlphaFold与其他AI技术结合使用,来快速、廉价地发现潜在的新药。例如,初创公司Insilico Medicine将自己的人工智能系统与AlphaFold一起使用,来设计可以阻断与肝癌相关的蛋白质的分子。它创造了其中一个分子,并使用实验室测试来确认它可以发挥作用。该公司在1月份发表了这项研究。该公司的首席执行官Alex Zhavoronkov声称,他的团队从找到药物靶点到设计药物并在实验室进行测试,只花了大约50天,不到100万美元,他认为这是药物开发一个记录。Zhavoronkov的办公室里放着Hassabis的照片,「AlphaFold是一个绝妙的发现,但它是一个巨大的乐高拼图中的一部分,你需要拥有这个拼图才能成功地将药物投放市场。」不过,虽然这项人工智能的技术让药物研发变得更加快速容易,但是由于临床试验的费用,该公司并不打算将其药物推进人体研究,因为在动物和人类身上进行测试的过程仍然需要许多年和数亿美元。我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应
我有以下内容:text.gsub(/(lower)(upper)/,'\1\2')我可以将\2替换为大写吗?类似于:sed-e's/\(abc\)/\U\1/'这在Ruby中可行吗? 最佳答案 查看gsub文档:str.gsub(模式){|匹配|block}→new_str在block形式中,当前匹配字符串作为参数传入,$1、$2、$`、$&、$'等变量将被适当设置。block返回的值将替换为每次调用的匹配项。"alowerupperb".gsub(/(lower)(upper)/){|s|$1+""+$2.upcase}
我想编写一个ruby脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"
对于我正在编写的Rails3应用程序,我正在考虑从本地文件系统上的XML、YAML或JSON文件中读取一些配置数据。重点是:我应该把这些文件放在哪里?Rails应用程序中是否有用于存储此类内容的默认位置?附带说明一下,我的应用程序部署在Heroku上。 最佳答案 我经常做的是:如果文件是通用配置文件:我在目录/config中创建一个YAML文件,每个环境有一个上层key如果我为每个环境(大项目)创建一个文件:我为每个环境创建一个YAML并将它们存储在/config/environments/然后我在加载YAML的地方创建了一个初始化
在我的mac上安装几个东西时遇到这个问题,我认为这个问题来自将我的豹子升级到雪豹。我认为这个问题也与macports有关。/usr/local/lib/libz.1.dylib,filewasbuiltfori386whichisnotthearchitecturebeinglinked(x86_64)有什么想法吗?更新更具体地说,这发生在安装nokogirigem时日志看起来像:xslt_stylesheet.c:127:warning:passingargument1of‘Nokogiri_wrap_xml_document’withdifferentwidthduetoproto
我遇到了同样的问题here对于python,但对于ruby。我需要输出这样一个小数字:0.00001,而不是1e-5。有关我的特定问题的更多信息,我正在使用f.write("Mynumber:"+small_number.to_s+"\n")输出到一个文件对于我的问题,准确性不是什么大问题,所以只做一个if语句来检查是否small_number那么更通用的方法是什么? 最佳答案 f.printf"Mynumber:%.5f\n",small_number您可以将.5(小数点右侧5位数字)替换为您喜欢的任何特定格式大小,例如,%8
我目前还在上学,正在上一门关于用C++实现数据结构的类(class)。在业余时间,我喜欢使用“高级”语言(主要是Ruby和一些c#)进行编程。既然这些高级语言为你管理内存,你会用数据结构做什么?我可以理解对队列和堆栈的需求,但是您需要在Ruby中使用二叉树吗?还是2-3-4树?为什么?谢谢。 最佳答案 Sosincethesehigherlevellanguagesmanagethememoryforyou,whatwouldyouusedatastructuresfor?使用数据结构的主要原因与垃圾收集无关。但它是以某种方式有效的
它们可以这样定义Struct.new(:x,:y)但是用它们能做什么?具体来说,如何创建这种结构的实例?这行不通Struct.new(:x=>1,:y=>1)(您收到TypeError:can'tconvertHashintoString)。我正在使用Ruby1.9.2。更新:目前为止很好的指点,谢谢。我想我问这个的原因是我有好几次发现自己想要这样做Struct.new(:x=>1,:y=>1)这样我就可以在可以编写obj.x的地方传递一个对象,而不是说,实例化一个散列并必须编写obj[:x].在这种情况下,我希望该结构真正是匿名的-我不想通过命名从Struct.new调用返回的内容来