生物信息学研究离不开数据支撑,这些数据库能让你事半功倍! 本文详解常用数据库的检索下载技巧,并提供可直接复用的代码模板。
NCBI GenBank
全球最大的基因序列数据库,收录所有公开的DNA序列
▍数据获取
代码语言:javascript代码运行次数:0运行复制
# 安装Entrez工具套件
conda install -c bioconda entrez-direct
# 批量下载哺乳动物线粒体基因组
esearch -db nucleotide -query "mammalia[ORGN] AND mitochondrion[TITL]" |
efetch -format gb > mt_genomes.gb▍数据类型
核苷酸序列:基因组DNA/mRNA/cDNA注释信息:基因位置、CDS区域、功能描述分类学数据:物种分类层级信息▍数据处理
代码语言:javascript代码运行次数:0运行复制
# 解析GenBank文件
for record in SeqIO.parse("mt_genomes.gb", "genbank"):
# 打印GenBank记录信息
print(f"Accession: {record.id}")
print(f"Organism: {record.annotations['organism']}")
print(f"Sequence length: {len(record.seq)}")
# 提取CDS特征
for feat in record.features:
if feat.type == "CDS":
print(f"Protein ID: {feat.qualifiers['protein_id'][0]}") GEO (Gene Expression Omnibus)
全球最大的基因表达数据仓库,含芯片/RNA-seq等数据
▍数据获取
代码语言:javascript代码运行次数:0运行复制
# 加载 GEOquery 包
library(GEOquery)
# 下载 GSE12345 数据集
gset <- getGEO("GSE12345", GSEMatrix=TRUE, AnnotGPL=TRUE)
# 获取表达矩阵和表型数据
expr <- exprs(gset[[1]])
pdata <- pData(gset[[1]])
# 保存原始数据
write.csv(expr, "expression_matrix.csv")▍数据类型
原始数据:CEL(芯片)、FASTQ(测序)处理数据:标准化后的表达矩阵元数据:实验设计、样本表型信息▍差异表达分析
代码语言:javascript代码运行次数:0运行复制
# 加载limma包
library(limma)# 创建设计矩阵
design <- model.matrix(~0 + pdata$group)
colnames(design) <- levels(pdata$group)
# 线性模型拟合
fit <- lmFit(expr, design)
contrast <- makeContrasts("Treatment-Control", levels=design)
fit2 <- contrasts.fit(fit, contrast)
fit2 <- eBayes(fit2)
# 输出差异基因
topTable(fit2, adjust="BH", number=50)TCGA (The Cancer Genome Atlas)
癌症多组学数据金库,含33种癌症类型数据
▍数据获取
代码语言:javascript代码运行次数:0运行复制
# 安装GDC客户端
curl -LO https://gdc.cancer.gov/files/public/file/gdc-client_v1.6.1_Ubuntu_x64.zip
unzip gdc-client*.zip
# 批量下载RNA-seq数据
./gdc-client download -m manifest.txt --dir tcga_data▍数据类型
基因组数据:VCF(SNP/Indel)、MAF(突变注释)转录组数据:HTSeq-counts/FPKM表观遗传:甲基化β值矩阵临床数据:生存期、TNM分期、治疗响应▍数据分析流程
代码语言:javascript代码运行次数:0运行复制
# 加载 TCGAbiolinks 包
library(TCGAbiolinks)
# 构建查询
query <- GDCquery(
project = "TCGA-BRCA",
data.category = "Transcriptome Profiling",
data.type = "Gene Expression Quantification",
workflow.type = "HTSeq - Counts")
#下载数据
GDCdownload(query)
# 准备 DESeq2 输入
data <- GDCprepare(query)
count_matrix <- assay(data)
# 差异表达分析
dds <- DESeqDataSetFromMatrix(
countData = count_matrix,
colData = colData(data),
design = ~ gender)
dds <- DESeq(dds)
res <- results(dds)UniProt
最权威的蛋白质功能注释数据库
▍数据获取
REST API访问:代码语言:javascript代码运行次数:0运行复制
# 获取人类激酶数据
url = "https://rest.uniprot.org/uniprotkb/search?query=reviewed:true+AND+organism_id:9606+AND+keyword:181"
response = requests.get(url + "&format=tsv")
# 将结果写入文件
open("human_kinases.tsv", "wb").write(response.content)▍数据类型
序列数据:FASTA格式功能注释:亚细胞定位、PTM修饰位点结构信息:跨膜结构域、二硫键位置▍蛋白结构域分析
代码语言:javascript代码运行次数:0运行复制
# 分析序列特性
record = SeqIO.read("P05067.fasta", "fasta")
analyzer = ProtParam.ProteinAnalysis(str(record.seq))
# 输出分子量、等电点及跨膜预测
print(f"分子量: {analyzer.molecular_weight()}")
print(f"等电点: {analyzer.isoelectric_point()}")
print(f"跨膜预测: {analyzer.protein_scale(ProtParam.kd, 9)}")
PDB (Protein Data Bank)
蛋白质结构数据核心库
▍数据获取
代码语言:javascript代码运行次数:0运行复制
# 下载所有分辨率<2.0Å的GPCR结构
wget "https://data.rcsb.org/rest/v1/search?query=rcsb_entry_info.resolution_combined<2&struct_src.title=G+protein-coupled+receptor"▍结构分析
代码语言:javascript代码运行次数:0运行复制
# 解析1HIV结构
parser = PDBParser()
structure = parser.get_structure("1HIV", "1hiv.pdb")
# 遍历二级结构
for model in structure:
for chain in model:
for residue in chain:
if residue.id[0] == " ": # 排除水分子
print(f"{chain.id}:{residue.id[1]} - {residue.secondary_structure}")KEGG Pathway
生物通路分析标准数据库
▍数据获取
代码语言:javascript代码运行次数:0运行复制
# 加载 KEGGREST 包
library(KEGGREST)
# 获取 hsa04110(细胞周期)通路数据
pathway <- keggGet("hsa04110")[[1]]
# 提取所有基因
genes <- sapply(strsplit(pathway$GENE, ";"), function(x) x[1])[seq(2, 100, 2)]
# 将基因列表写入文件
writeLines(genes, "cell_cycle_genes.txt")▍通路富集分析
代码语言:javascript代码运行次数:0运行复制
# 加载 clusterProfiler 包
library(clusterProfiler)
# 准备差异基因列表
deg_genes <- scan("deg_genes.txt", what="")
# GO富集分析
ego <- enrichGO(
gene = deg_genes,
OrgDb = org.Hs.eg.db,
keyType = "SYMBOL",
ont = "BP")
# 可视化
dotplot(ego, showCategory=20)通用数据预处理技巧
代码语言:javascript代码运行次数:0运行复制
# 批量解压 tar.gz 文件
find . -name "*.tar.gz" -exec tar -xzf {} \;
# 合并多个 CSV 文件
awk 'FNR==1 && NR!=1{next;}{print}' *.csv > merged.csv
# 快速查看大型文本文件
zcat large_file.txt.gz | head -n 100Ensembl
▎数据库定位
脊椎动物基因组注释核心平台
▎特色数据
基因结构注释(GTF)变异效应预测(VEP)比较基因组数据▎API调用示例
代码语言:javascript代码运行次数:0运行复制
# 导入 requests 库
import requests
# 设置 API 端点
endpoint = "https://rest.ensembl.org/sequence/id/ENSG00000157764"
# 设置请求头
headers = {"Content-Type": "text/x-fasta"}
# 发送 GET 请求
response = requests.get(endpoint, headers=headers)
# 打印响应的文本
print(response.text)