一种高效存储质谱数据的数据结构
ms-map的Python项目详细描述
女士地图
一种用于存储质谱数据的散斑图
背景
什么是质谱数据
如果你没听说过质谱,我怀疑你会从这个数据结构中得到很多东西,但请随时留下来学习!在
质谱数据是由质谱仪(duh)产生的数据。更具体地说,这个数据结构是用来从质谱仪运行的数字列表(浮点数)中识别肽(氨基酸的短序列)。氨基酸被描述为序列质量。在
更具体地说,这种数据结构的主要用途是使用单电荷和双电荷团来识别肽。输出的最基本形式是一个浮点数列表。它可能看起来像下面这样
[99.023, 140.743, 209.887, 288.115, 402.778]
这个浮点数序列描述了一个特定的氨基酸序列。其工作方式如下:
假设我们的氨基酸序列是:MALW
(别开枪我知道质量没有意义)。上面的氨基酸序列描述了离子类型和电荷的任何排列。为了这个例子,我们将把我们的范围限制在b
和{1
和{b
离子从左到右描述氨基酸,y
从右到左。对于我们的示例序列,我们可以将其分解为:
所以M可以用a b
离子和y
离子来描述。区别在于b
是M
的质量,y
实际上是{
再深入一点,电荷,顾名思义,就是质谱仪中分子和氨基酸链的实际电荷。其中最常见的是1和2。所以我们可以有4种不同的离子组合(b+,b++,y+,y++),来描述每个结。在
使用ms数据的哈希映射
如果您对hash-map数据结构一无所知,请浏览一下this维基百科页面。在
哈希映射的工作原理如下:
插入
一对质量(一个浮点数)和一个序列(氨基酸串)被加入。在
insert(mass, spectrum)
质量的整数值用作键。然后,将质量对sequence插入到整数mass项的列表中。在
input: 123.456, ABC
key: 123
inserting value: 123.456, ABC
任何具有相同质量的值都将附着到相同的质量值,以避免重复
table: {123: [(123.456, [ABC])]}
insert: 123.456, XYZ
table: {123: [(123.456, [ABC, XYZ])]}
不具有相同质量的值不会插入到同一点中
table: {123: [(123.456, [ABC, XYZ])]}
insert: 567.890, LMNOP
table: {123: [(123.456, [ABC, XYZ])], 567: [(567.890, [LMNOP])]}
查找
对表的查找是对体量的查找,而不是对序列的查找。与插入非常相似,查找从获取体量的整数值开始。它用作搜索键。在
search(mass, tolerance)
公差参数用于确定搜索体量时允许的自由度。一旦密钥被提取出来,我们就可以通过一个列表来查找在搜索量的上下界范围内的值。在
search parameters: 123.455, 20
tolerance: 20 ppm of 123.455 -> 0.0025
upper bound: 123.455 + .0025 = 123.4575
lower bound: 123.455 - .0025 = 123.4525
key: 123
table entries at 123: [(123.456, [ABC, XYZ]), (123.999, [YYY])]
table entries at 123 with values between 123.4525 and 123.4575: [(123.456, [ABC, XYZ])]
然后返回质量范围内的值的序列
output: [ABC, XYZ]
安装
要将python绑定作为包安装,请运行
pip install ms_map
要安装源代码,请运行
git clone https://github.com/zmcgrath96/ms_map.git< p>为构建C++代码,运行测试并生成Python绑定,运行
cd ms_map $ms_map> chmod u+x build_py.sh $ms_map> ./build_py.sh
示例
fromms_mapimportPyMSMapif__name__=='__main__':map=PyMSMap()mass=316.308sequence="ZAM"print("Adding mass with sequence to the map")map.insert(mass,sequence)mass=218.095sequence="PSM"print("Adding a different mass with a different sequence to the map")map.insert(mass,sequence)print("Searching for mass that we put in there")results=map.search(316.302,20)print("Results:")forresultinresults:print(result)
美国石油学会
- insert(mass:float,sequence:str)->无:在表中插入带有序列的mass
- search(mass:float,ppmΒtol:int)—>;list:使用根据ppm tolerance参数计算的上下限值搜索质量。返回质量在此范围内的所有序列。在
- 项目
标签: