大家好,本周分享的是发表在MCP(MOLECULAR&CRLLULAR PROTEOMICS)上的一篇关于质谱数据处理和识别的文章,题目是psims - A Declarative Writer for mzML and mzIdentML for Python,通讯作者是波士顿大学的Joseph Zaia。
质谱中数据处理和识别方法的激增导致需要描述其结果的工具的复杂性不断增加。 在过去的十五年中,两种质谱数据mzML 和mzIdentML ,已成为计算方法开发的核心。 目前有基于C/C++的程序例如ProteoWizard 和OpenMS,和基于Java的程序ms-data-core-api / jmzML和MSFTBX ,以及其他静态类型的编译语言能够对这两种数据进行处理。在高级语言中,这些格式的读取通常直接在通用XML解析库之上实现,或者与底层语言进行绑定。在实现读取时,通常编写器被实现为对某些读入数据进行模板化,或者根本不实现。这些库不能用于“从本机数据”生成文件,这意味着用户无法轻松编写工具来生成这些文件格式,因为要生成的数据不会立即与输入模板连接。在与底层语言进行绑定,可以表达的构造范围存在限制,例如无法描述不属于底层库的绑定或该类型系统的新的结构。这可能是由于违反单一责任原则,或仅涵盖使用者认为有用的规范部分。据我们所知,上面列出的C ++库以及几个已发布和未发布的Java或C#实现中都可以找到唯一的无模板编写器。要使用像Python或R这样的脚本语言从本机数据编写mzML和mzIdentML文件,必须分别通过pyOpenMS 和ProteoWizard通过mzR 绑定OpenMS。这为质谱数据处理工具的创建和部署增加了不必要的复杂性。波士顿大学的Joseph Zaia课题组使用Python为mzML 1.1和mzIdentML 1.2写了一个声明性编程Psims,使用范围比以前可用的语言更广泛。Psims的编写利用了lxml,一个强大的XML处理库用于实现增量文档的编写,NumPy 用于处理二进制数据数组, SQLAlchemy 用于在语义术语图不适用的某些情况下的关系模式表示。作者使用Pyteomics 演示了一些示例,在测试组件中为mzML和mzIdentML提供了读入。源代码及其文档可在以下免费获得https://github.com/mobiusklein/psims。该库与跨平台的Python 2和Python 3兼容。
该课题组使用公共数据PXD003498进行测试,从PRIDE下载raw文件和mgf文件,将raw文件转换成mzXL格式的文件,使用Proteowizard提取峰值信息,使用MS-Deconv处理mzXML文件,输出包含MS1信息,使用转换脚本msdeconv.py转换MS-Deconv的输出为mzML格式,使用Identify搜索mgf文件,数据库为从UniProt Release下载的人类蛋白质组数据,搜索参数设置为胰蛋白酶,2个漏切位点, 10ppm前体质量误差,0.1 Da生产质量精度,输出结果被写成pickle格式的文件,使用identipy mzid.py脚本转换将其转换为mzIdentML格式。为了证明通用性,作者构建了两个脚本用于从mzML和mzIdentML读入数据和输出相同的文档。通过对来自每个源文件及其重复对的解析数据进行递归比较来发现差异,并对这些差异进行了语义评估。
该库的运行过程主要包括三部分:解析词汇,为了能够自动推导受控词汇表术语,首先从文档初始化期间用户指定的URI加载每个CV,或者在打包期间包含库中源代码的静态文件(如果网络请求失败)。该库包括一个可配置的缓存机制,用于在首次从提供的或已安装的包中检索词汇源文件后,选择将词汇源文件存储在文件系统上。除了Unimod之外,用OBO格式解析每个CV,构造一个内存中的术语图,过编号为每个术语编制索引。解析单元:解决了第一个问题后,如果术语定义指定该术语具有单元,则该单元也将被解析。 如果在受控词汇表中仅指定了一个单元,并且用户提供的描述该术语的数据未提供任何单元信息,则将自动使用该术语的定义单位。 如果允许多个单元,如时间或信号强度等数量的情况,则会产生警告并且第一个单元选项将被使用。定义组件:每个组件构造一个包含元素以包含其内容,但可以自动创建多个内部元素或组件,绑定到同一文档的上下文中。 元素和组件类型都使用了上下文管理器,因此它们可以任意嵌套和混合。
作者将MS-Deconv 的结果从制表符分隔的文本格式转换为mzML,尽可能多地保留源文件元数据,同时保留deisotoped和charge deconvoluted峰值质量和强度。 保留了MS-Deconv重新计算的前体单同位素m / z和电荷,可以校正仪器报告的前体单同位素峰值误差。 生成的mzML文件保留了MS-Deconv的产生的原始mzXML文件中读取的元数据,可以使用任何可以读取mzML的工具查看,例如SeeMS 。 此外,在转换过程中,作者提供了一组计算以查找特定的特征离子,并在每个MS2扫描上提供了一个<userParam />标记,其中包含所需的m / z值。
Psims是一个用于编写HUPO-PSI标准下的mzML和mzIdentML的库,以及用于与Python中相关的受控词表进行交互的库。作者在本文中简要地展示了它用于从外部工具生成的表格数据中编写mzML文件的功效。随着越来越多的肽和蛋白质鉴定工具(包括IdentiPy和Ursgal直接用Python编写)被开发出来,直接将其结果写入mzIdentML可能是很有利的。 psims不使用类似DOM的体系结构,但它完全支持已发布的XML模式,并可以使用它们来验证自己生成的XML。由于流的性质,库不会在运行时严格执行XSD验证,因此用户必须明确请求调用它。作者还希望提供一个灵活的系统,使用户能够编写满足其需求的文档,这些文档可能还未被目前发布的标准所涵盖。
文章解读:
文献分享二组-马臻
文章引用:
doi:10.1074/mcp.RP118.001070
文章链接:
https://www.mcponline.org/content/18/3/571
原文地址:https://www.cnblogs.com/ilifeiscience/p/10751540.html