脂质组学数据分析¶
一句话说明¶
脂质组学是代谢组学的一个专门分支,专门研究细胞里的脂肪家族——磷脂、甘油三酯、胆固醇等几千种脂质分子。就像给细胞膜做一次全面的"脂肪体检"。
核心知识点¶
要点1:脂质分类体系¶
- LIPID MAPS分类:8大类
- 脂肪酸(FA):最基础的脂质,如棕榈酸、油酸
- 甘油脂(GL):甘油三酯TG,储能分子
- 甘油磷脂(GP):PC、PE、PS等,细胞膜主要成分
- 鞘脂(SP):鞘磷脂SM、神经酰胺Cer,信号分子
- 固醇脂(ST):胆固醇及其酯,激素前体
- 糖脂(SL)、聚酮(PK)、异戊烯脂(PR)
- 命名规则:如 PC 34:1 表示磷脂酰胆碱,两条脂肪酸链共34个碳、1个双键
要点2:脂质组学实验方法¶
- 霰弹枪脂质组学(Shotgun):不经色谱分离,直接进质谱,速度快但分辨率低
- LC-MS/MS脂质组学:液相色谱分离后进质谱,分辨率高,是主流方法
- 正/负离子模式:磷脂在正离子模式给出头基信息,负离子模式给出脂肪酸链信息,两个模式互补
- 特征碎片:PC类在正离子模式下有特征碎片m/z 184(磷酸胆碱头基)
要点3:数据处理工具¶
- LipidSearch:Thermo商业软件,自动鉴定+定量
- MS-DIAL:开源,支持多种采集模式,自带LipidBlast谱库
- LipiDex:开源,基于规则的脂质鉴定
- LION/web:脂质本体富集分析在线工具
- LipidMaps数据库:脂质结构/分类的权威数据库
要点4:脂质组学特殊考量¶
- 同分异构体问题:很多脂质有相同的分子量但不同结构(如sn-1/sn-2位置异构),需要高分辨质谱和特殊碎裂模式区分
- 内标策略:每大类脂质至少配一个同位素内标(如PC-d31、PE-d31)
- 脂质提取:常用Bligh-Dyer法或MTBE法提取
- 数据归一化:通常用类内标归一化(同一大类用同一内标校正)
实战代码¶
# === 脂质组学数据分析流程 ===
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 1. 读取脂质定量数据(已经过MS-DIAL处理)
lipids = pd.read_csv("lipid_quantification.csv", index_col=0) # 行=样本,列=脂质
groups = pd.read_csv("sample_groups.csv", index_col=0) # 样本分组信息
# 2. 按脂质大类汇总
def get_lipid_class(name):
"""从脂质名称提取大类,如 PC 34:1 -> PC"""
return name.split(" ")[0] # 取空格前的类别名
lipid_classes = [get_lipid_class(col) for col in lipids.columns] # 提取每列脂质的大类
# 按大类求和
class_totals = pd.DataFrame(index=lipids.index)
for cls in set(lipid_classes):
cols = [c for c, lc in zip(lipids.columns, lipid_classes) if lc == cls]
class_totals[cls] = lipids[cols].sum(axis=1) # 同大类的脂质浓度求和
# 3. 碳链长度与不饱和度分析
def parse_chain(name):
"""解析碳链信息,如 PC 34:1 -> (34, 1)"""
parts = name.split(" ")
if len(parts) >= 2 and ":" in parts[1]:
carbon, double = parts[1].split(":")
return int(carbon), int(double)
return None, None
chain_info = pd.DataFrame([parse_chain(col) for col in lipids.columns],
columns=["Carbon", "DoubleBond"],
index=lipids.columns)
# 4. 绘制脂质类别占比饼图
class_mean = class_totals.mean() # 各类脂质平均含量
plt.figure(figsize=(8, 8))
plt.pie(class_mean, labels=class_mean.index, autopct='%1.1f%%') # 饼图
plt.title("Lipid Class Distribution")
plt.savefig("lipid_class_pie.png", dpi=150)
# 5. 差异脂质火山图
from scipy.stats import ttest_ind
disease = lipids.loc[groups["Group"] == "Disease"] # 疾病组
control = lipids.loc[groups["Group"] == "Control"] # 对照组
fold_changes = []
p_values = []
for col in lipids.columns:
fc = np.log2(disease[col].mean() / control[col].mean()) # log2倍数变化
_, pval = ttest_ind(disease[col], control[col]) # t检验p值
fold_changes.append(fc)
p_values.append(pval)
# 绘制火山图
plt.figure(figsize=(10, 8))
plt.scatter(fold_changes, -np.log10(p_values), alpha=0.5, s=20) # 散点图
plt.axhline(-np.log10(0.05), color="red", linestyle="--") # p=0.05线
plt.axvline(-1, color="blue", linestyle="--") # FC=-2线
plt.axvline(1, color="blue", linestyle="--") # FC=2线
plt.xlabel("log2(Fold Change)")
plt.ylabel("-log10(p-value)")
plt.title("Lipid Volcano Plot")
plt.savefig("lipid_volcano.png", dpi=150)
面试常问点¶
Q1: 脂质组学和一般代谢组学有什么区别?¶
参考答案:脂质组学是代谢组学的子领域,专门研究脂质。主要区别:一是样品前处理不同,脂质需要有机溶剂提取(Bligh-Dyer/MTBE法),而一般代谢组学用甲醇/水提取;二是色谱方法不同,脂质常用反相C18或C30柱按疏水性分离;三是同分异构体特别多,鉴定更复杂;四是数据分析时要考虑碳链长度、不饱和度等脂质特有的结构信息。
Q2: 为什么说脂质组学对生物膜研究很重要?¶
参考答案:细胞膜主要由磷脂双分子层组成,不同种类的磷脂(PC、PE、PS、PI等)在膜的两侧分布不同,影响膜的流动性、通透性和信号转导。脂质组学可以全面地检测这些磷脂的种类和含量变化,帮助理解膜结构变化如何影响细胞功能。比如在2型糖尿病研究中,细胞膜脂质组成的变化会影响胰岛素受体的功能。
速查卡片¶
| 问题 | 一句话答案 |
|---|---|
| LIPID MAPS分几大类? | 8大类:FA、GL、GP、SP、ST、SL、PK、PR |
| PC 34:1怎么读? | 磷脂酰胆碱,两条链共34碳1个双键 |
| 脂质提取常用方法? | Bligh-Dyer法或MTBE法 |
| 开源脂质分析工具? | MS-DIAL(自带LipidBlast谱库) |
| 内标怎么选? | 每大类配一个氘代/13C标记内标 |
| 正离子模式PC特征碎片? | m/z 184(磷酸胆碱头基) |