跳到主要内容

化学开发工具包(CDK)2.0版:原子分型、描述、分子公式和子结构搜索

勘误表本文发表于2017年9月20日

这篇文章已经已更新

摘要

背景

化学开发工具包(CDK)是一个广泛使用的开源化学信息学工具包,它提供了表示化学概念的数据结构,以及操作这些结构并对其进行计算的方法。该库实现了多种化学信息学算法,从化学结构规范化到分子描述符计算和药效团感知。它用于药物发现、代谢组学和毒理学。然而,在过去10年中,代码库显著增长,导致组件之间存在许多复杂的相互依赖关系,并且许多算法的性能较差。

结果

我们报告了自1.2版系列发布以来CDK 2.0版的改进,特别是解决了功能复杂性增加和性能不佳的问题。我们首先总结了新功能的添加,如原子类型和分子公式处理,以及对现有功能的改进,这些改进大大提高了子结构搜索、分子指纹和分子渲染的性能。其次,我们概述了CDK在质量控制方面是如何发展的,以及我们为确保稳定性所采用的方法,包括代码审查机制。

结论

本文强调了我们为提供社区驱动的开源化学信息库所做的持续努力,并表明此类合作项目可以在较长时间内蓬勃发展,从而形成一个高质量、高性能的库。通过利用社区支持和贡献,我们表明开源化学信息学项目可以作为科学计算软件的同行评审发布平台。

CDK 2.0提供了新功能和改进的性能

背景

开源化学信息学社区最近取得了重大进展[1]越来越多的工具和底层工具包以及这些软件组件在各种应用程序中的使用证明了这一点。化学开发工具包(CDK)是在蓝色方尖碑(Blue Obelisk)的支持下开发的工具之一,该运动旨在促进化学领域的开放数据、开放源代码和开放标准[1,2]. CDK提供数据结构来表示化学概念,以及操作此类结构并对其进行计算的方法。以前记录的CDK版本已被广泛采用[,4]. CDK的使用范围包括包装器平台(如Cinfony)中的CDK功能[5],纳入R环境(rcdk[6]),作为Taverna的插件[7],克里姆[8]、细胞景观(ChemViz2[9]),对于Microsoft Excel(LICSS[10]). 与使CDK功能在大型系统中可用的场景相比,许多项目将CDK用作通用化学信息学工具包。示例包括jCompoundMapper[11],脚手架猎人[12,13],OMG公司[14],帕德尔[15]、化学设计[16],反应预测[17],平方毫米[18,19,20]、WhichCyp[21],MetaPrint2D[22],MetFrag公司[23]和IUPHAR/BPS药理学指南[24],布伦达[25]和QSAR数据库[26]数据库。许多这样的工具最初是使用CDK的旧版本开发的,并在新版本可用时进行更新。例如Bioclipse[27,28]和AMBIT[29,30,31]. CDK还在许多化学研究中发挥了作用,例如在化学结构中发现最大桥接环[32],有机反应预测[33]和化合物的生物活性[34].

虽然CDK据称是一个通用化学信息学工具包,但旧版本是由社区设计的,考虑到具体应用,其中主要是结构说明。此外,以前版本的一个隐含目标是将CDK用作教育资源,使化学信息学的学生能够理解底层算法。这导致了某些功能,例如分子指纹[35,36],受到更多关注,例如立体化学。结果是整个工具包的性能和特性都有显著差异。

开源软件在过去10年中的增长证明了开发人员社区开发系统和过程的能力,这些系统和过程可以带来长期使用的高质量软件系统。CDK也不例外。采用自动构建系统和质量控制方法,如单元测试、自动源代码验证和同行评审,极大地提高了库的稳定性。虽然它在一定程度上减缓了开发速度,但它允许清理功能模块之间的相互依赖性,而且重要的是,它改进了开发模型的可伸缩性。这在核心应用程序编程接口(API)中产生了重要的新功能,同时根据这些核心API保持代码质量。

改进开发模型支持的新功能示例包括InChI功能[37],大大改进了环检测算法[38],改进了核心原子类型感知模块,与以前的版本相比,该模块现在涵盖了更全面的元素、电荷态和自由基物种集合,更全面的指纹API,新的描述功能,以及许多速度和稳定性改进。

实施和结果

本节描述了新API的细节以及对最新CDK中现有方法的改进。然后,我们讨论了我们如何使用单元测试、代码审查和处理版本控制的指南来改进和规范化项目的开发模型。最后,我们报告了库的二进制发行版的可用性,允许用户在自己的项目中包含CDK的特定模块(及其依赖项)(而不是使用CDK库本身的开发人员)。

新的API和改进的实施

我们在此概述了自2003年和2006年前两次发布以来CDK库中的各种新的和改进的API[,4].

Atom键入

原子类型感知是化学信息学的核心功能:原子类型描述原子的化学特征,例如相邻原子的数量、可能的形式电荷、(近似)杂化、电子在轨道上的分布等。然而,以前版本的CDK将原子类型感知作为不同算法的一部分实现,导致重复的、有时是发散的打字方案。因此,以一致的方式添加新的原子类型并实现对新的带电和自由基物种的支持是很麻烦的。

这个CDK版本有一个新的集中式原子类型框架,消除了各种算法对原子类型的感知。这允许使用一致且广泛的类型方案,也可以独立于其他代码进行测试。新代码使用一个列表来定义原子类型,该列表指定了每种类型的元素符号、杂化、形式电荷、孤对数和键序枚举(参见图1). 此属性列表捕获CDK中各种算法所需的信息。例如,杂化信息可用于某些芳香度模型(见下文),而孤对信息则需要用于所需的共振结构计算,例如Gasteiger\(\pi\)-收费。

图1
图1

为指定的Atom类型信息\(第3页)-杂化碳

参考实施,CDKAtomType匹配器的编写方式可以感知这些原子类型,并根据本体定义的属性自动验证感知。这个类处理各种类型的丢失信息,这些信息通常是由各种(文件)格式造成的;例如,如果提供杂交信息,它可以处理未定义的氢数和未定义的双键位置。这使得感知代码更加灵活,但也更加复杂。尚未探索原子类型的替代算法。此参考实现可用于单个原子:

图b

在全分子上,类型列表的顺序与分子对象中原子的顺序相同:

图c

立体化学

以前版本的API以不同的方式表示立体化学。这阻碍了文件格式之间和内部的相互转换。CDK 2.0版根据新的核心表示进行标准化,并更新或添加了程序,以实现重复检查、模式匹配和相互转换。

立体化学的首选代表是将其作为立体元素抽象地说,立体元素使用类型、焦点、载体和配置描述局部几何(图。2). 目前支持最常见的立体化学类型:四面体、围绕双键的顺反异构体和扩展四面体。考虑到社区的充分需求,可以很容易地将较少见的立体化学类型,例如:方形平面、三角双锥、八面体,纳入所选描述中。

图2
图2

立体化学的相对存储、立体化学的类型和焦点对于给定的立体中心描述是固定的,但载体和构型是相对的。每种立体化学类型的多行是不同的内部表示,被认为是等效的。在四面体类型中,氢可能在分子图中被抑制,因此焦点在载体列表中被重新用作占位符

除了新的立体化学表示法外,在几个领域还需要算法。通常,用户不需要显式调用这些过程,因为它们是在现有API中根据需要调用的:

  • 从2D坐标感知,

  • 从3D坐标感知,

  • 楔块分配,

  • 图(子)同构匹配,

  • SMARTS匹配,以及

  • 规范化。

坐标感知和楔形分配算法是基于坐标隐式存储立体化学的格式之间转换的基础(例如molfile、,脚注1CML)和显式(例如SMILES、CML、InChI)。从二维坐标的感知可以选择性地识别透视投影,特别是:菲舍尔投影、霍沃斯投影和椅子投影。启用透视投影感知后,可以合并当前被视为不同的数据库条目(图).

图3
图3

显示CHEMBL23970和CHEMBL444314的原始输入文件(ChEMBL 21)。在没有察觉到CHEMBL23970中Haworth投影所指示的立体化学的情况下,数据库条目被错误地认为是不同的。下游聚合数据库反映了这种分离(PubChem CID 5280、CID 65119)

立体化学与所述表示的模式匹配是直接的。给定从查询结构到目标分子的原子-原子映射,查询立体化学的焦点和载体映射到目标。使用此映射的置换奇偶性比较配置。SMARTS匹配需要对复杂情况进行一些特殊处理[39]. 对于规范化,使用部分规范化排序来指定一个绝对标签,然后可以将其集成到排序中。立体化学使用的算法在[40]. 投影的感知基于以下简要描述的算法[41].

原子和分子特征

提供了分子签名结构描述符的实现[42]. 对于整个分子以及根在单个原子上的连接子结构,它们起到了类似SMILES格式的线性表示法的作用。描述符也可以规范化,以提供同构依赖表示[43]. 可以使用以下公式计算原子深度2的特征:

图d

但也可以计算全分子:

图e

最后,可以计算分子的签名指纹,以便进行相似性计算。然后可以在QSAR建模中使用[34,44,45,46,47,48,49].

渲染API

引入了一个新的渲染API,使渲染代码独立于Java小部件工具包。前面的代码与Swing工具包紧密相连,但其他工具使用不同的小部件工具包。例如,Bioclipse基于Eclipse,它使用标准小工具工具包(SWT)[27].

引入了第二个新的设计目标,以平衡某些用例(如Java小程序)的大小限制和渲染功能。特别是,一些功能,即使在模块化之后,也需要CDK库中相当多的部分,这使得创建小型小程序变得不可行。因此,渲染API被模块化,以允许将渲染功能拆分为具有不同CDK依赖性的模块。

渲染分为几个生成步骤:以前的版本将键从原子渲染中分离出来。使用白色矩形遮罩,在表示键的线条上简单绘制出异原子符号。一个新的标准发电机介绍了同时进行键和原子渲染的。它包含了亚历克斯·克拉克描述的许多想法[50,51]. 生成的描述质量更高,适合出版。

此外,还引入了一个简化的高级API,通过DepictionGenerator类解决了大多数常见的渲染需求。要描述加载到可变“苯”中的分子,可以使用以下代码:

图f

许多渲染选项都可以作为核心API中的参数和DepictionGenerator类中的方法使用。这包括子结构着色,如图所示的示例反应所示4。丢失时,使用新的结构图布局功能动态生成二维坐标。

图4
图4

显示渲染和SMILES解析功能的集成示例。来自美国专利US 2014 231770 A1第287段的示例

结构图布局

结构图布局得到了改进,新代码解决了一些长期存在的问题。特别是,碰撞避免功能得到了极大的改进。5显示了旧代码库(有重叠解析和无重叠解析)与新的基于细化的实现之间的输出差异[52]. 二维坐标的生成如下所示:

图5
图5

改进的结构图生成改进了代码以解决重叠问题。原始SDG代码使用了一般启发式(左边)OverlapResolver会微调布局,以确保原子不会被放置在同一位置(中间的). 新的SDG算法能够进行更严格的更改,使最终输出更加令人满意(正确的)

图g

虽然API本身没有发生重大变化,但内部结构已经进行了改进。除了上述改进的重叠分辨率外,该引擎还可以适当处理大环系统,保持输入立体化学,并使用大型模板库。模板用于布置子结构。虽然以前的CDK版本部分支持双键立体化学,但新引擎在生成2D布局时更有效地使用此信息。此外,引擎基于四面体立体化学分配楔形键信息。以下代码和图中的布局描述例证了这些功能6:

图6
图6

双键和四面体立体化学结构的结构图生成

图h

分子式

化学式是化合物最简单的化学表示。它定义了组成化合物的同位素或元素的数量,但没有描述原子是如何结合的。随着代谢组学的兴起,在化学信息学库中充分支持代谢组学变得越来越重要[23,53,54,55,56].

CDK接口可以处理与化学公式相关的几个概念:公式本身、公式集、化学公式范围、加合物、同位素容器和模式,以及过滤公式集的规则。这些新工具可用于许多任务,包括根据给定的化学公式计算同位素模式,确定给定质量(质量分解)的可能元素组成,以及根据给定的化学品公式计算精确质量。

CDK包含两种算法,用于将质量范围分解为可能的元素公式。对于大多数输入,最初为SIRIUS代谢物识别工具开发的循环算法[57]使用。该算法将实值质量分解问题离散化为积分背包问题[58]. 它首先计算动态编程表,然后在其中回溯以生成匹配公式[59,60]. 循环算法的数据存储在扩展的剩余表中[61],导致数千字节的低内存占用。对于某些问题实例,例如非常大的质量值(超过400000 Da)或质量范围跨度大于1 Da,循环算法不适用,CDK退回到优化的完全枚举搜索方法,最初是作为质谱数据处理MZmine 2框架的一部分开发的[54,55].

以下代码在每个元素的允许计数范围内,计算给定准确质量的所有可能的化学公式:

图一

这将提供以下输出:

图j

为了评估CDK分子公式生成器的性能,我们将其运行时与基于完整枚举的经典HR2公式生成器的运行时进行了比较[62]以及最近开发的并行公式生成器(PFG)[63](表1). 作为输入,我们使用了从全球天然产品社交分子网络数据库下载的两组10000小(<500Da)和20大(>1500和<3500Da)分子质量值[64]. 质量容差设置为0.001或0.01 Da。CDK v2.0的Round-Robin公式生成器在所有情况下都优于其他方法,尽管它是在单线程中运行的(PFG使用多线程)。当查询窄质量范围(例如±0.001 Da)时,循环算法的性能增益特别明显,因此表明其适用于高分辨率质谱分析。

表1分子式生成器的评估

SMILES解析器和生成器

微笑[65]解析已被来自外部Beam项目的代码取代[66]. 这个BSD许可的SMILES解析器是SMILES和OpenSMILES的完整实现(http://opensmiles.org/)规范(包括立体化学),并独立于CDK库。SmilesParser API在下面使用这个库,Beam API被这个类隐藏。基本用法如下:

图k

这里最重要的功能变化是SMILES解析器自动定位去定标芳香体系(Kekulisation)中双键的位置。如果无法满足此不变量,则SMILES将被拒绝为无效。可以忽略此检查,但强烈建议不要这样做,因为被拒绝的分子没有固定的分子式或互变异构体[40].

SMILES生成API也经过了简化,变得更加灵活,能够产生多种不同的味道。这个SmiFlavor公司标志用于控制生成的SMILES的类型。历史上,通用、异构、唯一、绝对等术语已在其他工具包中使用,也受到支持。

图1

支持ChemAxon Extended SMILES(CXSMILES)[67]层已添加到CDK v2.0。CXSMILES提供了在SMILES字符串中包含辅助信息的强大方法,例如2D/3D坐标、原子值、通用标签、重复单位和位置变化。CXSMILES通过在管道字符(“|')。信息是根据SMILES字符串中原子的顺序进行注释的。下面显示了通用结构的CXSMILES示例。

图m

子结构和SMARTS匹配

子结构匹配是基本的化学信息学操作,在许多其他功能中起着关键作用,例如指纹和描述符生成,以及原子分型。自CDK v1.2以来,添加了处理SMARTS查询语言的功能。SMARTS语言支持良好,包括立体化学、组分分组和原子图(用于匹配反应变换)等功能。一个新的图案CDK v2.0中添加了API,简化了搜索结果的查找、筛选和转换。API是不可变的,允许模式初始化一次,然后与多个线程中的几个分子或反应进行匹配。在初始化过程中,将检查模式,以确定需要哪些不变量(例如,环大小),并且只计算所需的不变量。内部匹配算法提供了一个惰性迭代器,以便只在需要时计算下一个匹配。除了分子外,API还处理反应,两者都可以指定为查询或目标。

图n

CDK v2.0大大提高了算法效率。MACCS-like 166密钥生成的系统基准强调了这一点(表5). 效率的提高是在运行SMARTS匹配之前所需的优化数据结构和关键分子处理算法(例如kekulisation和芳香性)的结合[40,68,69].

戒指查找

环查找是化学信息库中的另一项关键功能,CDK了解环查找的悠久历史[38,70]. 具体来说,非冗余环集已经引起了人们的特别关注,例如最小环的最小集,CDK为其实现了两个经典算法[70,71]. 最近的工作实现了一种新的、更快的算法,允许搜索各种类型的(非冗余)环集[38]. 这些可通过新的Cycles API获得:

图o

芳香性

芳香性在过去有很多定义,对于化学信息学,芳香性通常是通过算法定义的。芳香度计算的结果取决于许多原子类型特征和启发法,这些特征和启发在已发表的文献中往往定义不明确。根据所使用的信息,可以定义芳香度的几种不同算法定义。较旧的CDK版本实现了各种芳香度模型,但代码分散在整个库中,导致计算芳香度的API不一致,并带来了巨大的维护负担。API在当前版本中得到了统一,产生了三个模型,其中两个模型基于CDK原子类型。这两个模型的区别在于如何处理外环双键的贡献。

当前的CDK版本进一步概括了芳香性是一种模型的思想,并提供了一个API,允许用户从几个芳香性模型中选择一个,从而提高了与其他工具包的互操作性。新的芳香性类允许通过选择和组合选项来构建自定义模型。例如,为了重现前一个CDK色度类别:

图p

这里,使用了用于计数捐赠电子的CDK模型,以及之前版本中由旧算法识别的环系统,该算法在考虑的熔环系统数量上受到了限制。然而,考虑到所有可能的环系统的替代芳香度计算器现在可以很容易地创建:

图q

对于SMARTS匹配和SMILES生成,基于日光的模型[72]可以使用,并且与基于CDK Atom类型的方法相比,速度有了显著提高。该模型最近被记录为OpenSMILES规范的一部分(http://opensmiles.org/):

图r

芳香度算法是直接的,每个原子的潜在电子贡献计算如下\(-1\)(非芳香族),0,1,2。然后生成构造函数中提供的循环集,并检查每个循环是否符合Hückel规则(\(4n+2\)).

CT文件格式改进

molfile格式仍然非常流行,尽管它是一种专有格式,但它已成为事实上的标准。该格式构成了最初由MDL信息系统开发的更大的CTfile系列的核心[73]. 当前的格式规范由BIOVIA发布,可根据要求提供[74].

molfile的CTAB块(连接表)有两个版本,V2000和V3000。V3000提供了一些增强功能,包括但不限于:消除原子和键计数限制、增强的立体化学和连接节点。为了向后兼容,通常首选V2000,这导致V3000的使用受到限制。

CDK v2.0增加了对V3000的支持,并优化和扩展了对V2000的支持。目前,这些被视为单独的格式,要求用户事先知道正在阅读的版本。未来的API将致力于简化这一点,并提供统一的阅读器。表中给出了当前支持的CT文件格式的概述2.

表2 CT文件格式支持

CTfile S组捕获并组织关于原子和键组的高级信息[75]. Sgroup有四种类型:显示剪贴画、聚合物、混合物和数据。从终端用户的角度来看,最常见的S组是结构重复单元(例如括号)和缩写(图。8). CDK 2.0版增加了对S组的表示、读取、写入和描述的支持。

新对象生成器

最初,CDK是作为JChemPaint之间的共享库开发的[76]和Jmol[77,78]. JChemPaint使用带有事件传递机制的MVC方法在模型更改时更新视图。这可能导致一连串的变化事件被传递。这并不总是一个理想的特性,尤其是对于非UI代码。为了解决这个问题,引入了接口,允许核心接口的多个实现。由于CDK库的许多代码不再基于原始数据模型,因此需要一个生成器来创建该数据模型的对象,例如IAtom的实现。新的IChem对象生成器允许创建实现,允许实例化接口的实现,而无需显式引用这些实现。这样,CDK中的任何算法实现都可以使用任何数据模型接口实现。

CDK v1.0和v1.2的实现IChem对象生成器然而,每个数据对象构造函数都有一个方法,导致了一个非常大的接口。此外,每次引入新类、更改现有方法和更新构造函数时,都必须更新此接口API。为了简化API,新的IChem对象生成器将所有方法折叠为一个方法,该方法将要构造的接口类作为第一个参数。所有进一步的参数都作为参数传递给类构造函数。

例如,要从元素符号构造一个新原子,可以先写下:

图s

使用新的构建器,代码如下所示:

图t

CDK库现在主要是重构的,不再依赖于IChem对象生成器允许CDK用户选择适合其软件的构建器。因此,如果软件依赖于事件传递,则默认化学对象生成器可以使用,在大多数情况下,这是不需要的无提示主题对象生成器最好能实现10–20%的典型速度:

图u

第三个建设者是数据调试化学对象生成器它为数据类内容的所有更改生成调试信息。这对于调试和其他形式的代码检查很有用。

分子指纹

分子指纹在这个CDK版本中也有了显著的发展。以前,指纹使用位集合类。虽然使用这个类允许使用预先存在的方法来操作位字符串,但它在内存中保留了位向量。该解决方案对于散列的、相对较小的指纹(例如1024位,即带有\(2^{10}\)索引空间(128B)。然而,实现一个旨在避免与\(2^{32}\)使用这种方法的位索引空间将是内存无效的(512 MiB)。为了允许多种指纹表示,引入了位指纹接口:IBit指纹.

图v

此外,虽然指纹传统上是位向量,但也引入了计数指纹,使指纹基于CDK中支持的整数向量。指纹中的计数表示这种亚结构在它所代表的分子中被发现的频率。

图w

CDK目前提供的指纹如表所示.

表3 CDK中的分子指纹

改进的编码标准

随着CDK库多年来的发展,维护的复杂性也随之增加。由于意外的副作用,主分支经常无法编译,错误修复变得更加困难。经常在代码的一部分修复错误,破坏了其他一些代码,从而对修复的代码做出了错误的假设。随着CDK开发人员社区规模的扩大,在没有任何正式的编码和测试标准的情况下,这些问题是不可避免的。

为了解决这些问题,我们采用了一些编码标准。虽然不是软件工程最佳实践的全面实现,但它们试图在提高代码可维护性和足够灵活以允许高效代码开发之间找到平衡。我们赞赏这一声明的主观性,一些已通过的指导方针已经在CDK社区中进行了大量讨论和辩论。

可以说,提高代码质量的最大因素可能是同行评审过程,其中任何功能更改补丁都需要由开发分支的一名独立高级CDK开发人员进行评审,稳定分支的两名评审员进行评审。此修补程序开发系统由以下概述的许多自动验证步骤支持。接下来的部分描述了项目所采用的一些方法,这些方法允许我们像现在这样维护CDK库。

稳定性和版本标识符

在CDK v2.0之前,版本标识符第二位的奇偶校验表示稳定。偶数(v1.2.x,v1.4.x)表示API稳定性,奇数(v1.3.x,v1.5.x)表示潜在的API不稳定性。v1.4.x版和v1.5.x版是并行开发的,在这两个版本中都应用了可能的补丁。随着API的不同,将补丁移植到开发中的工作量也有所不同,但更健壮的v1.5.x到v1.4.x版本对核心开发团队来说变得难以管理。这个甚至奇怪的版本方案是从旧的Linux内核版本控制中采用的,后来在2004年被放弃用于基于时间的版本[79].

在编写时,开发分支比v1.4.x提前了3000多次提交。随着v1.5.x API变得稳定,现在是时候发布v1.6.x了。由于2011年API发生了重大变化脚注2人们认为需要更大的数字增量。这为更改为更易于管理和直观的版本标识符提供了机会。

从CDK 2.0版开始,将使用新的基于序列的版本方案。版本标识符表示更改的重要性,如下所示:

图x

由于开发人员资源有限,我们预计发行版将主要增加次要版本,偶尔发布补丁。根据Maven惯例,开发版本的后缀为-快照。v1.5.x和v2.0没有API更改。

模块化

我们采用的核心方法之一是使CDK更加模块化。CDK将每个类分配给一个模块,并定义模块之间的依赖关系。例如,核心模块不允许依赖于具有实现CDK接口的数据类的模块;相反,它们可能只依赖于接口本身。这样可以确保相关性最小化。此外,它还允许选择CDK功能,减少了所需的第三方库依赖项的数量。表中给出了关键模块的概述,包括描述、重要更改和对第三方库的依赖性4CDK模块之间的依赖关系如图所示7.

表4有重大变化的关键CDK模块选择
图7
图7

CDK模块之间的依赖关系。CDK模块之间依赖关系的可视化。例如,cdk-core依赖于cdk-interfaces模块。一些高级模块被遗漏了:cdk-builder3dtools、cdk-legacy和cdk-describe

文档

JavaDocs的质量最初是用DocCheck进行测试的,后来被一个名为OpenJavaDocChect的定制编写工具所取代。随着移动到Maven(稍后解释),该工具没有集成,我们采用了CheckStyle(http://checkstyle.sourceforge.net/). 此工具报告缺少的文档和Java源文件中未正确注释的文档。新网站列出了一些帮助启动CDK用户的资源,包括一本书[80]和化学工具箱Rosetta Wiki(http://ctr.wikia.com/wiki/Chemistry_Toolkit_Rosetta_wiki).

测试

CDK库经过多年的开发,已经产生了一系列不同类型的测试。这包括测试核心API的单元测试和测试CDK更高级别功能的功能测试。后者包括算法实现是否计算出预期值的测试,但也包含集成测试,这些测试涉及多个算法,例如SMILES解析。该套件包含23000多个测试。

代码质量

项目继续使用PMD(http://pmd.sf.net/)用于代码质量检查,但偏离了默认规则。例如,我们对可变名称长度更为自由。此外,还专门为CDK开发了一些额外的PMD测试,例如,测试类是否使用核心接口而不是那些接口的实现。也就是说,代码使用国际原子能机构而不是原子然而,这些测试确实会生成一些误报,因为测试只检查类名,而不检查类所在的Java包。

持续集成

CDK有一个自动构建系统已经很多年了。最初,Nightly集成了各种工具(构建、测试、JavaDoc等)[2]. 在迁移到Maven之后,可以使用Maven运行各种步骤,Jenkins被用来执行这些步骤(一个实例仍在运行https://jenkins.bigcat.unimaas.nl/job/cdk/。在线Travis-CI服务用于构建所有分支,包括pull请求,以确保所有内容都能正确编译:https://travis-ci.org/cdk/cdk.

Git、分支和补丁

旧版本的CDK使用Subversion进行版本控制。几年前,该项目转向了Git版本控制系统。这种转变的一个关键优势是能够拥有分布式存储库,更容易分支和提供补丁。GitHub公司(https://cdk.github.io/)已取代SourceForge成为主要的源代码托管服务,我们可以使用新的方法对代码进行评论(同行评审)、请求请求等。这些新功能简化了我们的代码评审过程。

支持

除了上述文件来源外,该项目还有其他支持来源。首先,问题跟踪器欢迎问题和其他类型的支持请求,可在https://github.com/cdk/cdk/issues邮件列表是另一个可以请求支持的地方,而存档文件记录了许多过去用户的问题。可以从以下位置访问列表和档案https://sourceforge.net/p/cdk/mailman/cdk-user/.

二进制分布

Maven包

构建系统已从Ant转换为Maven。这种转变的动机是更容易的依赖处理、测试代码与主库的更清晰分离以及自动化打包。向模块的移动需要将原始的单片源代码树拆分为每个模块的源代码文件夹。虽然这使得源代码的磁盘布局更加复杂,但这通常被现代IDE所隐藏。

因此,对于许多模块来说,测试代码现在与正在测试的代码更紧密地联系在一起:两者都位于同一个文件夹中,尽管我们坚持Maven自定义src/main/java和asrc/test/java文件夹。然而,对于一些模块,该解决方案引入了循环依赖,在这种情况下,会为测试创建一个单独的Maven模块。

CDK的Maven包可从Maven Central获得,这使其他项目易于使用。根据cdk工件,完整的库可以包含在其他软件中(http://search.maven.org/#search|ga|1组织开放科学)但依赖关系也可以在单个CDK模块上定义。

OSGi捆绑包

OSGi捆绑包也可用于CDK,例如Bioclipse使用[27,28]和KNIME[8]. 然而,由于CDK Java包偶尔会在CDK模块之间进行拆分,因此CDK当前需要绑定为单个OSGi jar。捆绑包可从以下位置获得http://pele.farmbio.uu.se/bioclipse/cdk/cdk-1.5.13/。目前正在研究Java包和捆绑包的不兼容性,这是一个可以在模块化方面进行改进的领域。

系统基准

进行了系统基准测试,以评估和量化从v1.4.19到v2.0的性能改进。对于常见用例,基准被划分为几个化学信息学任务。根据ChEBI 149的输入评估每项任务[81]和ChEMBL 22.1[82]作为SMILES和SDF。

该基准测试在Java SE 8、CentOS 7、Intel Core i7-4790 CPU上运行,CPU频率为3.60GHz,内存为16 GB。运行基准测试的代码在附加文件中提供1允许在读卡器系统上记录数字。

基准测试结果汇总在表中56表中报告了总运行时间5,表6减去第一个任务结果(计数重原子数)以提供可比较的度量,而不需要输入读取时间的开销。报告了每分钟分子的吞吐量,但对于运行速度非常快的任务来说,其准确性较低。

表5比较v1.4.19和v2.0的系统基准总结
表6无读取时间的v1.4.19与v2.0的系统基准比较摘要

计算重原子数

此任务强调了原始读取性能的改进。每个记录都被读入一个驻留内存连接表,并通过依次迭代原子来计算重(非氢)原子的数量。

这项任务的改进对于SMILES输入来说最为明显,以前读取ChEMBL 22.1需要8分钟以上,但现在减少到不到11秒。在这项改进的基础上,现在验证了SMILES的输入并分配了Kekulé结构。这确定了ChEBI中的9个无效条目和ChEMBL中的另外9个。这些被拒绝的SMILES大多数是由于环闭合处顺反式双键立体化学的错误编码造成的。ChEBI 149 SMILES输入有2107条v1.4.19跳过的空记录,v2.0只是将其作为空分子读取。对于ChEMBL,来自SDF的输入也从约3分钟提高到约1分钟。2.0版中的SDF输入现在包括立体化学感知和读取CT文件S组(图。8). ChEBI的SDF中有9个条目被拒绝,因为它们包含CT文件查询功能(例如任何债券订单)。

图8
图8

现在由CDK捕获并在molfiles和CXSMILES中编码的S组示例。乙基酯化反应完全展开。b条使用Sgroup缩写可以显示快捷方式和更紧凑的描述。c(c)DNA 5′-磷酸盐(CHEBI:4294)中结构重复单元的一个例子

戒指

环形感知是许多其他算法中的基本步骤。振铃任务分为三个子任务:标记、sssr和全部。

-标记第一个子任务测量标记环成员身份和报告每个记录中的环债券数量的性能。这需要基于深度优先搜索的线性算法。原始代码使用加权生成树来计算线性时间内的隶属度。这些数据集的运行时间相似(表6),只有更复杂的笼状分子,如富勒烯,才有更大的差异[38].

-固态继电器第二个子任务计算最小环的最小集(SSSR),并报告每条记录的SSSR(电路秩)的大小。虽然使用线性遍历(计算DFS后缘)或欧拉多面体公式可以更有效地计算电路秩,但我们正在测试枚举SSSR集的时间。一般来说,由于集合的非唯一性以及需要高斯矩阵消除(立方运行时),SSSR被认为是不利的。通过一些簿记,减少了矩阵消除所花费的时间[38]. 对于ChEMBL,我们看到生成SSSR的时间现在约为16秒,而之前约为3.5分钟(表6).

-全部第三个子任务统计大小为12的所有环的数量。这包括包围其他较小环的环,例如,1H-indole有大小为5、6和9的环。一般来说,这个问题是指数型的,因此可以使用可调整的阈值或超时来避免出现问题的分子。CDK v1.4.19使用了基于超时的阈值(默认为5s),而v2.0使用了基于算法属性的计数器[38]. 在2.0版中,有15/17脚注从具有复杂笼状环系统的ChEBI跳过的记录(例如ChEBI:33611),ChEMBL中没有记录达到阈值。与第1.4.19版相比,由于超时,ChEBI中跳过了14/16条记录,而ChEMBL中跳过了88/90条记录。

v2.0中的加速比SSSR任务稍好。ChEMBL之前花了4-5分钟,现在只花了约12-14秒(表6). 在v2.0中查找所有环(\(\le\)12个键)比非唯一SSSR计算运行得更快。

标准笑容

此任务测量Unique SMILES字符串的生成。这些字符串可用于比较数据集交集和精确查找。从SMILES输入v2.0来看,ChEBI和ChEMBL的总运行时间都快了约20倍。与之前的14分钟多时间相比,ChEMPL现在只需要不到41秒的时间来读取、重新排序和写入SMILES。

转换

此任务测试SDF和SMILES输入之间的非规范转换。

-百万吨史密斯SMILES是一种非常紧凑的存储连接表的方法,v1.4.19只能编写规范SMILES,v2.0允许生成不同的SMILES风格,包括非规范变体。此任务输出CXSMILES,其中包含其他字段,如重复组(由某些ChEBI条目使用)。正如预期的那样,v1.4.19的执行时间与Canonical SMILES任务的执行时间相同,但v2.0可以更快地生成非规范SMILES,从ChEMBL生成SMILES所需的时间不到30秒。

在SMILES中分配双键配置并不常见,v2.0有一些安全检查,因为SMILES的输出是Keklué,但输入是芳香的,当键序被分配时,SMILES输出中可能会意外编码一个额外的双键,这有时是可以接受的,但目前会报告错误。

-百万吨sdf对于写入SDF输出,与v1.14.19相比有了最小的改进,当不考虑读取性能的改进时,ChEBI的SDF生成实际上比v1.4.19慢一些(表6). 这部分可以通过更全面的SDF生成来解释,SDF生成现在写入S组以及计算原子奇偶性和价列的值。

-第2代-ofmt sdf编写SDF时,存储立体化学的唯一便携式方法是包含坐标,这是用-第二代选项。早期讨论的布局生成大修提供了更好的布局,但也包括性能调整,在CDK v1.4.19中,为ChEMBL生成坐标和编写SDF几乎需要3.5小时,但现在只需要约18分钟。

指纹生成

此任务测试指纹的生成以进行相似性和子结构筛选。测试了三种不同类型的指纹:类日光散列路径指纹、类MACCS 166密钥和类流水线先导散列圆形指纹(ECFP4)。该任务生成可与chemfp一起使用的十六进制FPS文件[83].

-类型路径基于路径的指纹对长度为0-7的路径进行编码。基于路径的指纹可以用于子结构和相似性筛选。对2.0版的算法进行了调整,使其能够对路径进行散列,而无需预先计算所有路径,也无需在散列之前生成字符串。编码ChEMBL之前需要42–47分钟,现在只需要6–8分钟。

-类型maccsCDK MACCS指纹使用166个密钥对结构特征进行编码,并可用于相似性搜索。此编码使用库的不同方面,包括环感知和新的芳香感知,但速度主要取决于SMARTS匹配性能。生成指纹之前,ChEMBL需要约1天的时间,ChEBI需要约1.75小时。ChEMBL的指纹生成时间已减少至13.5分钟以下,ChEBI~20秒。

-类型circ圆形指纹只能用于相似性,无法在v1.4.19中生成。然而,已知指纹在检索性能方面表现良好[84]. 此处包含的时间表明,它们的计算速度比路径或类似MACCS的键更快,因此建议使用。CDK包括两种基于签名或扩展连接的实现[35].

基准总结

在所有任务中,与v1.4.19相比,v2.0的总运行时间更好。在许多任务中,改进速度要快十倍以上。不仅改进了执行时间,而且改进了健壮性和正确性,这意味着v2.0通常比v1.4.19中的等效过程做更多的工作。

结论

自2006年CDK第二次发布以来,该库在许多方面都得到了改进,包括体系结构、新功能、改进的代码测试、管理、同行评审和部署。这些变化带来了功能更丰富的化学信息库,并显著提高了性能。对常见SMILES和molfile格式的更新以及改进的结构图生成非常明显,并使许多使用CDK的工具受益匪浅。此外,开发模型的稳定性已经显著提高,随着时间的推移,提供了更大的库稳定性。CDK有90多个贡献者,有一长串基于CDK的工具,有数百篇文章被引用,CDK非常活跃。

可用性和要求

  • 项目名称化学开发工具包。

  • 项目主页 https://cdk.github.io/.

  • 操作系统Windows、GNU/Linux、OS/X。

  • 程序设计语言爪哇。

  • 其他(可选)要求JNI-InChI、Vecmath、Beam、Guava、JGraphT、Signatures、CMLXOM、XOM、JavaCC。

  • 许可证LGPL v2.1或更高版本。

  • 非学者使用的任何限制无其他内容。

更改历史记录

  • 2017年9月20日

    这篇文章的勘误表已经出版。

笔记

  1. Molfiles还可以将四面体立体化学存储为奇偶值,如果未指定坐标,则读取该值。一般来说,无法保证奇偶校验值被读取,在molfile中存储立体化学的唯一便携式方法是使用坐标。

  2. https://github.com/cdk/cdk/commit/2fc6b61972af834c1fea7fcb64287363ecbcb188.

  3. SDF中的2条记录使用查询绑定功能,读取时跳过。

工具书类

  1. O’Boyle N、Guha R、Willighagen E、Adams S、Alvarsson J、Bradley JC等人(2011)《化学中的开放数据、开放源代码和开放标准:五年后的蓝色方尖碑》。化学信息杂志3(1):37

    第条 谷歌学者 

  2. Guha R、Howard MT、Hutchison GR、Murray Rust P、Rzepa H、Steinbeck C等人(2006)《蓝色方尖碑在化学信息学中的互操作性》。化学信息杂志46(3):991–998

    第条 中国科学院 谷歌学者 

  3. Steinbeck C、Han Y、Kuhn S、Horlacher O、Luttmann E、Willighagen E(2003)化学开发工具包(CDK):一个用于化学和生物信息学的开源Java库。化学信息与计算科学杂志43(2):493–500

    第条 中国科学院 谷歌学者 

  4. Steinbeck C、Hoppe C、Kuhn S、Floris M、Guha R、Willighagen EL(2006)化学开发工具包(CDK)的最新发展——一个用于化学和生物信息学的开源java库。当前药剂师12(17):2111–2120

    第条 中国科学院 谷歌学者 

  5. O'Boyle NM,Hutchison GR(2008)Cinfony–将开源化学信息工具包结合在一个通用界面背后。化学中心杂志2:24

    第条 谷歌学者 

  6. Guha R(2007)R.J Stat Softw中的化学信息学功能18(5):1–16

    第条 谷歌学者 

  7. Truszkowski A、Jayaseelan KV、Neumann S、Willighagen EL、Zilesny A、Steinbeck C(2011)化学信息学开放工作流环境CDK-Taverna的新发展。化学信息杂志3(1):1-10

    第条 谷歌学者 

  8. Beisken S、Meinl T、Wiswedel B、de Figueiredo L、Berthold M、Steinbeck C(2013)KNIME-CDK:工作流驱动的化学信息学。BMC生物信息14(1):257

    第条 谷歌学者 

  9. ChemViz2:用于细胞景观的化学信息学应用程序;2016http://www.rbvi.ucsf.edu/cytoscape/chemViz2/

  10. Lawson KR,Lawson J(2012)LICSS——微软excel中的化学电子表格。化学杂志4(1):3

    第条 中国科学院 谷歌学者 

  11. Hinselmann G、Rosenbaum L、Jahn A、Fechner N、Zell A(2011)jCompoundMapper:用于化学指纹的开源Java库和命令行工具。化学杂志3(1):3

    第条 中国科学院 谷歌学者 

  12. Wetzel S、Klein K、Renner S、Rauh D、Oprea TI、Mutzel P等人(2009)《与Scaffold Hunter互动探索化学空间》。自然化学生物5(8):581–583

    第条 中国科学院 谷歌学者 

  13. Klein K、Koch O、Kriege N、Mutzel P、Schäfer T(2013)《Scaffold Hunter生物活性数据的可视化分析》。摩尔通知32(11–12):964–975

    第条 中国科学院 谷歌学者 

  14. Peironcely JE、Rojas ChertóM、Fichera D、Reijmers T、Coulier L、Faulon JL等人(2012)OMG:开放分子发生器。化学杂志4(1):1–13

    第条 谷歌学者 

  15. Yap CW(2011)PaDEL-descriptor:计算分子描述符和指纹的开源软件。计算机化学杂志32(7):1466–1474

    第条 中国科学院 谷歌学者 

  16. Dong J,Cao DS,Miao HY,Liu S,Deng BC,Yun YH等(2015)ChemDes:一个集成的基于web的分子描述符和指纹计算平台。化学杂志7(1):60

    第条 谷歌学者 

  17. Sivakumar TV、Giri V、Park JH、Kim TY、Bhaduri A(2016)ReactPRED:预测和分析生化反应的工具。生物信息学32:3522–3524

    中国科学院 谷歌学者 

  18. Rahman SA、Bashton M、Holliday GL、Schrader R、Thornton JM(2009)小分子子图检测器(SMSD)工具包。化学杂志1(1):12

    第条 谷歌学者 

  19. Rahman SA、Cuesta SM、Furnham N、Holliday GL、Thornton JM(2014)EC-BLAST:自动搜索和比较酶反应的工具。Nat方法11(2):171–174

    第条 中国科学院 谷歌学者 

  20. Rahman SA、Torrance G、Baldaci L、Cuesta SM、Fenninger F、Gopal N等人(2016)《反应解码器工具(RDT):从化学反应中提取特征》。生物信息学32(13):2065–2066

    第条 谷歌学者 

  21. Rostkowski M,Spjuth O,Rydberg P(2013)WhichCyp:细胞色素P450抑制预测。生物信息学29(16):2051–2052

    第条 中国科学院 谷歌学者 

  22. Carlsson L、Spjuth O、Adams S、Glen RC、Boyer S(2010)使用历史代谢生物转化数据作为使用MetaPrint2D和Bioclipse预测代谢位点的手段。BMC生物信息11(1):362

    第条 谷歌学者 

  23. Wolf S、Schmidt S、Müller-Hannemann M、Neumann S(2010)《计算机辅助鉴定代谢物质谱的电子碎片》。BMC生物信息11(1):148

    第条 谷歌学者 

  24. Southan C、Sharman JL、Benson HE、Faccenda E、Pawson AJ、Alexander SPH等人(2016)《2016年IUPHAR/BPS药理学指南:1300个蛋白质靶点和6000个配体之间的定量相互作用》。核酸研究44(D1):D1054–D1068

    第条 中国科学院 谷歌学者 

  25. Placzek S、Schomburg I、Chang A、Jeske L、Ulbrich M、Tillack J等人(2017)2017年BRENDA:BRENDA的新视角和新工具。核酸研究45(D1):D380–D388

    第条 谷歌学者 

  26. Ruusmann V、Sild S、Maran U(2015)《QSAR数据库存储库:开放和链接的定性和定量结构-活动关系模型》。化学信息杂志7(1):35

    第条 谷歌学者 

  27. Spjuth O、Helmus T、Willighagen EL、Kuhn S、Eklund M、Wagener J等人(2007)《生物clipse:化学和生物信息学的开源工作台》。BMC生物信息8(1):59

    第条 谷歌学者 

  28. Spjuth O、Alvarsson J、Berg A、Eklund M、Kuhn S、Mäsak C等人(2009)《生物clipse 2:生命科学的可脚本化集成平台》。BMC生物信息10(1):397

    第条 谷歌学者 

  29. Jeliazkova N,Jeliazcov V(2011)AMBIT RESTful web服务:OpenTox应用程序编程接口的实现。化学杂志3(1):1–18

    第条 谷歌学者 

  30. Jeliazkova N,Kochev N(2011)AMBIT-SMARTS:化学结构和碎片的高效搜索。摩尔通知30(8):707–720

    中国科学院 谷歌学者 

  31. Kochev NT、Paskaleva VH、Jeliazkova N(2013)Ambit-Tautomer:互变异构体生成的开源工具。摩尔通知32(5-6):481-504

    第条 中国科学院 谷歌学者 

  32. Marth CJ、Gallego GM、Lee JC、Lebold TP、Kulyk S、Kou KGM等(2015),网络分析指导下合成weiscanitine D和liljestrandinine。自然528(7583):493–498

    第条 中国科学院 谷歌学者 

  33. Segler MHS,Waller MP(2017)建模化学推理以预测和发明反应。化学。欧洲药典23:6118–6128

    第条 中国科学院 谷歌学者 

  34. Alvarsson J、Lampa S、Schaal W、Andersson C、Wikberg JES、Spjuth O(2016)使用支持向量机的基于配体的大规模预测建模。《化学杂志》。8(1):39

    第条 谷歌学者 

  35. Clark A、Sarker M、Ekins S(2014)针对TB Mobile 2.0的新目标预测和可视化工具,包括开源分子指纹。化学杂志6(1):38

    第条 谷歌学者 

  36. Cannon E,Mitchell JBO(2006)使用化学开发工具包指纹对世界反意见机构2005年的禁止名单进行分类。收录:Berthold MR,Glen R,Fischer I(编辑)计算生命科学II。计算机科学讲义第4216卷。柏林施普林格,第173-182页

    谷歌学者 

  37. Spjuth O,Berg A,Adams S,Willighagen EL(2013)InChI在CDK和Bioclipse化学信息学中的应用。化学杂志5(1):14

    第条 中国科学院 谷歌学者 

  38. May JW,Steinbeck C(2014)《化学开发试剂盒的有效环感知》。化学杂志6(1):3

    第条 谷歌学者 

  39. May JW(2014)《恶意SMARTS查询》。http://efficientbits.blogspot.co.uk/2014_03_01_archive.html

  40. May JW(2015)基因组规模代谢重建的化学信息学。剑桥大学。https://www.repository.cam.ac.uk/handle/1810/246652

  41. Karapetyan K、Batchelor C、Sharpe D、Tkachenko V、Williams A(2015)《化学验证和标准化平台(CVSP):化学结构数据集的大规模自动验证》。J Stat软件7:30

    谷歌学者 

  42. Faulon JL、Visco J、Donald P、Pophale RS(2003)《分子特征描述符》。1.在QSAR和QSPR研究中使用扩展价序列。化学信息与计算科学杂志43(3):707–720

    第条 中国科学院 谷歌学者 

  43. Faulon JL、Collins MJ、Carr RD(2004)《分子特征描述符》。4.使用扩展价序列对分子进行规范化。化学与计算科学杂志44(2):427–436

    第条 中国科学院 谷歌学者 

  44. Alvarsson J、Eklund M、Engkvist O、Spjuth O、Carlsson L、Wikberg JES等人(2014)基于配体的目标预测和特征指纹。化学信息杂志54(10):2647–2653

    第条 中国科学院 谷歌学者 

  45. Spjuth O、Eklund M、Ahlberg Helgee E、Boyer S、Carlsson L(2011)《评估化学负债的综合决策支持》。化学信息杂志51(8):18407

    第条 谷歌学者 

  46. Moghadam BT、Alvarsson J、Holm M、Eklund M、Carlsson L、Spjuth O(2015)《云计算在药物开发中的缩放预测建模》。化学信息杂志55(1):19–25

    第条 中国科学院 谷歌学者 

  47. Alvarsson J、Eklund M、Andersson C、Carlsson L、Spjuth O、Wikberg JES(2014),结合使用签名指纹和支持向量机时参数变化的基准研究。化学信息杂志54(11):32117

    第条 谷歌学者 

  48. Spjuth O、Carlsson L、Alvarsson J、Georgiev V、Willighagen E、Eklund M(2012)《生物瓣的开源药物发现》。当前顶级药物化学12(18):1980-1986

    第条 中国科学院 谷歌学者 

  49. Norinder U,Ek ME(2013)使用SVM/特征码方法和生物唇形建模平台对NaV1.7活性化合物进行QSAR研究。生物有机医药化学快报23(1):261–263

    第条 中国科学院 谷歌学者 

  50. Clark AM(2010)分子图绘制的基本基元。化学杂志2(1):8

    第条 谷歌学者 

  51. Clark AM(2013)为出版物质量输出绘制分子草图。摩尔通知32(3):291–301

    第条 中国科学院 谷歌学者 

  52. Helson HE(2007)结构图生成。牛津威利

    谷歌学者 

  53. Rojas-ChertóM、Kasper PT、Willighagen EL、Vreeken RJ、Hankemeier T、Reijmers TH(2011)基于MSn的元素成分测定。生物信息学27(17):2376–2383

    第条 谷歌学者 

  54. Pluskal T、Uehara T、Yanagida M(2012)利用高分辨率质谱、MS/MS裂解、启发式规则和同位素模式匹配的高精度化学公式预测工具。分析化学84(10):4396–4403

    第条 中国科学院 谷歌学者 

  55. Pluskal T、Castillo S、Villar-Briones A、OrešičM(2010)MZmine 2:基于质谱的分子剖面数据处理、可视化和分析的模块化框架。BMC生物信息11(1):1–11

    第条 谷歌学者 

  56. Dührkop K,Shen H,Meusel M,Rousu J,Böcker S(2015)使用CSI:FingerID搜索串联质谱的分子结构数据库。国家科学院学报112(41):12580–12585

    第条 谷歌学者 

  57. Böcker S,Letzel MC,Lipták Z,Pervukhin A(2009)SIRIUS:代谢产物鉴定的分解同位素模式。生物信息学25(2):218–224

    第条 谷歌学者 

  58. Martello S,Toth P(1990)背包问题:算法和计算机实现。纽约威利

    谷歌学者 

  59. Dührkop K,Ludwig M,Meusel M,Böcker S(2013)更快的质量分解。摘自:生物信息学算法研讨会论文集(WABI 2013)。斯普林格,第45-58页。http://arxiv.org/abs/1307.7805

  60. Böcker S、Lipták Z、Martin M、Pervukhin A、Sudek H(2008)《从解释质谱峰到解决货币兑换问题的DECOMP》。生物信息学24(4):591–593

    第条 谷歌学者 

  61. Böcker S,Lipták Z(2005)高效质量分解。摘自:2005年ACM应用计算研讨会论文集。ACM,第151–157页

  62. Kind T,Fiehn O(2007)通过精确质谱获得的分子公式启发式过滤的七条黄金法则。BMC生物信息8(1):1–20

    第条 谷歌学者 

  63. Zhang M,Zhang Z,Chen C,Lu H,Liang Y(2016)基于分枝定界算法的并行公式生成器,用于解释高分辨率质谱。化学计量学智能实验室系统153:106–109

    第条 中国科学院 谷歌学者 

  64. Wang M、Carver JJ、Phelan VV、Sanchez LM、Garg N、Peng Y等(2016)《与全球天然产物社会分子网络共享和社区管理质谱数据》。国家生物技术34(8):828–837

    第条 中国科学院 谷歌学者 

  65. Weininger D(1988)SMILES,一种化学语言和信息系统。1.方法和编码规则介绍。化学信息与计算科学杂志28(1):31–36

    第条 中国科学院 谷歌学者 

  66. 5月JW(2013)Beam。github。https://github.com/johnmay/beam

  67. ChemAxon扩展SMILES。http://onlinelibrarystatic.wiley.com/marvin/help/formats/cxsmiles-doc.html

  68. May JW(2013)所有小事情。http://efficientbits.blogspot.co.uk/2013/10/all-small-things.html

  69. May JW(2013)改进了下部结构匹配。http://efficientbits.blogspot.co.uk/2013/11/improved-substructure-matching.html

  70. Berger F、Flamm C、Gleiss PM、Leydold J、Stadler PF(2004)《化学环知觉反例》。化学信息与计算科学杂志44(2):323–331

    第条 中国科学院 谷歌学者 

  71. Figueras J(1996)使用宽度第一搜索的环形感知。化学信息与计算科学杂志36(5):986–991

    第条 中国科学院 谷歌学者 

  72. 日光化学信息系统公司。http://www.daylight.com网站

  73. Dalby A、Nourse JG、Hounshell WD、Gushrst AKI、Grier DL、Leland BA等人(1992年)《分子设计有限公司开发的计算机程序使用的几种化学结构文件格式的描述》。化学信息与计算科学杂志32(3):244–255

    第条 中国科学院 谷歌学者 

  74. CT文件格式。http://accelrys.com/products/collabove-science/biovia-draw/ctfile-no-fee.html

  75. Gushrst AJ、Nourse JG、Hounshell WD、Leland BA、Raich DG(1991)《物质模块:复杂结构的表示、存储和搜索》。化学信息与计算科学杂志31(4):447–454

    第条 中国科学院 谷歌学者 

  76. Krause S、Willighagen E、Steinbeck C(2000)JChemPaint利用互联网的协作力量开发了二维化学结构的免费编辑器。分子5(1):93–98

    第条 中国科学院 谷歌学者 

  77. Willighagen E,Howard M(2007)在没有Java3D的web浏览器中快速和可编写脚本的分子图形。自然先例。数字对象标识:2007.50.1年10月1038日

  78. Hanson RM(2010)Jmol——晶体可视化的范式转变。应用结晶学杂志43:1250–1260

    第条 中国科学院 谷歌学者 

  79. Linux内核,版本编号。https://en.wikipedia.org/wiki/Linux_kernel#版本号

  80. Willighagen EL(2011)《Groovy化学信息学与化学开发工具包》。1.4.1-0版Figshare。https://doi.org/10.6084/m9.图2057790.v1

  81. Hastings J、de Matos P、Dekker A、Ennis M、Harsha B、Kale N等人(2013)《生物相关化学的ChEBI参考数据库和本体:2013年增强》。核酸研究41(D1):D456。

    第条 中国科学院 谷歌学者 

  82. Bento AP、Gaulton A、Hersey A、Bellis LJ、Chambers J、Davies M等人(2014)《ChEMBL生物活性数据库:更新》。核酸研究42(D1):D1083。

    第条 中国科学院 谷歌学者 

  83. Dalke A(2013)FPS指纹格式和chemfp工具包。化学杂志5(1):第36页。

    第条 谷歌学者 

  84. O'Boyle NM,Sayle RA(2016)《使用基于文献的相似性基准比较结构指纹》,《化学信息杂志》8(1):36。

    第条 谷歌学者 

  85. 作者(2015)https://github.com/cdk/cdk/blob/master/pom.xml

  86. 罗杰斯·D、哈恩·M(2010)《扩展关联指纹》。化学信息杂志模型50(5):742–754

    第条 中国科学院 谷歌学者 

  87. Hall LH,Kier LB(1995)原子类型的电拓扑状态指数:电子、拓扑和价态信息的新组合。化学信息杂志35:1039–1045

    第条 中国科学院 谷歌学者 

  88. Klekota J,Roth FP(2008),生物活性富集的化学亚结构。生物信息学24(21):251825

    第条 谷歌学者 

  89. Vidal D,Thormann M,Pons M(2005)LINGO,一种高效的基于全息文本的方法,用于计算生物物理性质和分子间相似性。化学信息杂志45(2):386–393

    第条 中国科学院 谷歌学者 

  90. PubChem亚结构指纹v1.3。ftp://ftp.ncbi.nlm.nih.gov/pubchem/specifications/pubchem_fingerpints.txt文件【引自2014年7月4日星期五】

  91. Murray-Rust P,Rzepa HS(2011)CML:进化与设计。化学杂志3(1):44

    第条 谷歌学者 

  92. Ihlenfeldt WD,Gasteiger J(1994)分子结构元素识别和分类的哈希代码。计算机化学杂志15(8):793–813

    第条 中国科学院 谷歌学者 

  93. Hicklin J、Moler C、Webb P、Boisvert RF、Miller B、Pozo R等人(2012)JAMA:Java矩阵包。http://math.nist.gov/javanumerics/jama/

下载参考资料

作者的贡献

所有作者都为CDK库编写并贡献了源代码或文档。一些作者对该库的源代码进行了同行评审。ELW、JWM、RG和CS是项目负责人。所有作者都对本文的内容作出了贡献。所有作者阅读并批准了最终手稿。

致谢

作者们感谢为CDK图书馆贡献了越来越小的贡献的大量人员。在Maven父POM中可以找到贡献者的完整列表[85]. OS感谢瑞典战略研究项目eSSENCE和瑞典电子科学研究中心(SeRC)的支持。TP是海伦·海·惠特尼基金会的西蒙斯基金会研究员。我们还感谢K.Duhrkop在撰写本文期间所作的贡献。

竞争性利益

JWM和NJ为销售基于CDK的解决方案的公司工作。ELW销售一本描述CDK功能的书。

出版商笔记

Springer Nature在公布的地图和机构关联中的管辖权主张方面保持中立。

作者信息

作者和附属机构

作者

通讯作者

与的通信埃贡·L·威利根.

其他信息

这篇文章的原版被修改了。据注意,图形摘要未按要求包含在内。

这篇文章的勘误表可以在https://doi.org/10.1186/s13321-017-0231-1.

其他文件

权利和权限

开放式访问本文根据Creative Commons Attribution 4.0 International License的条款分发(http://creativecommons.org/licenses/by/4.0/),它允许在任何媒体上不受限制地使用、分发和复制,前提是您对原始作者和来源给予适当的信任,提供知识共享许可的链接,并指明是否进行了更改。知识共享公共领域专用豁免(http://creativecommons.org/publicdomain/zero/1.0/)适用于本文中提供的数据,除非另有说明。

转载和许可

关于本文

检查更新。通过CrossMark验证货币和真实性

引用这篇文章

Willighagen,E.L.、Mayfield,J.W.、Alvarsson,J。等。化学开发工具包(CDK)v2.0:原子分型、描述、分子式和亚结构搜索。化学杂志 9, 33 (2017). https://doi.org/10.1186/s13321-017-0220-4

下载引文

  • 收到:

  • 认可的:

  • 出版:

  • 内政部:https://doi.org/10.1186/s13321-017-0220-4

关键词