# 全课程速查表

> 一张表查所有关键代码、参数、数据库

---

## 一、R包速查

| 包名 | 安装命令 | 用途 | 关键函数 |
|------|----------|------|----------|
| tidyverse | `install.packages("tidyverse")` | 数据处理全家桶 | `%>%`, `filter()`, `ggplot()` |
| GEOquery | `BiocManager::install("GEOquery")` | 下载GEO数据 | `getGEO()` |
| limma | `BiocManager::install("limma")` | 差异分析 | `lmFit()`, `eBayes()` |
| edgeR | `BiocManager::install("edgeR")` | RNA-seq差异分析 | `DGEList()`, `exactTest()` |
| randomForest | `install.packages("randomForest")` | 随机森林 | `randomForest()`, `importance()` |
| glmnet | `install.packages("glmnet")` | LASSO/Ridge | `cv.glmnet()`, `glmnet()` |
| caret | `install.packages("caret")` | ML工具箱 | `train()`, `rfe()`, `createDataPartition()` |
| e1071 | `install.packages("e1071")` | SVM | `svm()` |
| pROC | `install.packages("pROC")` | ROC曲线 | `roc()`, `auc()` |
| clusterProfiler | `BiocManager::install("clusterProfiler")` | 富集分析 | `enrichGO()`, `enrichKEGG()` |
| org.Hs.eg.db | `BiocManager::install("org.Hs.eg.db")` | 人类基因注释 | `bitr()`, `mapIds()` |
| enrichplot | `BiocManager::install("enrichplot")` | 富集可视化 | `dotplot()`, `cnetplot()` |
| STRINGdb | `install.packages("STRINGdb")` | PPI网络 | `get_interactions()`, `plot_network()` |
| igraph | `install.packages("igraph")` | 图论分析 | `graph_from_data_frame()` |
| ggraph | `install.packages("ggraph")` | 网络可视化 | `ggraph()`, `geom_node_point()` |
| pheatmap | `install.packages("pheatmap")` | 热图 | `pheatmap()` |
| ggplot2 | `install.packages("ggplot2")` | 作图 | `ggplot()`, `ggsave()` |
| VennDiagram | `install.packages("VennDiagram")` | 韦恩图 | `venn.diagram()` |
| patchwork | `install.packages("patchwork")` | 拼图 | `+`, `plot_layout()` |

---

## 二、GEO数据下载速查

```r
# 快速下载
library(GEOquery)
gse <- getGEO("GSE38974", GSEMatrix = TRUE, getGPL = FALSE)
expr <- exprs(gse[[1]])
pd <- pData(phenoData(gse[[1]]))

# 提取分组（根据实际列名修改）
group <- pd$characteristics_ch1.1
group <- ifelse(grepl("COPD", group), "COPD", "Control")
```

| 数据集 | 疾病 | 样本 | 平台 |
|--------|------|------|------|
| GSE38974 | COPD | 129 | GPL570 |
| GSE57148 | COPD | 50 | GPL14550 |
| GSE25724 | T2DM | 20 | GPL96 |
| GSE29221 | T2DM | 30 | GPL570 |

| 平台 | 对应R包 | 基因数 |
|------|---------|--------|
| GPL570 | `hgu133plus2.db` | ~54K探针 |
| GPL96 | `hgu133a.db` | ~22K探针 |
| GPL14550 | `hugene11sttranscriptcluster.db` | ~33K探针 |

---

## 三、差异分析速查

```r
# 三步搞定
design <- model.matrix(~ 0 + Group)
contrast <- makeContrasts(COPD_vs_Control = COPD - Control, levels = design)
fit <- lmFit(expr, design) %>% contrasts.fit(contrast) %>% eBayes()
DEGs <- topTable(fit, adjust = "fdr", number = Inf)

# 筛选
DEGs$group <- case_when(
  DEGs$logFC > 1 & DEGs$adj.P.Val < 0.05 ~ "Up",
  DEGs$logFC < -1 & DEGs$adj.P.Val < 0.05 ~ "Down",
  TRUE ~ "NotSig"
)
```

| 参数 | 含义 | 常用值 |
|------|------|--------|
| `log2FC` | 差异倍数 | >1 或 >1.5 |
| `adj.P.Val` | FDR校正p值 | <0.05 |
| `P.Value` | 原始p值 | 不用于筛选 |
| `AveExpr` | 平均表达量 | 参考 |
| `B` | B统计量 | 越大越显著 |

---

## 四、机器学习速查

### 随机森林
```r
randomForest(x = train_x, y = train_y, ntree = 500, 
             mtry = sqrt(ncol(train_x)), importance = TRUE)
importance(rf_model, type = 1)  # MeanDecreaseAccuracy
```

### LASSO
```r
cv.glmnet(x = x_train, y = y_train, family = "binomial", 
          alpha = 1, nfolds = 10)
coef(lasso_model)[,1] != 0  # 非零系数基因
```

### SVM-RFE
```r
rfe(x = train_x, y = train_y, sizes = c(5,10,20,30,50),
    rfeControl = rfeControl(functions = caretFuncs, method = "cv", number = 5),
    method = "svmRadial")
```

| 方法 | 关键输出 | 优势 |
|------|----------|------|
| RF | MeanDecreaseAccuracy | 稳定，抗过拟合 |
| LASSO | 非零系数 | 特征选择直接 |
| SVM-RFE | 递归剔除后最优子集 | 小样本分类强 |

---

## 五、富集分析速查

```r
# Gene Symbol → ENTREZ
gene_df <- bitr(genes, fromType = "SYMBOL", toType = "ENTREZID", OrgDb = org.Hs.eg.db)

# GO
enrichGO(gene = gene_df$ENTREZID, OrgDb = org.Hs.eg.db, ont = "BP", pvalueCutoff = 0.05)

# KEGG
enrichKEGG(gene = gene_df$ENTREZID, organism = 'hsa', pvalueCutoff = 0.05)

# PPI
string_db <- STRINGdb$new(version = "11.5", species = 9606, score_threshold = 700)
```

| 分析 | 数据库 | 可视化 |
|------|--------|--------|
| GO BP/CC/MF | org.Hs.eg.db | `dotplot()`, `cnetplot()` |
| KEGG | KEGG API | `dotplot()` |
| PPI | STRING | `ggraph()`, Cytoscape |
| GSEA | MSigDB | `gseaplot2()` |

---

## 六、实验速查

### CSE制备
- 设备：注射器×2 + 三通阀 + 50mL离心管
- 一支烟抽10次 → 定容25mL = 100% CSE
- -80℃保存，有效期1个月
- 工作浓度：2.5-5%

### 高糖培养基
- 正常：5.5 mM葡萄糖（已含在DMEM中）
- 高糖：额外加D-葡萄糖至终浓度30 mM
- 渗透压对照：5.5 mM葡萄糖 + 24.5 mM D-甘露醇

### qPCR体系（20μL）
| 组分 | 体积 |
|------|------|
| SYBR Mix | 10 μL |
| 上游引物 (10μM) | 0.8 μL |
| 下游引物 (10μM) | 0.8 μL |
| cDNA | 2 μL |
| ddH2O | 6.4 μL |

### Western Blot流程
细胞裂解 → BCA定量 → 煮样 → 电泳(80V→120V) → 湿转(300mA,90min) → 封闭(5%奶粉,1h) → 一抗(4℃过夜) → 二抗(室温1h) → ECL显影

---

## 七、网络药理学速查

| 数据库 | 网址 | 查询内容 |
|--------|------|----------|
| DrugBank | drugbank.ca | 已知药物靶点 |
| TCMSP | tcmsp-e.com | 中药成分靶点 |
| SwissTarget | swisstargetprediction.ch | 化合物靶点预测 |
| STITCH | stitch.embl.de | 化合物-蛋白互作 |
| PubChem | pubchem.ncbi.nlm.nih.gov | 化合物结构 |
| PDB | rcsb.org | 蛋白3D结构 |

### 分子对接
```bash
# AutoDock Vina
vina --receptor protein.pdbqt --ligand drug.pdbqt \
     --center_x 10 --center_y 15 --center_z 20 \
     --size_x 60 --size_y 60 --size_z 60 \
     --out output.pdbqt --log log.txt
```

| 结合能 | 强度 |
|--------|------|
| < -9.0 | 强 |
| -7.0 ~ -9.0 | 中等 |
| -5.0 ~ -7.0 | 弱 |
| > -5.0 | 极弱 |

---

## 八、常用配色

```r
# 色盲友好配色
scale_color_manual(values = c(
  "COPD" = "#E69F00",      # 橙色
  "Control" = "#56B4E9",   # 蓝色
  "Up" = "#F24236",        # 红色
  "Down" = "#2E86AB",      # 蓝色
  "Drug" = "#2E86AB",
  "Gene" = "#F24236",
  "Disease" = "#F6AE2D"
))
```

---

## 九、常见报错速查

| 报错 | 原因 | 解决 |
|------|------|------|
| `object not found` | 变量名拼错 | 检查拼写，先运行赋值 |
| `could not find function` | 包没加载 | `library(包名)` |
| `file not found` | 路径不对 | `getwd()`检查 |
| `NAs introduced` | 数据非数字 | 检查原始数据格式 |
| `+` 一直出现 | 代码不完整 | 按Esc，补全括号 |
| `subscript out of bounds` | 索引超范围 | 检查行列数 |
| `contrasts can be applied` | 因子水平问题 | `make.names()` 或 `droplevels()` |

---

> 📌 打印此表贴在显示器旁，写代码时随时查
