2.实施概述
中央对手方清算所4我2是用Python脚本语言编写的(https://www.python.org). 这是为了便于与其他主要的大分子晶体学软件包协作而选择的,至少在一定程度上是这样。与Python捆绑在一起的库种类繁多,并且可以作为易于安装的第三方插件使用,这使得它成为许多项目的一个有吸引力的选择。中使用的图形工具包中央对手方清算所4我2为Qt(网址:https://www.qt.io/),具有PyQt项目提供的Python接口(https://riverbankcomputing.com/software/pyqt/intro). 如表1所示,还使用了其他一些Python语言软件工具SWIG系统(网址:https://www.swig.org)已用于为中使用的科学C++库提供Python接口中央对手方清算所4,包括模型坐标库MMDB(Krissinel等。, 2004)和晶体库Clipper(Cowtan,2003)). 所有这些工具都作为定制的Python发行版收集在一起,称为ccp4-Python,它是作为中央对手方清算所4套房。ccp4-python可用于三种最广泛使用的桌面平台(Windows、MacOSX和Linux),并提供了一系列优秀的工具,允许开发人员分发软件中央对手方清算所4发行版提供了所有基本的依赖关系。图形界面和科学脚本都是用Python编写的,因此它们都可以访问ccp4-Python、数据模型以及编码在中央对手方清算所4我2
这个中央对手方清算所4我2软件包括两个组件:提供框架的“核心”软件,包括图形界面、数据库和数据模型,以及对科学功能进行编码的“任务”,通常为包含在中央对手方清算所4套房。每个包装器为包装好的程序生成适当的输入,运行程序并处理程序输出。套件中的一些水晶图形软件可以直接访问通过Python接口,以便“包装器”脚本可以使用此接口,而不是包装和执行单独的程序。包装器脚本的编程接口是一组具有严格定义的接口的Python函数,这意味着可以通过组合多个包装器脚本来直接生成“管道”脚本,从而运行多个不同的程序。在中央对手方清算所4我2包装器和管道都被称为“任务”。任务的一致Python接口也有助于以最少的编程工作量创建一致的图形界面。这些任务处理单个程序的特性,并对大量晶体专业知识进行编码,以促进优化使用中央对手方清算所由不熟练的晶体学家开发的4个软件。为“任务”提供一致的Python接口的基本思想与其他结构解决系统(例如菲尼克斯和夏并使与在这些系统中开发的软件的接口变得可行。
这些任务由许多不同的开发人员执行,他们在结构解决方案的不同方面具有专业知识,涵盖了从数据处理到最终结构验证和分析的整个结构解决过程。虽然大多数任务都运行非图形程序,但仍有一些任务运行交互式软件,如库特和中央对手方清算所4毫克将这些程序集成到中央对手方清算所4我2框架使其使用不太容易出错,简化了应用程序之间的数据移动,并创建了该过程中使用和创建的数据和文件的永久记录。
关键进展中央对手方清算所4我2个以上中央对手方清算所4我(以及类似的菲尼克斯GUI)是对项目中所有数据的清晰跟踪。这不仅改善了用户界面,而且重要的是,它还可以作为结构解决过程的长期记录。通过实现数据模型,明确定义流程每个步骤中使用的所有数据类型,以及维护一个健壮的数据库,可以实现数据跟踪。在数据模型中,每个数据类型都由Python类表示。这些类涵盖了一系列复杂性,例如CInt公司,整数;C电池,晶体学单位-细胞参数;CMtz数据文件MTZ数据文件的引用;和CEnsemble公司,输入模型集合的完整描述分子替换。Python数据类提供了许多实用函数。例如,CMtz数据文件具有从MTZ文件返回信息的函数。对于每个数据类,界面中都使用了一个适当的图形小部件。所有任务都有根据Python数据类明确定义的输入和输出数据,以便可以在任务之间无缝传递数据。输入和输出数据以传统文件格式保存[例如PDB(Callaway等。, 1996)或成本加保险费、运费(Westbrook&Fitzgerald,2009年)对于模型坐标,MTZ用于反射数据]和内部中央对手方清算所4我2数据类只跟踪文件名,而不是实际的科学数据。
数据库保存所有运行的作业和使用的所有文件的记录。中的关键数据中央对手方清算所4我2数据库是“项目”、“作业”、“文件”和“文件使用”。作业对应于一个实例,其中中央对手方清算所4我2任务已运行。每个作业都与一个项目关联。对于每个作业,都会记录所有输出数据(数据库中的“文件”)和输入数据(数据库内的“文件使用”)。
每个中央对手方清算所4我2项目有一个关联的目录结构,其中与项目关联的所有文件都以严格组织的方式保存。导入到项目中的任何文件的副本始终保存在项目目录中,与任何给定作业关联的所有文件都会自动保存在该作业的子目录中。
2.1. 数据模型
中央对手方清算所4我2具有明确定义的数据类型,接口和脚本中的所有数据和参数都必须是定义的类型之一。这种方法使不同任务之间以及图形界面、脚本和数据库之间的数据传输更加容易。每个数据类型都由一个提供相关功能的Python类表示,每个数据类型有一个关联的图形小部件,以便用户看到一致的表示。
中央对手方清算所4我2,尽可能引导用户输入适当的参数,并在输入无效或丢失时发出警告。任务开发人员可以将条件与任务的每个控制参数相关联。此类标准的示例包括最小允许值、最大允许值、默认值以及是否可以不定义该值。这些标准存储在限定符的属性中央对手方清算所4我2个数据类,可以为代表一个任务参数的类的每个实例设置。大多数限定符与用户界面中的数据验证或表示相关。前者的一个例子:CInt公司(整数)可以指定最大值和/或最小值定义整数允许范围的限定符。后者的例子有gui标签和工具提示为参数指定默认标签和“弹出”帮助的限定符。
基本数据类包括CInt公司(整数),C浮标(浮点数),CBoolean公司(布尔值),C管柱(字符串)和C列表(列表)。更具体的数据类可以从这些子类中划分出来;例如,单元格角度的定义(图4一).
| 图4 代码示例。(一)单元格角度的定义。(b条)用于处理单元参数的类的定义。(c(c))C空间组单元格类。(d日)的任务输入精炼使用REFMAC公司5 |
在这里,C倾斜角度派生自C浮标具有最大值和最小值设置限定符,以便在CFloat.有效性()方法将为超出允许范围0–180°的值标记错误。默认值为无因为没有合理的“最佳猜测”值工具提示它将出现在用户界面上,提醒用户该值以度为单位。该类唯一的附加代码是方法获取Radians()和设置辐射(),它启用以弧度为单位的值的输入和输出。
更复杂的数据可以由多个基本数据类组成;例如,定义一个类来处理单元格参数所需的所有操作(图4b条).
在这里,C电池派生自C数据,它是复杂数据的基类,并提供通用功能和目录是指定单元格参数的字典一,b条,c(c),α,β和γ。每个组件都指定了一个类,并且工具提示限定符也被重新定义,以通知用户它是单元格中的哪个组件C电池类别;当它被实例化时C数据构建()方法基于目录定义和所有基本功能都继承自C数据.
还有一个C空间组派生自的类C管柱但有一个重要的有效性()方法来检查空间组有效,并且修复()该方法,除其他外,将通过将其转换为赫尔曼-莫根约定来“修复”替代空间组约定中输入的值。下一级的复杂性是C空间组单元格类,它由C电池和C空间组(图4c(c)).
这个CSpaceGroupCell.validity()方法首次调用C单元格有效性()和CSpaceGroup.validity()以确保组件有效,然后检查单元参数是否适合空间组。
用于处理中使用的所有数据的类中央对手方清算所4我2是根据与单元和空间群示例类似的原理建立的。对于中的每个数据类中央对手方清算所4我2有一个图形小部件来表示图形用户界面中的数据。
最重要的类是那些处理数据文件的类。中使用的所有数据中央对手方清算所4我2保存在文件中,通常采用常规格式,例如模型坐标的PDB或mmCIF,实验数据的MTZ。这个CDataFile(数据文件)类处理对文件的引用,并具有如下子类CPdb数据文件用于模型数据和CMtz数据文件用于实验数据。使用特定的数据文件类表明相应的数据对象是特定类型的,但文件处理类也有文件“子类型”和“文件内容”的概念,可以提供更多信息,例如反射数据是否以结构因子振幅或强度的形式出现,以及坐标文件是否包含完整模型、结构片段、重原子或同系物。虽然这些类别不能总是明确定义,但它们可以用于指导为特定任务选择适当的文件。在数据库中记录数据文件时,还会记录其文件类型、子类型和文件内容。因此CDataFile(数据文件)具有定义文件中与其在中的使用相关的元数据的属性中央对手方清算所4我2
CDataFile(数据文件)类提供了一个应用程序编程接口(API)来访问文件中的实际数据。可访问的数据仅限于对中央对手方清算所4我2个界面或脚本。对文件的访问通常是通过Python接口到常见的CCP4 C++库,例如用于坐标文件的MMDB和用于MTZ文件的Clipper。
重大变化中央对手方清算所4我2是实验数据的处理方式。MTZ文件格式旨在保存所有可能的实验数据类型(例如结构-系数振幅、相位和自由R(右)标记),文件中每列一组数据。某些数据(例如强度)需要多列,它们的误差由两列组成。中的大多数程序中央对手方清算所4套件只需要一个输入MTZ文件,并将输出一个MTZ文件。该文件是输入文件的副本,新数据附加在其他列中。要通过旧界面使用这些程序,如中央对手方清算所4我,用户必须选择一个输入MTZ文件,然后指定要使用文件中的哪些列。这是一个两步过程,现已简化为中央对手方清算所4我2将数据组织在一个单独的“mini-MTZ”中,用于每个自给自足的数据集。不同的mini-MTZ包含一到四列数据。有四种类型的mini-MTZ。
(i) 反射数据:以反常反射对或平均值表示的合并结构因子振幅或强度。 (ii)相位概率分布,表示为具有相关优值(FOM)的相位或Hendrickson–Lattmann系数。 (iii)映射系数,对应于加权结构系数振幅和相关相位。 (iv)免费R(右)旗帜。
|
反射数据和相位都有可相互转换的替代表示法,尽管有些表示法携带更多信息,因此是首选的。中央对手方清算所4我2具有转换表示的工具,并将自动转换,以便输入到只能处理特定表示的任何程序。由于大多数程序仍然只需要一个MTZ输入文件,并且只输出一个MTZ文件中央对手方清算所4我2个包装器脚本在调用底层程序之前将mini-MTZ合并到一个输入文件中,并在程序完成后从输出MTZ文件中提取有用的新数据。虽然传统的MTZ文件仍然由中央对手方清算所4个程序“在引擎盖下”,并在需要时转换为mini-MTZ文件或从mini-MTZ文件转换而来,用户应该只看到与中的数据类型对应的小部件中央对手方清算所4我2,并且从外部导入MTZ文件时只需要暴露于传统的多列MTZ文件中央对手方清算所4我2或在导出数据时,例如在项目结束时进行沉积。使用mini-MTZ而不是传统的MTZ文件,这些文件可以有大量冗余数据,这将有助于减少使用时的磁盘空间需求中央对手方清算所4我2,但这种保存也依赖于清理机制,该机制通过多个步骤从管道中删除冗余工作文件(通常是大型MTZ文件)和中间文件。
2.2. 数据库
项目的所有关键科学数据都保存在项目目录中的文件中,但使用关系数据库来记录这些文件及其出处。项目的完整记录包括项目目录和特定于项目的数据库内容,该完整记录可以作为单个捆绑包导出和导入,如下所述。
数据库的当前实现基于SQLite v.3(https://www.sqlite.org/)已访问通过Python sqlite3接口(https://docs.python.org/2/library/sqlite3.html). 与大多数其他关系数据库管理系统相比,其主要优势是许可,它允许作为中央对手方清算所4套房。SQLite不是一个客户端-服务器系统,而是嵌入在中央对手方清算所4我2个软件。这意味着每个数据库文件实际上只能由一个中央对手方清算所4我2个用户。未来,我们预计中央对手方清算所4我2将支持多用户客户端-服务器数据库;这个中央对手方清算所4我2数据库接口的编写考虑到了这一点,应该易于移植。
表2中列出了数据库中的一些关键数据表。每个表中的每个项目都有一个自动分配的UUID(通用唯一标识符,https://pubs.opengroup.org/onlinepubs/9629399/apdxa.htm),用于与其他表中的项进行交叉引用。
主数据库表 | 代表 | 关键数据 | 用户 | 中央对手方清算所4我2个用户 | 用户名 | 项目 | 结构解决方案 | 用户ID、项目名称、目录、父项目 | 乔布斯 | 作业或子作业 | 项目ID、父作业ID、任务名称、状态、作业标题 | 文件夹 | 在项目中导入或创建的文件 | 作业ID、文件路径、注释、文件类型、子类型、文件内容 | 文件使用 | 作业的文件输入 | 文件ID,作业ID | 导入文件 | 导入到项目的文件的源 | 文件ID、源文件路径、注释 | 作业键值 | 工作的关键进度数据 | 作业ID、数据类型、数据值 | 评论 | 用户对作业的评论 | 用户ID,作业ID,文本 | 项目意见 | 用户对项目的评论 | 用户ID,项目ID,文本 | | |
每个项目都与一个用户关联,并有一个用户名和记录的项目目录。在数据库模式中,项目有一个所有者,其他用户可以拥有不同级别的访问权限。这种多用户访问在当前的SQLite实现中不可用,但在实现客户机-服务器系统时会很有用。可以将项目组织到层次结构中,为了支持此属性,每个项目可以有一个父项目。
所有作业都与项目关联,并使用任务名称、当前作业状态进行记录(例如`running或finished)和可编辑标题。带有相应子任务的管道任务将使用父作业标识符(父作业的UUID)记录在数据库中。
在项目中导入或创建的每个文件的记录都会输入到数据库中。该记录包含文件的路径、类型、任何用户注释和内容(如上所述)。每当将文件用作作业的输入时,它都会记录在“file use”表中。除了保存在数据库中的项目、作业和文件的注释外,对于许多任务,关键的进度参数,例如“构建百分比”或`R(右)系数”记录在数据库中。然后可以快速检索这些参数并将其显示在作业列表中,作为用户的快速参考。
对数据库的所有访问都是通过Python APICDbApi公司类,该类提供工具来创建、修改、删除和查询数据库中每个表中的项。还有更多用于常用功能的自定义工具,特别是用于支持图形用户界面所需的常见查询。数据库在控制作业的运行以及图形前端进程和后台进程中运行的作业之间的通信方面非常重要。当用户在界面中创建新作业时,作业将记录在数据库中,状态为“挂起”。当用户运行作业时,界面中设置的参数将写入名为输入参数.xml在相应的作业目录中,作业状态更改为“queued”。作业控制器模块,CJob控制器,轮询数据库中的排队作业,如果未达到加载限制,将通过运行运行任务脚本,使用输入参数.xml文件作为参数传递。作业状态随后更新为“正在运行”。非图形流程将在作业完成时更新数据库,并将状态记录为“完成”、“失败”或“不满意”;最后一个状态意味着尽管没有明显的失败,但任务并没有产生有用的结果。如果正在运行的作业是包含子作业的管道,则子作业及其输出文件将记录在数据库中。作业完成后,作业参数将写入参数.xml文件;这通常与输入参数.xml文件,但填充了相应的“输出数据”部分。的内容参数.xml也传递给数据库APICDbApi.收集作业文件(),扫描加载到数据库中的输出文件和作业密钥数据。这个输入参数.xml和参数.xml文件用作图形界面、脚本和数据库之间的通信,并作为备份保留在项目目录中。这个完整的作业记录机制在不需要访问数据库的单个任务的实现者的情况下工作。
图形化进程轮询数据库中的新作业和作业状态更改(由非图形化进程输入),并将在作业列表中更新这些信息,以便用户可以看到进度;他们通常还可以看到实时更新报告,但这是由不同的机制处理的。
由于结构解决过程中的每项工作都有一个输入参数.xml文件,其中记录了用于运行作业的确切参数,这些参数以及作业之间数据流的数据库记录,提供了完全重现结构解决方案所需的所有信息。
2.3. 任务应用程序编程接口
许多不同的开发人员为中央对手方清算所4我2项目,因此写一个任务很简单很重要。中央对手方清算所4我2提供了一个尽可能多地执行通用工作的框架,任务实现只需要提供必须为任务定制的功能片段。实现一个任务通常需要从四个文件的样板代码创建或裁剪。
(i) 定义文件是一个XML文件,指定任务的所有输入数据、控制参数和输出数据。 (ii)脚本是一个Python脚本,通常包装程序或编码管道。 (iii)图形用户界面(图形用户界面)是一个定义用户界面的Python脚本。 (iv)报告文件是一个Python脚本,定义作业完成后(在某些情况下,作业正在运行时)向用户显示的作业报告。
|
这个定义文件是任务接口的定义。这个定义可以使用提供的图形编辑器创建文件定义Ed。无论何时定义Ed应用程序运行时,它使用Python自省工具创建一个包含所有数据类的列表中央对手方清算所4我2,它们关联的限定符和类文档,以便向开发人员提供所有可用的选项。或者,样板代码与工具一起提供,以帮助派生新任务的代码。这个定义文件大致相当于菲尔中使用的文件菲尼克斯软件,我们正在开发菲尔-至-定义文件转换工具,简化与已经支持的软件的接口菲尔文件夹。
一项任务脚本通过子类化创建C插件脚本。创建程序包装通常需要编写三种方法。
(i)处理输入文件()在程序运行之前调用,并执行程序所需的任何输入数据转换。一个常见的需求是将用户特定的反射数据对象合并到一个MTZ文件中。 (ii)创建命令和脚本()也会在程序运行之前调用,并定义程序的命令行和任何输入脚本。 (iii)处理输出文件()在程序完成并执行任何必要的文件格式转换为中央对手方清算所4我2标准。它还必须生成程序.xml包含任务报告所需数据的文件;如果程序未提供此功能,则处理输出文件()方法应该提供逻辑来计算此类数据或从日志文件中提取它们。
|
管道任务也派生自C插件脚本,但这需要重新实现处理()方法来控制一系列“子任务”的运行。
中央对手方清算所4我2可以根据中的参数列表自动生成任务输入的图形界面定义文件,但这并不理想:自定义图形用户界面脚本可以组织参数,提供有用的注释,并提供处理相互依赖参数的逻辑,即其相关性或最优值在某种程度上取决于另一个参数的值的参数。正确处理相互依赖的参数图形用户界面脚本提供了一个动态界面,该界面根据用户选择自定义详细选项,并可以确保用户不会看到不相关的选项。中央对手方清算所4我2有一个图形小部件类来表示每个数据类,因此可以为任务界面中指定的每个参数自动插入适当的小部件。这个图形用户界面脚本使用创建线条()方法,通过它可以指定要显示在一行上的小部件和标签。
图5显示了从接口到精炼使用REFMAC公司5(穆尔舒多夫等。, 2011),其中用户可以选择“原子模型”和“反射”(代码中的参数名称:氧锌和F_SIGF公司)然后选择如何使用异常数据(USEANOMALOUSFOR公司参数)并输入波长(波长参数)。如果用户选择没有异常数据的反射数据,则最后一行将从界面中删除。此任务输入由图4中的代码编码(d日).
| 图5 的任务输入片段REFMAC公司5个任务,显示“原子模型”和“反射”数据的选择以及使用异常数据的一行详细信息。只有当用户选择了属于异常数据的反射时,才会显示此行。 |
在该代码中,接口中的四行中的每一行都由一个调用指定创建线条(); 首先指定“subtitle”,然后指定“labels”和“widgets”的组合。控件参数的数据类型已在定义文件,因此中央对手方清算所4我2框架能够提供正确的小部件。可以对小部件进行一些自定义。例如,在此代码中-浏览Db参数用于指示在小部件中绘制“数据库”图标,用户可以通过该图标访问所有项目中的所有数据。最后一次呼叫创建线条()还有一个-切换功能指定函数的自变量,异常数据可用(),这将控制第四行的可见性。在这种情况下异常数据可用()收益真的或False(错误)取决于用户选择的输入反射数据对象中可用的数据。每当F_SIGF公司由用户更改,并将返回一个标志,指示是否应根据用户选择的数据文件是否包含异常数据来显示该行。
任务输入界面被组织为选项卡,第一个选项卡包含所有基本数据选择,随后的选项卡包含较少使用的选项。
中央对手方清算所4我2提供所有已完成作业的报告。此外,对于某些任务,在作业仍在运行时会生成一个简短、频繁更新的报告。报告显示了作业的详细数据,通常以图表的形式呈现,包括强调数据重要方面的注释。报告中提供的数据来自程序.xml由运行程序或任务脚本创建的文件。该报告是一个HTML文件,创建于中央对手方清算所4我2如果用户选择查看尚未存在的报告,则按需进行图形处理。
HTML报告文件的外观由报告类。除了报告类中,每个报表元素都有一个类,例如文件夹、图形、表格、文本和图片。任务报告在与HTML报告中所需布局相对应的排列中创建这些元素的层次结构。这个报告类从程序.xml文件放入相应的报告元素中。在此类实例中完全定义报告后报告.as_html()方法被调用;它通过调用所有报表元素来返回其自身的HTML表示,从而返回完整报表的HTML文件。
task-report类可以包含作业仍在运行时显示的“正在运行”报告的定义;通常,这将是一个非常简短的报告,例如一个简单的图表。这个中央对手方清算所4我2图形化进程在看到程序.xml程序创建的文件已更新。
为开发的图形查看器中央对手方清算所4我2的情况下,粉刺和JSPimple公司,在报告页面中显示图形,或者可以显示日志文件中的图形。JSImple公司用于中央对手方清算所4我2个HTML报告页面,并使用jquery.flot以JavaScript编写(https://www.flotcharts.org/)或Plotly(网址:https://plot.ly)后端。粉刺是一个独立的应用程序,具有附加的图形编辑、导出和打印功能,使用PyQt和库Matplotlib构建(用于图形;https://matplotlib.org网站)和NumPy(用于数值计算;https://www.numpy.org).
2.3.1. 插入式兼容性中央对手方清算所4在线报告
中央对手方清算所4在线(https://www.ccp4.ac.uk/ccp4在线)提供了对不断增长的列表的web服务器访问中央对手方清算所4个程序,如曲柄2的情况下,国际学生成绩评估和BUMP先生.J视图(https://www.ccp4.ac.uk/dist/checkout/jsrview网站)是一个函数调用驱动的服务器端中央对手方清算所4提供报告机制的框架中央对手方清算所4在线。为了方便开发人员J视图和中央对手方清算所4我已包含2份报告。模块,CCP4Rvapi分析器,通过继承标准提供了一个类报告类,提供所有基本中央对手方清算所4我2报告功能,同时在检测到单独XML文件上的更改时自动执行转换(i2.xml). 此文件由J视图每次更新报告时,都应包括报告严格要求的所有图形数据点、演示细节(例如线条颜色和厚度)和随附文本(图6).
| 图6 图形元素之间的对应关系中央对手方清算所4在线(一)和中央对手方清算所4我2 (b条)报告。尽管底层数据严格相同,但会对其施加不同的布局J视图出于一致性的原因进行报告。不同的进程(1)被展开为各个选项卡,每个图形都可以从主图形(2)的标题栏中选择。其他图形元素包括阴影区域(3),阴影区域作为单独的实体呈现,而不是作为附加曲线呈现,以及附带的文本(4)。就像他们的情况一样J视图相应的,这些报告实时无缝更新。 |
3.用户界面实用程序
3.1. 项目进出口
此实用程序使用户能够在计算机之间传输项目或选定作业。这些工具还用于自动传输在服务器上运行作业所需的有限数据量(见下文)。基本机制还可以支持向电子笔记本系统或从电子笔记本系统传输信息,尽管创建用户友好的自动通信机制需要一些特定于软件的功能。
可以将整个项目或选定作业的数据库内容写入XML文件。要导出项目,项目目录的内容(例如数据文件)与相应数据库条目的XML表示一起绑定到压缩存档文件中。由于项目目录是由一个作业目录中的一个作业的文件组织的,因此只选择相关的作业目录进行导出是很简单的。压缩文件可以重新导入到另一个中央对手方清算所4我2数据库;这是通过仔细检查数据库和未打包项目目录之间的一致性来执行的,并使用数据库数据项UUID来确保数据既不会重复,也不会被不适当地覆盖。
3.2. 在服务器上运行作业
中央对手方清算所4我2提供了在服务器上运行需要大量计算资源的作业的机制。服务器计算机必须具有适当版本的中央对手方清算所已安装4个套件。客户中央对手方清算所4我2必须由系统管理员或知识渊博的用户配置,以选择服务器机器、通信机制、中央对手方清算所4安装目录和服务器上的临时文件系统空间。配置后,如果提供了多个服务器,用户只需选择一个服务器,并根据通信机制提供登录名和密码以在服务器上运行作业。
中央对手方清算所4我2目前支持三种可能的通信机制:
对于所有这三种机制,项目的一个片段都会如上所述导出,并复制到服务器上,然后在服务器上将其解压缩到临时项目目录和数据库中。在服务器上运行作业会更新临时项目目录和数据库的内容,当作业完成时,这些内容将导出到一个压缩文件中,该文件将返回到客户端计算机,并重新集成到用户的项目目录和数据库中。此机制要求客户端和服务器之间的通信最少,但用户可以通过更新“正在运行”的报告来了解进度,该报告由客户端定期检索程序.xml来自服务器的数据文件。
3.3. 组织和搜索工作和项目
鉴于大多数晶体学家承担了大量的结构解析项目,项目和数据的组织至关重要。这个中央对手方清算所4我2用户界面为晶体学家提供了多种方式来组织他们的工作,并标记和注释他们的文件、作业和项目。这些附加信息可能有助于将来审查工作。
中的“项目管理器”窗口中央对手方清算所4我2提供了用于组织和导出或导入项目的工具。最有用的组织工具是可以将项目分组到文件夹中,并且可以嵌套文件夹。此外,还提供了标记和提供项目描述的选项。有基于项目名称、描述、标记或项目使用日期的项目搜索工具。还可以搜索使用了用户特定文件的项目。
中央对手方清算所4我2具有工具,可以根据简单属性(例如任务名称、批注或注释中的文本以及作业运行的时间)搜索项目中的作业。还有更复杂的搜索,可以查找使用特定控制参数的给定值运行的作业,并显示给定数据对象在项目中的进度。对于后一种搜索,用户可以为给定作业选择任何数据对象、输入或输出,并且在所选作业之前或之后使用这些数据的所有作业都将在作业列表中突出显示。对于某些类型的数据,特别是模型坐标,数据值将在许多作业中更新,以便输出数据对象(即数据文件)与输入数据对象不同,但搜索过程可以跟踪这些更改。例如,数据对象的使用可能会产生分支,以生成几个可能的“最终”模型坐标。该界面允许用户突出显示选定分支中的作业或所有分支中的任务。
3.4. 查看旧的中央对手方清算所4我项目
两者之间的重要概念差异中央对手方清算所4我和中央对手方清算所4我2使两个接口无法互换使用:例如,中央对手方清算所4我允许重新运行作业,从而覆盖文件,因此在旧系统中跟踪文件来源是不可靠的。然而,已经实现了一种机制来查看旧的中央对手方清算所4我项目,并选择和导入文件。
中央对手方清算所4我2可以从中央对手方清算所4我用户界面,并以新界面的作业列表的样式显示项目、作业和文件。用户可以查看日志文件和数据文件,并可以从以下位置拖放作业列表中列出的文件中央对手方清算所4我项目转换为中的作业中央对手方清算所4我2个项目。
4.任务
中央对手方清算所4我2为由中央对手方清算所4套房。使用这些程序的任务被组织成任务列表中的各个部分(图7). 任务列表用于引导用户完成解决晶体结构,从数据处理开始,到沉积结束。任务列表每个部分中的主要任务如下所述。
| 图7 打开带有“X射线数据还原和分析”模块文件夹的任务菜单,显示该模块中的任务。 |
4.1. 集成X射线图像:夏2
专家系统夏2(冬季等。, 2013)提供从衍射图像到缩放和合并数据的全自动数据处理。作为决策管道,它使用其他软件执行离散任务,如索引、集成和缩放。在每个阶段评估结果的质量,以动态的方式通知决策。该软件现在的功能是,即使在具有挑战性的情况下,它也可以代替专业的晶体学家。当驱动没有自己内置图形界面的命令行程序时,它特别有用,而且对许多用户来说,操作起来可能会令人生畏或乏味。尽管夏2本身主要是一个命令行程序,它使用菲尔的语法cctbx公司(https://cctbx.sourceforge.net/libtbx_phil.html). 这个界面非常丰富,足以描述GUI的基本组件,包括参数类型、工具提示、帮助字符串和专家级别。可以映射菲尔接口到定义文件。因此夏中的2个接口中央对手方清算所4我2与大多数其他接口的不同之处在于我们选择不使用定义Ed或者使用样板代码模板来设计GUI,但我们可以从菲尔定义。将来,这可能是为其他用户创建GUI的一种方便机制cctbx公司-基于软件。
有两个接口用于夏2自动处理中央对手方清算所4我2,一个特定于刻度盘套装(冬季等。, 2018),包含在中央对手方清算所4,另一个用于XDS公司(Kabsch,2010年),如果用户已安装。两个界面之间共享了大量代码,为了用户的方便,将其拆分为单独的任务。许多可选参数特定于刻度盘或XDS公司并且在每个任务中可以隐藏不相关的参数。无论哪种情况,夏2个用途中央对手方清算所4个软件用于计算合并统计信息,允许夏重复使用数据还原任务报告代码的2个任务,确保与下面描述的数据还原管道一致。
中央对手方清算所4我2还集成了iMosflm公司GUI到MOSFLM公司(鲍威尔等。, 2017)并将此GUI的活动记录在中央对手方清算所4我2数据库。
4.3. 实验阶段:曲柄2和SHELXC公司/D类/E类管道
曲柄2(斯科巴克和潘努,2013年)和SHELXC公司/D类/E类(谢尔德里克,2010年)是来自SAD、MAD或SIRAS实验数据的自动化结构解决方案管道。这个SHELXC公司/D类/E类管道实现为曲柄2,呼叫SHELXC公司,SHELXD公司和SHELXE公司(谢尔德里克,2010年)然后是海盗和REFMAC公司5通过程序包装器。这样,大多数中央对手方清算所4我2代码用于曲柄2和SHELX公司管道是共享的,因此为用户提供相同的输入和输出。这个曲柄2接口还支持MR-SAD实验–(重新)构建输入部分模型,通常由分子置换–使用SAD数据和强大的“组合”算法(Skubák&Pannu,2013)).曲柄2具有多种程序的包装器,包括SHELXC公司,SHELXD公司,SHELXE公司,普拉萨(斯科巴克,2018年),鹦鹉(Cowtan,2010年),所罗门群岛(Abrahams和Leslie,1996年),ARP协议/弯曲(兰格等。, 2008),海盗(Cowtan,2006年)和REFMAC公司5(穆尔舒多夫等。, 2011).
管道由几个步骤组成:从异常的确定下部结构,通过阶段划分、手动确定和阶段改进来建立模型。每个步骤都作为单独的中央对手方清算所4我2包装器,因此可以克隆任何步骤并使用修改的参数重新运行它。此外,可以自定义管道以在任何步骤启动和停止:例如,可以从以下位置启动管道下部结构通过输入已知的下部结构,或可以在下部结构已确定。A类中央对手方清算所4我2运行报告指示每个步骤的进度,对于许多步骤,如果用户发现当前性能令人满意,则会提供一个按钮,用于在当前周期结束时停止并继续下一步(例如,如果用户认为下部结构已充分确定)。
所需的最小用户输入包括异常数据集(或MAD或SIRAS实验中的多个数据集)、序列描述和异常重原子类型。部分模型(通常来自MR)需要输入MR-SAD。虽然强制输入对于许多数据集来说已经足够了,但还提供了其他选项来处理难以求解的数据集或优化结构求解过程。所有选项的默认值都依赖于输入,并在提供最小用户输入后立即动态生成并显示在图形用户界面中。自从GUI调用曲柄为了生成默认值,防止了接口和底层程序默认值重复的典型问题。
也有使用的阶段划分接口相位器并使用橡子和鹦鹉.
4.5. 分子替换
中央对手方清算所4我2使用BUMP先生管道,MOLREP公司(Vagin&Teplyakov,2010年)和相位器。有两个版本的相位-MR界面:单个搜索模型的基本模式,更复杂模型和晶体合成的专家模式,提供了访问更高级关键字选项的途径。
4.6.精炼: REFMAC公司5
这个精炼流水线是执行模型的主要任务精炼使用REFMAC公司5(穆尔舒多夫等。, 2011),可选择使用来自智能项目(尼科尔斯等。, 2014). 模型坐标、反射数据和(通常)自由-R(右)设置作为主要输入。可选的附加输入包括实验相位信息、TLS系数、配体字典和参考模型。TLS系数,用于描述刚体的协同螺旋运动(Winn等。, 2003),可以使用“优化”菜单中的相应实用程序导入和/或编辑。可以使用“配体”菜单中的“生成配体”任务生成定制配体词典(CIF文件)。如果提供了参考同源模型,则专业智能将由管道执行以生成外部约束。然后,这些约束装置将由REFMAC公司5期间精细化:此选项可能适用于较低的分辨率(Nicholls等。, 2012).
主要精炼选项包括循环次数、几何重量、晶体是否被认为是孪晶以及是否要生成和使用骑H原子。默认情况下,几何体权重在精炼为了确保先验信息(几何)和观测数据之间的合理平衡。如果孪生假设,精炼根据主要输入数据的性质,可以针对结构因子振幅或强度执行。与模型参数化相关的其他选项(B类因子、TLS组)、先验信息(NCS约束、凝胶体约束)和缩放方法(溶剂模型)。还提供了在计算电子密度图时执行各向异性正则化图锐化的能力,注意该选项不影响精炼模型:它只是修改输出映射。
与中的等效任务相比中央对手方清算所4我,的精炼接口在中央对手方清算所4我2是相对最低限度的,以避免向用户呈现过多的模式和选项。界面中只显示标准用户最常需要的选项,但可以提供其他关键字,以便专家用户根据需要调整高级选项和参数。请注意,该管道是专为全型号设计的有节制的精致。为了便于应用REFMAC公司5(无约束精细化,刚性体精炼和结构理想化)被排除在界面之外,因为在现代晶体学结构求解过程中超出了范围,并且被认为不太实用。还要注意的是,虽然以前刚体很常见精炼之后立即执行分子替换,现在更典型的是执行大量的凝胶体约束精炼循环。
当作业正在运行时,会迭代更新结果页面,以便向用户提供有关的当前状态的反馈精细化。全球的细化统计,当前几何权重和对应于循环演化的图R(右)系数和r.m.s.(债券)分别更新精炼周期,加快有关工作质量的手动评估(监控精炼收敛,过度拟合等。),在次优结果的情况下,这可能会导致用户终止作业,使用不同的参数值或选项克隆并重新运行它。成功执行的作业可以立即执行精炼使用精炼管道,手动建模使用库特或使用海盗.
4.7. 模型构建和图形
为手动和自动模型构建提供了任务。自动模型构建在实验阶段管线中实现(尤其是曲柄2和SHELX公司任务)和独立的建模任务。使用海盗或ARP协议/弯曲软件(Cowtan,2006; 兰格等。, 2008).
4.7.1. 手动建模库特
这个库特任务启动库特分子颗粒学计划(埃姆斯利等。, 2010)使用来自中央对手方清算所4我2项目。任务输入允许将任意数量的坐标集、密度和差异密度图加载到库特会话。此外,还可以指定配体字典。中央对手方清算所4我2还可以生成脚本来自动执行库特会话,这样的脚本可以通过这个任务接口加载。在中央对手方清算所4我2库特会话,菜单库特修改以允许将坐标集保存到中央对手方清算所4我2数据库,这些坐标可供后续用户使用中央对手方清算所4我当库特会话已退出。类似地,使用工具生成的配体词典库特当库特会话结束,并可用于后续作业。
还有一个中央对手方清算所4我2扩展菜单允许用户访问用户数据库中已知的所有坐标、地图和字典数据对象,允许快速比较不同阶段的地图和模型精炼程序。库特从启动中央对手方清算所4我2自动包括各种密钥绑定,这些绑定是为了方便地“一键”访问库特在手动建模期间。
4.7.2. 脚本化模型构建库特
在此任务中库特在未打开的情况下运行库特图形用户界面。A类库特脚本文件是定义以下操作所必需的库特将执行。模型、地图和字典输入与“手册”中的相同库特'任务,但提供了更多选项中央对手方清算所4我2(填充部分残留物,适合蛋白质,阶梯式精炼无论是否有Ramachandran约束和迭代变形拟合),都可以选择手动输入脚本。
还有一个单独的任务“查找水域”,它需要一个地图和一个模型并运行库特在无窗口模式下查找水分子。
4.7.3. 自建蛋白
此工具取代海盗管道输入中央对手方清算所4我,引入了脚本化使用提供的一系列新可能性库特。它由以下迭代组成海盗(Cowtan,2006年),库特和REFMAC公司5,可选使用智能项目.主要输入因所用阶段的来源而异。如果这些是在MR作业中生成的,则必须提供MR解决方案,以便海盗利用它:放置新模型并在其后面命名链,还可以从完整的MR解决方案或其编辑版本(称为种子模式)导出第一组坐标。如果没有提供相位估计值,MR解决方案将在REFMAC公司为了生产它们。如果初始阶段来自实验方法,则必须明确提供,在这种情况下,用户可以选择指定模型R(右)-在迭代建模和阶段组合中不再使用低于实验阶段的因子阈值。
由于它们非常依赖于地图的可解释性精炼选项仅在R(右)系数低于某个阈值:这也是可配置的,尽管默认情况下提供了0.35的合理估计值。默认情况下,在库特轮。
除第一次迭代外,映射系数和由REFMAC公司上一个迭代中的5作为输入提供给海盗然后对输入模型进行过滤(删除不合适的区域)、扩展和再次细化,大多数问题在~5次迭代(MR阶段)或~15次迭代(实验阶段)中收敛。
这个中央对手方清算所4毫克任务启动中央对手方清算所4毫克分子颗粒学计划(麦克·尼古拉斯等。, 2011)使用来自中央对手方清算所4我2项目。任务输入允许将任意数量的坐标集、密度和差异密度图以及序列加载到中央对手方清算所4毫克会话。
4.8. 配体
为了细化含有新型配体的结构,晶体学家需要配体的临时起始坐标和几何字典。这些可以在中创建中央对手方清算所4我2使用AceDRG公司(长等。, 2017)通过“制作配体”任务。该任务还允许使用由利迪娅程序(的一部分库特; 埃姆斯利等。, 2010).
为了说明晶体功能阵列的威力中央对手方清算所4我如上所述,我们还开发了一个配体管道,该管道跨越了从数据简化到配体构建和自动配体放置的整个工作流程,以满足研究片段和/或药物结合到特征良好的配体的情况晶体系统。配体管道嵌入(i)“生成配体”任务,(ii)数据还原管道,(iii)刚体精炼在内部相位器和(iv)非图形脚本运行库特进行实际配体拟合。作为内部刚性体配件的替代方案相位器,用户可以选择使用酒窝管道(沃迪尔等。, 2013)作为刚性车身改进的发动机。
为了便于在一次同步加速器跳闸中收集的数十个数据集上使用这个配体管道,我们还开发了一个元任务,(i)调查钻石光源同步加速器跳闸返回的文件的目录层次,(ii)生成一个中央对手方清算所4我2个项目用于识别的每个数据集,(iii)使用用户特定的SMILES字符串启动每个项目中的配体管道,以定义与每个数据集关联的配体和通用启动模型。
综上所述,这些工具允许用户在单个任务中对数十个数据集统一应用最优秀的工具,对于这些数据集,总设置时间可能只有几分钟。在多处理环境中,综合分析可以在不到一个小时的时间内完成。这种方法的输出也可以提供给PanDDA公司(柯林斯等。, 2017)确定低入住率约束事件。
4.9. 验证和分析
4.9.2. 分析模型和密度之间的拟合
密度相关性工具EDSTATS公司(Tickle,2012年)以完全不同的方式捆绑在一起中央对手方清算所4我:不是为程序生成一个全面的前端,而是开发了一个涵盖数据转换和分析的管道,使结果分析更加直观。
作为贴图系数(F类,φ)是内地图的首选表示形式中央对手方清算所4我2,而EDSTATS公司需要过采样的地图文件,预处理步骤使用CFFT公司已添加。这将以所需格式生成对用户透明的地图文件。此外,在界面中,可以为不同的准确度和精密度指标设置一组可配置的阈值,由蛋白质主链和侧链分开。使用这些标准找到的异常值列在Python脚本中,该脚本可用于后续库特作业,使用户可以快速跟踪和修复它们。通常可以通过翻转肽来改进孤立的主链异常值,而修复侧链异常值可能需要使用旋转体搜索。