Rosalind 043 Comparing Spectra with the Spectral Convolution

2024-01-08 14:36

本文主要是介绍Rosalind 043 Comparing Spectra with the Spectral Convolution,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个问题是关于如何比较两个蛋白质的质谱图的相似性。在生物信息学和质谱分析中,这个问题非常重要,尤其是在蛋白质组学领域。

背景

  1. 质谱图与蛋白质:在蛋白质组学中,质谱仪用于分析蛋白质。将蛋白质分解成多个肽段后,会产生一个质谱图,这是质荷比(m/z)和强度的图表。质谱图中的每一个峰代表蛋白质的一个片段,其位置对应该片段的质量。

  2. 简化的谱图:这个问题将质谱图简化为实数的多重集,每个数代表一个肽段的质量。

  3. 共享峰计数:最简单的相似性度量方法是计算两个谱图共有的峰(即共同的质量)的数量。

  4. 共享峰计数的局限性:当一个肽段包含在另一个肽段内时,这种方法无法识别出相似性,因为它们的谱图会有不同但相关的峰。

  5. 闵可夫斯基和与差:为了克服这一问题,使用了闵可夫斯基和与差。这些操作通过将两个集合(在这个问题中是多重集)的元素相加或相减来结合它们。

光谱卷积

  • 光谱卷积:对于两个谱图(多重集)S1 和 S2,光谱卷积 S1⊖S2 通过从 S2 的每个元素中减去 S1 的每个元素来形成一个新的多重集。光谱卷积有助于确定最大程度上对齐两个谱图的位移值。

解决方法

  1. 计算光谱卷积:对给定的多重集 S1 和 S2 计算S1⊖S2。

  2. 重数:确定 S1⊖S2 中每个元素的重数,即每个差异出现的次数。

  3. 找出最大重数:在卷积中识别出重数最大的元素(或元素)。

  4. 返回值

    • 最大的重数(表示最常见的质量差)。
    • 对应这个重数的质量差的绝对值。

例子:

符号 "⊖" 表示的是两个集合(在这个问题中是多重集)之间的闵可夫斯基差(Minkowski difference)。在质谱分析的上下文中,这表示从一个质谱(S1)中的每个元素减去另一个质谱(S2)中的每个元素。这个操作用于计算两个质谱之间的所有可能的质量差异。

让我们通过一个简化的例子来说明这个概念:

示例

假设我们有两个多重集(简化的质谱):

  • S1={1,2,3}
  • S2={2,3}

我们要计算S1⊖S2,即 S1 中的每个元素减去 S2 中的每个元素。操作如下:

  1. 从 S1 中的第一个元素开始(1),减去 S2 中的每个元素:

    • 1−2=−1
    • 1−3=−2
  2. 接着用 S1 中的下一个元素(2),重复相同的过程:

    • 2−2=0
    • 2−3=−1
  3. 最后,用 S1 中的最后一个元素(3):

    • 3−2=1
    • 3−3=0

因此,S1⊖S2 的结果是一个包含所有这些差值的多重集:

  • {−2,−1,−1,0,0,1}

在这个结果中,每个数字表示S1 和 S2 之间的一个可能的质量差异。例如,-1 表示在S1 中有一个质量比 S2 中相应质量低1的肽段。通过分析这些差异,我们可以了解两个质谱之间的相似性和差异性。

从题目给出的样例中:

我们计算了 S1⊖S2(即从 S1 中的每个元素减去 S2 中的每个元素),并找到了其中重数(即出现频率)最高的元素及其对应的重数。

计算结果显示,最高的重数是 3,对应的质量差是 85.03163。这意味着在这个光谱卷积中,质量差 85.03163 出现了三次,这是所有质量差中出现次数最多的。

因此,根据这个计算方法和样本数据,输出是:

  • 最大重数(即最常见的质量差的出现次数):3
  • 对应这个重数的质量差的绝对值:85.03163

代码:

def read_spectra_from_file(file_path):with open(file_path, 'r') as file:lines = file.readlines()S1 = [float(num) for num in lines[0].split()]S2 = [float(num) for num in lines[1].split()]return S1, S2def spectral_convolution_explicit(S1, S2):convolution = []for s1 in S1:for s2 in S2:diff = round(s1 - s2, 5)convolution.append(diff)frequency_dict = {}for value in convolution:if value in frequency_dict:frequency_dict[value] += 1else:frequency_dict[value] = 1highest_frequency = 0max_mass_differences = []for mass_diff, freq in frequency_dict.items():if freq > highest_frequency:highest_frequency = freqmax_mass_differences = [mass_diff]elif freq == highest_frequency:max_mass_differences.append(mass_diff)return highest_frequency, max_mass_differencesfile_path = ''  # 用文件的实际路径替换这里# 读取文件中的 S1 和 S2
S1, S2 = read_spectra_from_file(file_path)# 计算光谱卷积并找出最大频率
highest_frequency, max_mass_differences = spectral_convolution_explicit(S1, S2)# 输出结果
print("Highest Frequency:", highest_frequency)
print("Mass Differences with Highest Frequency:", max_mass_differences)

这篇关于Rosalind 043 Comparing Spectra with the Spectral Convolution的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583779

相关文章

【tensorflow 使用错误】tensorflow2.0 过程中出现 Error : Failed to get convolution algorithm

如果在使用 tensorflow 过程中出现 Error : Failed to get convolution algorithm ,这是因为显卡内存被耗尽了。 解决办法: 在代码的开头加入如下两句,动态分配显存 physical_device = tf.config.experimental.list_physical_devices("GPU")tf.config.experiment

final_封装_多态_servletJAVA043-047

来源:http://www.bjsxt.com/ 1、S01E043_01final修饰变量、方法和类 (1)修饰变量:常量; (2)修饰方法:该方法不可被子类重写,但可以被重载; (3)修饰类:修饰的类不能有子类,不能被继承。如:Math、String。 2、S01E044_01面向对象三大特性之一:封装/隐藏(encapsulation) (1)封装的作用:隐藏对象内部的复杂性,只

GNN-频域-2014:Spectral Networks and Locally Connected Networks on Graphs(频谱图卷积神经网络)【第一篇从频域角度分析】

《原始论文:Spectral Networks and Locally Connected Networks on Graphs》 空域卷积非常直观地借鉴了图像里的卷积操作,但缺乏一定的理论基础。 而频域卷积则不同,相比于空域卷积而言,它主要利用的是**图傅里叶变换(Graph Fourier Transform)**实现卷积。 简单来讲,它利用图的**拉普拉斯矩阵(Laplacian ma

[深度学习]转置卷积(Transposed Convolution)

一.写在前面 在GAN(Generative Adversarial Nets, 直译为生成式对抗网络)中,生成器G利用随机噪声Z,生成数据。那么,在DCGAN中,这部分是如何实现呢?这里就利用到了Transposed Convolution(直译为转置卷积),也称为Fractional Strided Convolution。那么,接下来,从初学者的角度,用最简单的方式介绍什么是转置卷积,以及

新160个crackme - 043-riijj_cm_20041121

运行分析 除了主程序还有一个dll文件,应该是要加载pf1.dll这个动态链接库运行主程序,需破解Name和Serial,点击注册无反应 PE分析 C++程序,32位,无壳 静态分析&动态调试 尝试ida动调加载动态链接库pf1.dll,弹出错误,推测存在反反调试 使用OD的StrongOD插件绕过反反调试,设置参数如上 程序拖入OD,点击F9,

python 实现convolution neural network卷积神经网络算法

convolution neural network卷积神经网络算法介绍 卷积神经网络(Convolutional Neural Networks, CNN)是一种包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks, FNN),是深度学习的代表算法之一。以下是关于卷积神经网络算法的详细解释: 基本原理 CNN的核心思想是通过模拟人类视觉系统的工作

每日Attention学习16——Multi-layer Multi-scale Dilated Convolution

模块出处 [CBM 22] [link] [code] Do You Need Sharpened Details? Asking MMDC-Net: Multi-layer Multi-scale Dilated Convolution Network For Retinal Vessel Segmentation 模块名称 Multi-layer Multi-scale Dilate

一文彻底搞懂CNN - 卷积和池化(Convolution And Pooling)

Convolutional Neural Network CNN(卷积神经网络)最核心的两大操作就是卷积(Convolution)和池化(Pooling)。卷积用于特征提取,通过卷积核在输入数据上滑动计算加权和;池化用于特征降维,通过聚合统计池化窗口内的元素来减少数据空间大小。 Convolution And Pooling 一、_卷积(Convolution) 卷积(Convol

UnityShader源码2017---学习笔记与自我拓展043

源自Particle Add , Particle Alpha Blend,Particle AddMultiply,Particle AddSmooth,Particle Blend,Particle VertexLit Blended 这几个shader的不同点基本上就在blend和alpha的计算上。   好多东西一直都不愿意去写,但是群里好多人,每隔一段时间就会问一次。。。o(︶︿︶

改进YOLO系列 | Microsoft 团队 | Dynamic Convolution :自适应地调整卷积参数

改进YOLO系列:Microsoft团队的Dynamic Convolution——自适应调整卷积参数的计算机视觉方法(中文综述) 简介 YOLO(You Only Look Once)是一种目标检测算法,以其速度和精度著称。 本文将介绍YOLO系列的改进,包括Microsoft团队提出的Dynamic Convolution(动态卷积)。Dynamic Convolution通过自适应调整卷