蛋白质组学两个定量方法(iBAQ和LFQ)的区别及常见的标准化方法

本文介绍了Maxquant软件在LabelFree蛋白质组学中的LFQ和iBAQ两种定量方法,解释了它们的区别。Intensity为原始强度值,iBAQ用于同样本内蛋白质比较,LFQ则用于跨样本表达差异分析。同时,讨论了数据标准化的几种方法,如Mean、Median、Max、Global和Z-score等规范化策略。
摘要由CSDN通过智能技术生成

1、基于Maxquant软件处理的LabelFree蛋白质组学

首先,在使用Maxquant软件进行查库的时候,有两个参数值得大家关注:LFQ和iBAQ。
当我们在进行搜库时,如果两个参数都选择,将会在结果文件中有三个定量结果:Intensity,IBAQ和LFQ。
接下来,我们来详细解释一下这三个定量结果的区别:

  • Intensity:将Protein Group中的所有Unique和Razor peptides的信号强度求和,作为最原始的强度值
  • iBAQ:基于 Intensity 的强度值,除以该蛋白的理论肽段数目,主要用于同一样本内,不同蛋白的相互比较
  • LFQ:基于 Intensity 的强度值,在不同样本间执行矫正操作,达到降低样本预处理,仪器分析等操作造成的样本间的差异,主要用于同一蛋白,不同样本间的表达差异。比如,不同处理方法间,同一蛋白的表达量变化

2、数据的标准化方法

  1. Mean normalization
    n o r m ( x i ) = x i m e a n ( x ) norm(x_i)=\frac{x_i}{mean(x)} norm(xi)=mean(x)xi
  2. Median normalization
    n o r m ( x i ) = x i m e d i a n ( x ) norm(x_i) = \frac{x_i}{median(x)} norm(xi)=
好的,以下是一个简单的无锁队列的C++实现: ```cpp #include <atomic> #include <iostream> using namespace std; template <typename T> class LockFreeQueue { public: LockFreeQueue() { Node* dummy = new Node(); m_head.store(dummy); m_tail.store(dummy); } ~LockFreeQueue() { while (m_head != m_tail) { Node* next = m_head.load()->next; delete m_head.load(); m_head.store(next); } delete m_head.load(); } void push(T value) { Node* newNode = new Node(value); Node* tail; Node* next; while (true) { tail = m_tail.load(); next = tail->next.load(); if (tail == m_tail) { if (next == nullptr) { if (tail->next.compare_exchange_strong(next, newNode)) { break; } } else { m_tail.compare_exchange_strong(tail, next); } } } m_tail.compare_exchange_strong(tail, newNode); } bool pop(T& value) { Node* head; Node* tail; Node* next; while (true) { head = m_head.load(); tail = m_tail.load(); next = head->next.load(); if (head == m_head) { if (head == tail) { if (next == nullptr) { return false; } m_tail.compare_exchange_strong(tail, next); } else { if (m_head.compare_exchange_strong(head, next)) { value = next->value; delete head; break; } } } } return true; } private: struct Node { T value; atomic<Node*> next; Node() : next(nullptr) {} Node(T value) : value(value), next(nullptr) {} }; atomic<Node*> m_head; atomic<Node*> m_tail; }; int main() { LockFreeQueue<int> lfq; lfq.push(1); lfq.push(2); lfq.push(3); int value; while (lfq.pop(value)) { cout << value << endl; } return 0; } ``` 这里使用了C++11标准中的atomic库,实现了一个无锁队列。队列中的每个节点都是一个包含value和next两个成员的结构体。push()函数将新节点添加到队列尾部,pop()函数从队列头部弹出节点。由于无锁队列的操作是非阻塞的,因此需要使用循环来保证队列的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值