# ============================================================
# 01_setup.R —— 环境与包安装（对应教程第 06 章）
# 用法：Rscript code/01_setup.R   （建议在 RStudio 中逐段运行）
# 说明：安装过程较长，请耐心等待；已安装的包会自动跳过。
# ============================================================

## 0. 先确保基础工具
if (!requireNamespace("BiocManager", quietly = TRUE)) {
  install.packages("BiocManager")
}

## 1. CRAN 包
cran_pkgs <- c(
  "Seurat",        # v5，单细胞/空间主工具
  "tidyverse",     # 数据整理
  "patchwork",     # 拼图
  "Matrix",        # 稀疏矩阵
  "RColorBrewer",  # 配色
  "circlize",      # 圆形图（CellChat 依赖）
  "devtools"       # 安装 GitHub 包
)
install.packages(cran_pkgs)

## 2. Bioconductor 包
bioc_pkgs <- c(
  "SingleCellExperiment",  # 单细胞数据容器
  "SpatialExperiment",     # 空间数据容器（BayesSpace 需要）
  "BayesSpace",            # 空间聚类（生态位识别）
  "ComplexHeatmap"         # 热图
)
BiocManager::install(bioc_pkgs)

## 3. CellChat v2（从 GitHub 安装，务必装 v2 而不是旧版 CRAN 版本）
if (!requireNamespace("CellChat", quietly = TRUE)) {
  devtools::install_github("jinworks/CellChat")
}

## 4. 中文字体支持（Windows：让 ggplot2 能显示中文）
if (!requireNamespace("showtext", quietly = TRUE)) {
  install.packages("showtext")
}

## 5. 验证安装
library(Seurat)
cat("Seurat 版本：", as.character(packageVersion("Seurat")), "\n")
library(CellChat)
cat("CellChat 版本：", as.character(packageVersion("CellChat")), "\n")
library(BayesSpace)
cat("BayesSpace 版本：", as.character(packageVersion("BayesSpace")), "\n")
library(SingleCellExperiment)
library(SpatialExperiment)
cat("全部核心包安装成功！\n")
