1.简介
菲尼克斯(亚当斯等。, 2010)是一种广泛使用的晶体学系统结构测定使用衍射数据。最近,大分子晶体学实验和计算工具的改进使得非专业人员在过去十年中广泛采用了这项技术,并且蛋白质数据库(PDB;Bernstein)中存储的结构数量急剧增加等。, 1977; 伯曼等。, 2000; 伯曼,2008). 结构基因组学倡议的同步努力(参见Cymborowski的例子等。, 2010; 埃尔斯利格等。, 2010)而生物技术和制药行业则专注于高通量技术,以快速解决结构问题为目标。快速结构解决方案通常需要多种方法的组合,例如阶段化策略的并行测试或质量未知的多个相关数据集的快速评估。这可以通过使用高度自动化来实现,既增加了成功求解和细化结构的概率,又避免了晶体仪承担重复耗时的任务。已经提出了大量用于运行几乎无人值守的部分或全部计算“管道”的系统,许多系统的重点是使用命令行脚本或HTML接口(Brunzelle等。, 2003; Holton&Alber,2004年; 克勒默等。, 2004; 潘基卡尔等。, 2005; 冯海因等。, 2007). 在有利的情况下,可以从原始衍射图像或处理后的数据开始获得最完整的模型;然而,几乎总是需要专家进行额外的更正和完成,对于更困难的结构,自动化可能会失败。
在许多方面,图形用户界面(GUI)非常适合作为自动化平台,特别是对于在使用实现大量复杂算法的软件时面临陡峭学习曲线的新手用户。GUI中的表示可用于将常用参数与高级选项分开,并提供有关其预期用途的附加信息。此外,GUI可以提供一个框架来跟踪有关单个项目的信息,而不是依赖本地文件系统和文本文件;它还可以促进自动化,例如通过建议或简化程序之间的转换,或促进通用参数集和其他输入文件的重用。最后,晶体学软件生成的许多信息在以纯文本文件形式显示时可能很难解释。在许多情况下,以二维图形或三维模型和地图表示大大简化了过程。
当前一代的大多数图形界面都专注于使各个步骤尽可能地可访问并将它们链接在一起,而不是将“黑匣子”自动化强加给用户(Potterton等。, 2003; Pape&Schneider,2004年; 次要等。, 2006; 埃姆斯利等。, 2010). 我们实现了一个图形界面菲尼克斯围绕类似的概念进行设计,使用适合作为命令行工具和GUI基础的新参数语法。新的GUI提供了对几乎所有命令行功能的访问菲尼克斯,使其适合于技术背景较低的专家和用户。
2.方法
2.1、。这个菲尼克斯软件开发环境
2.1.2. GUI工具包
第二个基本决策是GUI工具包的选择。我们确定Python接口非常适合,主要有两个原因。第一个是Python最大限度地提高了程序员的生产力,第二个是菲尼克斯几乎都是通过Python接口(Grosse-Kunstleve等。, 2002). 我们还确定GUI工具包必须为所有主要功能提供跨平台支持,并且它应该得到现有主要用户社区的支持,因为这与长期可用性相关。最后,为了与菲尼克斯,GUI工具包必须是开源的。经过全面评估后,wxPython工具包(https://wxpython.org)被选为最符合这些要求的。
2.1.3. 统一用户界面工具包(Phil)
第三个基本组件菲尼克斯GUI是基于Python的分层交换语言(Phil;https://cctbx.sourceforge.net/libtbx_phil.html),作为菲尼克斯项目(格罗塞·昆斯特里夫等。, 2005). Phil旨在同时启用直观的命令行用户界面,并在很大程度上帮助自动生成图形用户界面。菲尼克斯为命令行用户提供了一个最小但功能强大的语法来定义输入参数;唯一的两个主要语法元素是关键字值赋值的等号和描述层次结构的花括号。对于方法开发人员,Phil为参数文件的模块化组装提供了灵活的方法。Phil模块通常与使用参数的算法一起实现。Phil支持为用户嵌入帮助文本。通常,算法和包含帮助文本的Phil模块保存在同一个Python源代码文件中。这种安排确保了算法、相关参数和帮助文本可以很容易地一起开发和维护,并且可以被新方法开发人员接近。
Phil参数文件可以自动转换为图形表示。这利用了Phil模块中嵌入的元数据,主要是每个参数的类型(例如int、float、choice、path等。),由开发人员定义。对于每种类型,GUI中都有相应的默认表示。或者,类型信息由开发人员定义的辅助信息进行补充,以指导GUI中的自定义表示。典型示例如图1所示(一)和1(b条). 创建和管理用于编辑这些参数的图形控件所需的几乎所有信息都包含在元数据中。Phil参数的层次结构有助于确定窗口布局。开发人员可以修改基础程序的大多数选项,而不会中断GUI。用户修改的参数是通过形成新的内部Phil对象从GUI中检索的,这些对象可以保存为命令行程序的输入文件,也可以直接用于启动计算过程。高级用户可以选择在执行进程之前编辑Phil文件。通过恢复和合并过去的输入以及为特定上下文保存默认设置的选项,减少了重复输入的需要。
| 图1 (一)的示例菲尼克斯定义使用libtbx.phil软件中的模块cctbx公司,GUI中使用了元数据。(b条)根据中的规范自动绘制控件(一). (c(c))全自动界面生成的一个实例:PDB文件准备精炼在里面菲尼克斯.就绪集. |
每个Phil参数定义或层次结构级别都用“专家级别”属性标记,这允许GUI中的显示仅限于基本设置或增加的复杂性级别。由于许多设置会分散新手的注意力,或者主要用于开发目的,因此默认界面保持简单,并且主窗口中显示了一组最少的控件。
Phil实现旨在用于多种用途。为此,Phil类型系统被设计为可以从Python扩展。例如,扩展机制用于支持晶体学特定类型,最显著的是晶胞和空间群类型。它们包含常见的缩写和句法变化。例如,将空间组符号“p212121”或“19”转换为标准形式“P 21 21 21”。
2.2. 程序的执行
这个菲尼克斯软件开发框架允许任何程序在GUI中作为Python模块运行。这可以实现即时反馈,例如实时绘图或进度条。然而,为了实现最大的灵活性,已经实施了几个启动流程的附加方法。程序可以直接从GUI启动,作为同一台计算机上的单独进程,也可以在由批处理队列系统(例如Sun Grid Engine或Portable batch system)管理的集群上启动。后两种机制允许在不中断运行进程的情况下关闭GUI(并在稍后恢复),代价是会丢失一些需要GUI和运行进程之间直接通信的交互功能。在所有情况下,打印的控制台输出都会自动传播到GUI。使用“回调”将更复杂的输出逐个发送到GUI,回调封装了要保存到临时文件或直接发送的中间数据通过进程间通信对象。通过该机制发送到GUI的信息可能包括警告消息、统计表、绘图数据,甚至模型和地图。将更高级别的数据传播到GUI的能力使得可以使用易于解释的演示来提供程序进度的细粒度指标,而不是仅仅依赖于文本输出。
2.3. 测试
协作开发或任何长期软件项目的一个基本特征是经常测试所有基本功能,以防止代码更改带来的错误。在以下背景下菲尼克斯和cctbx公司(亚当斯等。, 2010),这主要是通过在所有支持的平台上运行夜间构建和一组回归测试来完成的。由于软件的交互性,图形代码的自动测试非常困难。然而,核心逻辑和表示的仔细分离允许将非图形组件作为夜间构建系统的一部分进行测试。这包括一致性检查,以确保GUI中表示的所有参数都没有从基础程序中删除。图形控件作为独立的模块实现,在可能的情况下具有最小的依赖性,这使得它们可以用于其他目的,并且不太容易因更改其他代码而出错。每个控件都包含一个简单的测试程序,可以作为独立的命令手动运行,允许快速验证代码更改,而无需运行整个应用程序。
3.结果和讨论
3.1. 概述菲尼克斯图形用户界面
截至当前版本(2011年12月1.7.3日)菲尼克斯在GUI中可用,包括菲尼克斯定义(黄嘌呤等。, 2012)自动解决方案,自动编译,自动MR和配体配合巫师(特威利格等。, 2006, 2008, 2009),相位器(麦考伊等。2007年),X分诊(兹瓦特等。, 2005),肘部(莫里亚蒂等。, 2009),罗塞塔先生(地脉等。, 2011),一个全面的验证套件,主要源自摩尔概率(陈)等。, 2010),多边形(乌尔珠姆塞娃等。, 2009)、和菲尼克斯模型vs数据(黄嘌呤等。, 2010)以及许多用于构建、地图计算、约束编辑、文件处理、数据分析和可视化的简单程序。
中几乎所有的程序菲尼克斯现在可由Phil配置;在那些原始代码是围绕这个框架设计的情况下(例如菲尼克斯定义和X分诊),除了添加特定于GUI的元数据之外,只需要进行少量修改。对于Phil之前的应用程序,例如向导和肘部,需要额外的包装器代码来提供Phil和内部使用的配置机制之间的接口。在相位器添加了一个全新的命令行界面,作为Phil层和现有Python API(McCoy)之间的桥梁等。, 2007).
事实证明,基于Phil的系统对于维护应用程序的接口至关重要,例如菲尼克斯定义,目前有900多个唯一参数。对参数的大多数更改都可以自动传播到菲尼克斯GUI,大多数定制都是在Phil元数据中进行的,而不是Python代码。对于特别复杂的输入类型(尤其是文件输入),嵌入的关键字可以指定更改参数时要执行的回调函数。使用基本类型的一些常见参数通常有额外的语法限制,并且可能与其他参数紧密耦合,例如从反射数据文件中选择列标签(作为逗号分隔的字符串);这些由Phil语法中的样式关键字标记,并由专门的控件处理。单个应用程序的额外定制通常是不可避免的,几乎所有接口都包含一些顶级控件的自定义布局代码。然而,对于简单的程序,完全自动的界面是可能的(图1c(c)),甚至是最复杂的界面菲尼克斯定义,提供了90%以上的参数,无需任何定制。
中央GUI的组织(“phenix”命令)将用户定义的项目列表及其当前状态与按类别分组的单个程序相结合(图2). 在内部,Phil还用于定义有关可用程序的许多信息,例如模块位置和主GUI中小部件中显示的内容。在Macintosh平台上,Phil规范中嵌入的帮助链接用于生成按钮,以便从GUI中的任何位置直接导航到HTML文档。Phil也是项目跟踪的主要存储格式。当前选定项目的作业历史记录显示在单独的窗口中(通过“作业历史记录”选项卡访问)。可以根据修改时间或当前最佳值对作业和项目进行排序R(右)自由的(布伦格,1992年)(如果已计算,则在每个作业结束时提取)。目前,作业跟踪是项目的主要功能,但将来将扩展此功能以管理默认设置和输入。为了演示,菲尼克斯与许多教程数据集一起分发,这些数据集可以直接从GUI设置为项目。
| 图2 的主窗口的屏幕截图菲尼克斯在Macintosh计算机上运行的GUI。 |
虽然它们共享一个通用的配置系统,但各个程序的输出是异构的,并且已经实现了各种机制,以直观地显示每个应用程序的进度和结果。大型程序,如菲尼克斯定义发送整个分子和地图通过更新后的回调,并且此输出显示在图形程序中,例如库特(埃姆斯利等。, 2010)(见下文)。最终结果可能包括验证报告、模型、绘图表和写入文件的任何信息。这些结果(以及回调的任何中间结果)都保存到磁盘上,可以在以后的会话中快速重新加载并显示在GUI中。对于许多程序,返回的最终结果是创建的简单文件列表,可以使用通用过程自动显示该列表。大型程序的异构性和返回信息的复杂性要求对许多结果使用手动布局,尽管尽可能重用通用类。
4.结论和未来方向
Python和Phil配置系统的结合被证明是一个高效开发图形界面的高效环境,极大地提高了菲尼克斯面向更广泛的结构生物学家群体。定期添加新的接口,并且由于可配置参数现在通常在设计时考虑了GUI因素,因此相对于开发核心算法所投入的精力而言,它们的实现通常只需要很小的工作量。与的集成库特和PyMOL公司为以下各方面提供了近乎无缝的工作流结构测定和精炼从处理过的数据开始,不需要了解菲尼克斯命令行工具。这使得研究人员的培训能够集中于一般原则和最佳实践,而不是高级计算机技能。
随着菲尼克斯GUI继续,底层框架不断修改,以提高模块性并支持更全面的单元测试。使用Phil的轻量级应用程序通常可以集成到菲尼克斯GUI没有专门的Python代码,越来越多的实用程序现在使用这种方法。最终,核心GUI库将被扩展为一个通用框架,用于开发围绕cctbx公司,包括相关程序,如标签(绍特等。, 2004).
致谢
吕克·包希斯为cctbx公司,包括显示电子密度和各向异性椭球体的代码。Alexandre Urzhumtsev开发了用于验证的POLYGON概念。许多用户和合作者在开发菲尼克斯,尤其是詹姆斯·弗雷泽、赫伯·克莱、弗兰克·冯·德尔夫特、乔尔·巴德、英格恩·奥兹坎、费利克斯·弗罗洛和罗伯特·诺尔特。保罗·埃姆斯利、伯恩哈德·洛坎普和威廉·斯科特协助库特集成和支持,Robin Dunn为wxPython开发提供了建议。我们感谢已故的沃伦·德拉诺PyMOL公司在整个过程中提供支持和建议菲尼克斯项目。资金由NIH(批准号:GM063210)和PHENIX工业联盟提供。
工具书类
Abrahams,D.&Grosse-Kunstleve,R.W.(2003)。C/C++用户J。 21, 29–36. 谷歌学者
P.D.亚当斯。等。(2010).《水晶学报》。D类66, 213–221. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Afonine,P.V.,Grosse-Kunstleve,R.W.,Chen,V.B.,Headd,J.J.,Moriarty,N.W。,理查德森·J·S、理查德森·D·C、乌尔朱姆塞夫·A、兹瓦特·P·H·亚当斯·P·D(2010)。J.应用。克里斯特。 43, 669–676. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Afonine,P.V.,Grosse-Kunstleve,R.W.,Echols,N.,Headd,J.J.,Moriarty,N.W。,Mustyakimov,M.W.、Terwilliger,T.C.、Urzhumtsev,A.、Zwart,P.H.和Adams,P.D.(2012年)。《水晶学报》。D类68, 352–367. 科学网 交叉参考 IUCr日志 谷歌学者
Berman,H.M.(2008)。《水晶学报》。A类64, 88–95. 科学网 交叉参考 IUCr日志 谷歌学者
Berman,H.M.、Westbrook,J.、Feng,Z.、Gilliland,G.、Bhat,T.N.、Weissig,H.、Shindyalov,I.N.和Bourne,P.E.(2000)。核酸研究。 28,235–242科学网 交叉参考 公共医学 中国科学院 谷歌学者
Bernstein,F.C.,Koetzle,T.F.,Williams,G.J.,Meyer,E.F.,Brice,M.D.,Rodgers,J.R.,Kennard,O.,Shimanouchi,T.&Tasumi,M.(1977年)。分子生物学杂志。 112, 535–542. 交叉参考 中国科学院 公共医学 科学网 谷歌学者
Brünger,A.T.(1992)。自然(伦敦),355, 472–475. 公共医学 科学网 谷歌学者
Brunzelle,J.S.、Shafaee,P.、Yang,X.、Weigand,S.、Ren,Z.和Anderson,W.F.(2003)。《水晶学报》。D类59, 1138–1144. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Bunkóczi,G.&Read,R.J.(2011)。《水晶学报》。D类67, 303–312. 科学网 交叉参考 IUCr日志 谷歌学者
Chen,V.B.、Arendall,W.B.、Headd,J.J.、Keedy,D.A.、Immormino,R.M.、Kapral,G.J.,Murray,L.W.、Richardson,J.S.和Richardsson,D.C.(2010)。《水晶学报》。D类66, 12–21. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Chen,V.B.、Davis,I.W.和Richardson,D.C.(2009年)。蛋白质科学。 18,2403–2409科学网 交叉参考 公共医学 中国科学院 谷歌学者
协作计算项目,第4期(1994年)。《水晶学报》。D类50,760–763交叉参考 IUCr日志 谷歌学者
Cymborowski,M.、Klimecka,M.和Chruszcz,M.,Zimmerman,M.D.、Shumilin,I.A.、Borek,D.、Lazarski,K.、Joachimiak,A.、Otwinowski,Z.、Anderson,W.和Minor,W.(2010年)。J.结构。功能。基因组学,11, 211–221. 交叉参考 中国科学院 公共医学 谷歌学者
DeLano,W.L.(2002)。PyMOL分子图形系统。薛定谔有限责任公司,https://www.pymol.org/. 谷歌学者
DiMaio,F.、Terwilliger,T.C.、Read,R.J.、Wlodawer,A.、Oberdorfer,G.、Wagner,U.、Valkov,E.、Alon,A.、Fass,D.、Axelrod,H.L.、Das,D.、Vorobiev,S.M.、Iwa,H.、Pokkuluri,P.R.和Baker,D.(2011年)。自然(伦敦),473, 540–543. 科学网 交叉参考 中国科学院 公共医学 谷歌学者
Elsliger,M.-A.,Deacon,A.M.,Godzik,A.,Lesley,S.A.,Wooley,J.,Wüthrich,K.&Wilson,I.A.(2010年)。《水晶学报》。F类66, 1137–1142. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Emsley,P.、Lohkamp,B.、Scott,W.G.和Cowtan,K.(2010年)。《水晶学报》。D类66, 486–501. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Grosse-Kunstleve,R.W.、Afonine,P.、Sauter,N.K.和Adams,P.D.(2005)。IUCr结晶计算委员会通讯第5期,第69-91页谷歌学者
Grosse-Kunstleve,R.W.,Sauter,N.K.,Moriarty,N.W.和Adams,P.D.(2002)。J.应用。克里斯特。 35, 126–136. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Holton,J.&Alber,T.(2004)。程序。美国国家科学院。科学。美国,101,1537-1542年科学网 交叉参考 公共医学 中国科学院 谷歌学者
Humphrey,W.、Dalke,A.和Schulten,K.(1996)。J.摩尔图。 14, 27–38. 交叉参考 科学网 谷歌学者
Kroemer,M.、Dreyer,M.K.和Wendt,K.U.(2004年)。《水晶学报》。D类60, 1679–1682. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Langer,G.、Cohen,S.X.、Lamzin,V.S.和Perrakis,A.(2008年)。《国家协议》。 三, 1171–1179. 科学网 交叉参考 公共医学 中国科学院 谷歌学者
McCoy,A.J.,Grosse-Kunstleve,R.W.,Adams,P.D.,Winn,M.D.,Storoni,L.C.&Read,R.J.(2007)。J.应用。克里斯特。 40, 658–674. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Minor,W.、Cymborowski,M.、Otwinowski,Z.和Chruszcz,M.(2006年)。《水晶学报》。D类62, 859–866. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Moriarty,N.W.、Grosse-Kunstleve,R.W.和Adams,P.D.(2009年)。《水晶学报》。D类65, 1074–1080. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Panjikar,S.、Parthasarathy,V.、Lamzin,V.S.、Weiss,M.S.和Tucker,P.A.(2005)。《水晶学报》。D类61,449–457科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Pape,T.&Schneider,T.R.(2004)。J.应用。克里斯特。 37, 843–844. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Payne,B.R.、Owen,G.S.和Weber,I.(2005)。计算科学–ICCS 2005,第五届国际会议,美国佐治亚州亚特兰大,2005年5月22日至25日,会议记录,第一部分,《计算机科学》第3514卷讲义,第451-459页。柏林,海德堡:施普林格。 谷歌学者
Potterton,E.、Briggs,P.、Turkenburg,M.和Dodson,E.(2003)。《水晶学报》。D类59, 1131–1137. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Sauter,N.K.、Grosse-Kunstleve,R.W.和Adams,P.D.(2004)。J.应用。克里斯特。 37, 399–409. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Schwieres,C.D.和Clore,G.M.(2001年)。J.马格纳。Reson公司。 149, 239–244. 科学网 交叉参考 公共医学 中国科学院 谷歌学者
Stroustrup,B.(2000年)。C++编程语言。印第安纳波利斯:艾迪森·卫斯理。 谷歌学者
Terwilliger,T.C.、Adams,P.D.、Read,R.J.、McCoy,A.J.、Moriarty,N.W.、Grosse-Kunstleve,R.W.,Afonine,P.V.、Zwart,P.H.&Hung,L.W.(2009年)。《水晶学报》。D类65, 582–601. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Terwilliger,T.C.、Grosse-Kunstleve,R.W.、Afonine,P.V.、Moriarty,N.W.,Zwart,P.H.、Hung,L.-W.、Read,R.J.和Adams,P.D.(2008)。《水晶学报》。D类64, 61–69. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Terwilliger,T.C.、Klei,H.、Adams,P.D.、Moriarty,N.W.和Cohn,J.D.(2006)。《水晶学报》。D类62, 915–922. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Urzhumtseva,L.、Afonine,P.V.、Adams,P.D.和Urzhum tsev,A.(2009年)。《水晶学报》。D类65, 297–300. 科学网 交叉参考 中国科学院 IUCr日志 谷歌学者
Van Rossum,G.&Drake,F.L.(2003)。Python简介布里斯托尔:网络理论有限公司谷歌学者
Vonrhein,C.、Blanc,E.、Roversi,P.和Bricogne,G.(2007年)。方法分子生物学。 364,215–230公共医学 中国科学院 谷歌学者
Word,J.M.,Lovell,S.C.,LaBean,T.H.,Taylor,H.C.,Zalis,M.E.,Presley,B.K。,理查德森·J·S·和理查德森·D·C·(1999)。分子生物学杂志。 285, 1711–1733. 科学网 交叉参考 中国科学院 公共医学 谷歌学者
Zwart,P.、Grosse-Kunstleve,R.W.和Adams,P.D.(2005)。CCP4蛋白质结晶通讯,第43号谷歌学者
| 的日志 应用 结晶学 |
国际标准编号:1600-5767
打开访问