[{"content":"染色体共线性分析 以 Siler cupreus 和 Portia taiwannica (两种跳蛛) 为例\n1. 物种间共线性分析 数据要求：\n去冗余之后的蛋白质序列 *.faa 基因组注释文件 *.gff 软件要求：MCScanX、mmseqs\n1.1 blast 数据初步处理：只保留 gene ID，去掉 -RA 后的所有内容\nsed 's/-RA.*//' siler.faa \u0026gt; siler_filitered.fa sed 's/-RA.*//' portia.faa \u0026gt; portia_filitered.fa 1.1.1 基于蛋白序列构建blast数据库 mmseqs createdb siler_filitered.fa portia_filitered.fa all_mmseqs.db 1.1.2 使用目标物种的 cds/pep/faa/fa 序列与此前构建的数据库进行比对，结果文件为*.blast mmseqs easy-search all.fa all_mmseqs.db all.blast tmp -s 7.5 --alignment-mode 3 --num-iterations 4 -e 1e-5 --max-accept 5 --threads 70 第三列序列相似性需要百分制，如果全都小于1的话，需扩大100倍\nawk -F'\\t' 'BEGIN{OFS=\u0026quot;\\t\u0026quot;} {$3=sprintf(\u0026quot;%.2f\u0026quot;, $3*100); print}' all.blast \u0026gt; all_m8.blast 最终数据库格式如下：（gene ID 需要简化, 可参考后文替换命令）\nPT00001424\tPT00001424\t100\t278\t0\t0\t1\t278\t1\t278\t2.946E-177\t548 1.2 *.bed 文件准备 要求：每个基因保留一个蛋白序列（通常为主转录本）\n1.2.1 将.gff文件转换成MCScanX所需格式（该命令需根据具体物种调整） MCScanX 不需要原始*gff文件的所有内容，只需要提取其中的第 1, 9, 4, 5 列，其中第 9 列只提取 gene ID 即可\nawk -F \u0026quot;\\t\u0026quot; '{a=substr($9,4,25)}$0~/gene/{print $1 \u0026quot;\\t\u0026quot; a \u0026quot;\\t\u0026quot; $4 \u0026quot;\\t\u0026quot; $5}' siler_maker.gff \u0026gt; siler.gff awk -F \u0026quot;\\t\u0026quot; '{a=substr($9,4,25)}$0~/gene/{print $1 \u0026quot;\\t\u0026quot; a \u0026quot;\\t\u0026quot; $4 \u0026quot;\\t\u0026quot; $5}' portia_maker.gff \u0026gt; portia.gff cat siler.gff portia.gff \u0026gt; all.gff 串联得到的 all.gff 还需进一步调整格式，在这里我查看了文件前 5 行，如下：\nScup_Un155\tSiler_cupreus_00018918;Na\t5062\t30418 Scup_Un155\tSiler_cupreus_00018918-RA\t5062\t30418 Scup_Un110\tSiler_cupreus_00018926;Na\t37738\t48457 Scup_Un110\tSiler_cupreus_00018926-RA\t37738\t48457 Scup_Chr6\tSiler_cupreus_00012661;Na\t359050\t412595 Scup_Chr6\tSiler_cupreus_00012661-RA\t359050\t412595 接下来根据 all.gff 内容，需要作如下调整：\n删除所有带有 “;” 的行 删除所有未成功挂载的染色体（带有 \u0026ldquo;Un\u0026rdquo; 的行） 简化第一列的命名 简化第二列的命名 去重复 #删除所有带有 “;” 的行\ngrep -v \u0026quot;;\u0026quot; all.bed \u0026gt; all1.bed #删除所有未成功挂载的染色体（带有 \u0026ldquo;Un\u0026rdquo; 的行）\ngrep -v \u0026quot;Un\u0026quot; all1.bed \u0026gt; all2.bed #简化第一列的命名\nsed \u0026quot;s/Scup_Chr/sc/g\u0026quot; all2.bed \u0026gt; all3.bed sed 's/Ptai_Chr/Pt/g' all3.bed \u0026gt; all4.bed #简化第二列的命名\n#第二列中 -** 的去除 awk 'BEGIN{OFS=\u0026quot;\\t\u0026quot;} { for (i=1; i\u0026lt;=NF; i++) { sub(/-.*/, \u0026quot;\u0026quot;, $i); } print }' all4.bed \u0026gt; all5.bed #第二列中 gene ID 前缀简化 sed 's/Siler_cupreus_/SC/g' all5.bed \u0026gt; all6.bed sed 's/Portia_taiwanica_/PT/g' all6.bed \u0026gt; all7.bed #去重复\nsort all7.bed | uniq \u0026gt; all.gff 此时得到的all.gff文件如下（当然，在此之前需要删除最初的 all.gff )\npt1\tPT00000001\t923338\t1234673 pt1\tPT00000002\t1283053\t1329480 pt1\tPT00000003\t1423863\t1459005 pt1\tPT00000004\t1510151\t1568055 pt1\tPT00000005\t1568392\t1582644 1.3 运行 MCScanX 将 all.blast 和 all.gff 置于一个单独文件夹（这里使用 data/），运行 MCScanX\nMCScanX data/all -b 2 -s 5 -e 1e-5 注意：\nall.blast 和 all.gff 两个文件命名除了后缀必须完全相同 两个文件中的gene ID 必须完全相同 MCScanX 运行命令在文件夹后必须跟上统一的文件名 1.4 可视化 使用上一步得到的 all.gff 和 all.collinearity 文件\n在 https://www.chiplot.online/ 中绘图\n","date":"2026-01-12T15:52:00Z","image":"https://zyyang0124.github.io/p/synteny-analysis/cover_hu_5f7d7dce956dfc9f.jpg","permalink":"https://zyyang0124.github.io/p/synteny-analysis/","title":"染色体共线性分析"},{"content":"在比较基因组学分析2：CAFE5 基因家族分析中，我们探讨了基因家族扩张和收缩的分析。\n本博文以 node 7 为例，进行功能富集分析。\n1. 获取目的基因 本部分的关键在于合理选择目标基因与背景基因。其中，目标基因通常指在该演化节点上显著扩张的基因家族所包含的所有物种中的对应基因；背景基因则一般选取该节点所涵盖的全部 Orthogroup，用以构建一个适用于该演化节点的参考基因集。\n1.1 获取 node7 显著扩张的基因 # node7 显著扩张的orthogroupsID\rcat Gamma_change_sig0.05.tsv | cut -f1,8 | awk '$2 \u0026gt; 0' | cut -f1 \u0026gt; node7.expand\r# 提取 node7 显著扩张的基因\rgrep -f node7.expand Orthogroups.tsv | cut -f9 | \\\rsed \u0026quot;s/ /\\\\n/g\u0026quot; | sed \u0026quot;s/\\t/\\\\n/g\u0026quot; | sed \u0026quot;s/,//g\u0026quot; | \\\rsort | uniq \u0026gt; node7.expand.genes\r1.2 选择 node7 的背景基因 # node7中存在基因的orthogroupsID\rawk 'NR!=1 \u0026amp;\u0026amp; $8\u0026gt;0 {print $0}' Gamma_count.tab | cut -f1 \u0026gt; node7.orthogroups\rgrep -f node7.orthogroups Orthogroups.tsv | cut -f9 | \\\rsed \u0026quot;s/ /\\n/g\u0026quot; | sed \u0026quot;s/\\t/\\n/g\u0026quot; | sed \u0026quot;s/,//g\u0026quot; | sort | uniq \u0026gt; node7.genes\rnode7.genes 和 node7.expand.genes 即为富集分析所需的目标基因 ID。由于涉及无参物种，需自行构建背景基因集的 GO 与 KEGG 功能注释。\n2. 构建背景基因的 GO 和 KEGG 注释 2.1 GO 和 KEGG 注释 使用 eggong 对背景基因进行注释\n#提取背景基因，需要严格注意基因数是否一致\rseqkit grep -f node7.genes \\\r/home/salticidae/disk_computation/zy_gene_family_evo_analysis/1_orthofinder/proteins/siler.faa \\\r\u0026gt; node7.fa\r/home/salticidae/install/eggnog-mapper-2.1.12/emapper.py \\\r-m diamond -i node7.fa -o node7 --cpu 50\r现在，我们得到node7.emapper.annotations文件，需删除其前三行和所有的 “#”。\n2.2 GO 注释库构建 首先要获取 GO 的基础注释文件。下载完成后，根据分析需求对该文件进行整理与格式修饰，以构建适用于本物种的 GO 注释库。\nwget https://current.geneontology.org/ontology/go-basic.obo\r# 1. 提取GO ID\rgrep \u0026quot;^id:\u0026quot; go-basic.obo | awk '{print $2}' \u0026gt; GO.id\r# 2. 提取GO名称\rgrep \u0026quot;^name:\u0026quot; go-basic.obo | sed 's/^name: //' \u0026gt; GO.name\r# 3. 提取GO分类\rgrep \u0026quot;^namespace:\u0026quot; go-basic.obo | awk '{print $2}' \u0026gt; GO.class\r# 4. 合并三个文件\rpaste GO.id GO.name GO.class -d \u0026quot;\\t\u0026quot; \u0026gt; GO.library\r2.3 KEGG 注释库构建 构建 KEGG 注释库需要获取 KEGG 的层级信息文件：下载 ko00001.json，下载后将其整理为可解析的本地 KEGG 注释文件，以便后续提取 KO 层级关系并用于富集分析。\n# nano kegg_parser.R\r# kegg_parser.R\rlibrary(jsonlite)\rlibrary(purrr)\rlibrary(RCurl)\rlibrary(dplyr)\rlibrary(stringr)\rkegg \u0026lt;- function(json = \u0026quot;ko00001.json\u0026quot;) {\r# 初始化存储对象\rpathway2name \u0026lt;- tibble(Pathway = character(), Name = character())\rko2pathway \u0026lt;- tibble(Ko = character(), Pathway = character())\r# 读取 JSON 数据\rkegg_data \u0026lt;- fromJSON(json)\r# 遍历 KEGG 层级结构\rfor (a in seq_along(kegg_data[[\u0026quot;children\u0026quot;]][[\u0026quot;children\u0026quot;]])) {\rA \u0026lt;- kegg_data[[\u0026quot;children\u0026quot;]][[\u0026quot;name\u0026quot;]][[a]]\rfor (b in seq_along(kegg_data[[\u0026quot;children\u0026quot;]][[\u0026quot;children\u0026quot;]][[a]][[\u0026quot;children\u0026quot;]])) {\rB \u0026lt;- kegg_data[[\u0026quot;children\u0026quot;]][[\u0026quot;children\u0026quot;]][[a]][[\u0026quot;name\u0026quot;]][[b]]\rfor (c in seq_along(kegg_data[[\u0026quot;children\u0026quot;]][[\u0026quot;children\u0026quot;]][[a]][[\u0026quot;children\u0026quot;]][[b]][[\u0026quot;children\u0026quot;]])) {\r# 提取通路信息\rpathway_info \u0026lt;- kegg_data[[\u0026quot;children\u0026quot;]][[\u0026quot;children\u0026quot;]][[a]][[\u0026quot;children\u0026quot;]][[b]][[\u0026quot;name\u0026quot;]][[c]]\r# 提取通路 ID 和名称\rpathway_id \u0026lt;- str_match(pathway_info, \u0026quot;ko[0-9]{5}\u0026quot;)[1]\rpathway_name \u0026lt;- str_replace(pathway_info, \u0026quot; \\\\[PATH:ko[0-9]{5}\\\\]\u0026quot;, \u0026quot;\u0026quot;) %\u0026gt;%\rstr_replace(\u0026quot;[0-9]{5} \u0026quot;, \u0026quot;\u0026quot;)\r# 添加到通路-名称对照表\rpathway2name \u0026lt;- rbind(pathway2name, tibble(Pathway = pathway_id, Name = pathway_name))\r# 提取 KO 信息\rkos_info \u0026lt;- kegg_data[[\u0026quot;children\u0026quot;]][[\u0026quot;children\u0026quot;]][[a]][[\u0026quot;children\u0026quot;]][[b]][[\u0026quot;children\u0026quot;]][[c]][[\u0026quot;name\u0026quot;]]\rkos \u0026lt;- str_match(kos_info, \u0026quot;K[0-9]*\u0026quot;)[,1]\r# 添加到 KO-通路对照表\rko2pathway \u0026lt;- rbind(ko2pathway, tibble(Ko = kos, Pathway = rep(pathway_id, length(kos))))\r}\r}\r}\r# 重命名列\rcolnames(ko2pathway) \u0026lt;- c(\u0026quot;KO\u0026quot;, \u0026quot;Pathway\u0026quot;)\r# 保存结果\rsave(pathway2name, ko2pathway, file = \u0026quot;kegg_info.RData\u0026quot;)\rwrite.table(pathway2name, \u0026quot;KEGG.library\u0026quot;, sep = \u0026quot;\\t\u0026quot;, row.names = F)\r}\r# 调用函数\rkegg(json = \u0026quot;ko00001.json\u0026quot;)\r# Rscript kegg_parser.R\r2.4 构建背景注释 背景注释构建的核心在于将本研究中的基因集与前述整理好的 GO 和 KEGG 注释库进行匹配。通过将各 Orthogroup 中的所有基因与其对应的注释信息关联，可生成适用于富集分析的背景基因注释表，为后续的统计检验提供可靠的参考基准。\n# nano GO_KEGG_annotation.R\r# 加载必要的库\rlibrary(clusterProfiler)\rlibrary(dplyr)\rlibrary(stringr)\roptions(stringsAsFactors = F)\r## STEP1: GO注释生成\r# 首先需要读入文件\regg \u0026lt;- read.delim(\u0026quot;node7.emapper.annotations\u0026quot;, header = T, sep = \u0026quot;\\t\u0026quot;)\regg[egg == \u0026quot;\u0026quot;] \u0026lt;- NA # 将空行变成NA，方便后续的去除\r# 从文件中挑出基因query与eggnog注释信息\r# gene_info \u0026lt;- egg %\u0026gt;% # dplyr::select(GID = query, GENENAME = eggNOG_OGs) %\u0026gt;% na.omit()\r# 挑出query_name与GO注释信息\rgterms \u0026lt;- egg %\u0026gt;% dplyr::select(query, GOs) %\u0026gt;% na.omit()\rgene_ids \u0026lt;- egg$query\reggnog_lines_with_go \u0026lt;- egg$GOs != \u0026quot;\u0026quot;\reggnog_lines_with_go\reggnog_annoations_go \u0026lt;- str_split(egg[eggnog_lines_with_go, ]$GOs, \u0026quot;,\u0026quot;)\rgene2go \u0026lt;- data.frame(\rgene = rep(gene_ids[eggnog_lines_with_go],\rtimes = sapply(eggnog_annoations_go, length)),\rterm = unlist(eggnog_annoations_go)\r)\rnames(gene2go) \u0026lt;- c('gene_id', 'ID')\rgo2name \u0026lt;- read.delim('GO.library', header = FALSE, stringsAsFactors = FALSE)\rnames(go2name) \u0026lt;- c('ID', 'Description', 'Ontology')\rgo_anno \u0026lt;- merge(gene2go, go2name, by = 'ID', all.x = TRUE)\r# 将GO注释信息保存\rsave(go_anno, file = \u0026quot;node7_GO.rda\u0026quot;)\r## STEP2: KEGG注释生成\rgene2ko \u0026lt;- egg %\u0026gt;% dplyr::select(GID = query, KO = KEGG_ko) %\u0026gt;% na.omit()\rpathway2name \u0026lt;- read.delim(\u0026quot;KEGG.library\u0026quot;)\rcolnames(pathway2name) \u0026lt;- c(\u0026quot;Pathway\u0026quot;, \u0026quot;Name\u0026quot;)\rgene2ko$KO \u0026lt;- str_replace(gene2ko$KO, \u0026quot;ko:\u0026quot;, \u0026quot;\u0026quot;)\rgene2pathway \u0026lt;- gene2ko %\u0026gt;% left_join(ko2pathway, by = \u0026quot;KO\u0026quot;) %\u0026gt;% dplyr::select(GID, Pathway) %\u0026gt;% na.omit()\rkegg_anno \u0026lt;- merge(gene2pathway, pathway2name, by = 'Pathway', all.x = TRUE)[, c(2, 1, 3)]\rcolnames(kegg_anno) \u0026lt;- c('gene_id', 'pathway_id', 'pathway_description')\rsave(kegg_anno, file = \u0026quot;node7_KEGG.rda\u0026quot;)\r# Rscript GO_KEGG_annotation.R\r2.5 GO 和 KEGG 富集分析 使用前面构建的 node7_GO.rda、node7_KEGG.rda，以及目标基因文件 node7.expand.genes，即可开展该节点的 GO 与 KEGG 富集分析。后续作图通常只需选择前 10 或前 20 个条目，具体筛选范围可根据实际需求调整。\n## STEP3: GO富集分析\r# 目标基因列表(全部基因)\rgene_select \u0026lt;- read.delim(file = 'node7.expand.genes', stringsAsFactors = FALSE, header = F)$V1\r# GO富集分析\r# 默认以所有注释到GO 的基因为背景集，也可通过 universe 参数输入背景集\r# 默认以p\u0026lt;0.05 为标准，Benjamini 方法校正 p 值，q 值阈值 0.2\r# 默认输出top500 富集结果\r# 如果想输出所有富集结果（不考虑 p 值阈值等），将 p、q 等值设置为 1 即可\r# 或者直接在enrichResult 类对象中直接提取需要的结果\rgo_rich \u0026lt;- enricher(gene = gene_select,\rTERM2GENE = go_anno[c('ID', 'gene_id')],\rTERM2NAME = go_anno[c('ID', 'Description')],\rpvalueCutoff = 1,\rpAdjustMethod = 'BH',\rqvalueCutoff = 1)\r# 输出默认结果，即根据上述 p 值等阈值筛选后的\rtmp \u0026lt;- merge(go_rich, go2name[c('ID', 'Ontology')], by = 'ID')\rtmp \u0026lt;- tmp[c(10, 1:9)]\rtmp \u0026lt;- tmp[order(tmp$pvalue), ]\rwrite.table(tmp, 'node7.expand.GO.xls', sep = '\\t', row.names = FALSE, quote = FALSE)\r## STEP4: KEGG注释\rgene_select \u0026lt;- read.delim('node7.expand.genes', stringsAsFactors = FALSE, header = F)$V1\r# KEGG富集分析\r# 默认以所有注释到KEGG 的基因为背景集，也可通过 universe 参数指定其中的一个子集作为背景集\r# 默认以p\u0026lt;0.05 为标准，Benjamini 方法校正 p 值，q 值阈值 0.2\r# 默认输出top500 富集结果\rkegg_rich \u0026lt;- enricher(gene = gene_select,\rTERM2GENE = kegg_anno[c('pathway_id', 'gene_id')],\rTERM2NAME = kegg_anno[c('pathway_id', 'pathway_description')],\rpvalueCutoff = 1,\rpAdjustMethod = 'BH',\rqvalueCutoff = 1,\rmaxGSSize = 500)\r# 输出默认结果，即根据上述 p 值等阈值筛选后的\rwrite.table(kegg_rich, 'node7.expand.KEGG.xls', sep = '\\t', row.names = FALSE, quote = FALSE)\r清理与注意事项（修改后文本） 在输出的富集结果文件中，需要注意两类问题并进行处理。第一类是重复条目：有些 GO/KEGG 条目在表中出现多次，但其 geneID 列完全相同。遇到这种情况，应保留一条并删除其余重复条目，以避免后续统计与作图时重复计数。第二类是功能背景不匹配的条目：部分显著富集的条目可能与植物有关，而目标研究对象并非植物，这类条目应按实际生物学意义酌情剔除或标注为“可疑/需人工确认”。\n3. 富集结果可视化 在绘图阶段选取富集结果中排名前 20 的条目（TOP20）进行可视化。通过展示这些显著富集的功能类别，可以直观判断在陆生植物出现这一关键进化节点上，哪些基因功能发生了大规模扩张，从而推断其在适应性进化中的潜在作用。\nGO绘图：\nlibrary(ggplot2)\rpathway = read.delim(\u0026quot;node7.expand.GO.xls\u0026quot;, header = T, sep = \u0026quot;\\t\u0026quot;)\rpathway$GeneRatio \u0026lt;- pathway[, 10] / 2434 ## 这个2434是差异基因总数：sort node7.expand.genes | uniq | wc -l\rpathway$log \u0026lt;- -log10(pathway[, 6])\rlibrary(dplyr)\rlibrary(ggrepel)\rGO \u0026lt;- arrange(pathway, pathway[, 6])\rGO_dataset \u0026lt;- GO[1:20, ] # 20即为需要可视化的数量\r# 按照PValue从低到高排序[升序]\rGO_dataset$Description \u0026lt;- factor(GO_dataset$Description, levels = unique(rev(GO_dataset$Description)))\rGO_dataset$GeneRatio \u0026lt;- as.numeric(GO_dataset$GeneRatio)\rGO_dataset$GeneRatio\rGO_dataset$log\r# 图片背景设定\rmytheme \u0026lt;- theme(axis.title = element_text(face = \u0026quot;bold\u0026quot;, size = 8, colour = 'black'), # 坐标轴标题\raxis.text.y = element_text(face = \u0026quot;bold\u0026quot;, size = 6, colour = 'black'), # 坐标轴标签\raxis.text.x = element_text(face = \u0026quot;bold\u0026quot;, color = \u0026quot;black\u0026quot;, angle = 0, vjust = 1, size = 8),\raxis.line = element_line(size = 0.5, colour = 'black'), # 轴线\rpanel.background = element_rect(color = 'black'), # 绘图区边框\rplot.title = element_text(face = \u0026quot;bold\u0026quot;, size = 8, colour = 'black', hjust = 0.8),\rlegend.key = element_blank() # 关闭图例边框\r)\r# 绘制GO气泡图\rp \u0026lt;- ggplot(GO_dataset, aes(x = GeneRatio, y = Description, colour = log, size = Count, shape = Ontology)) + geom_point() + scale_size(range = c(2, 8)) + scale_colour_gradient(low = \u0026quot;#52c2eb\u0026quot;, high = \u0026quot;#EA4F30\u0026quot;) + theme_bw() + labs(x = 'GeneRatio', y = 'GO Terms', # 自定义x、y轴、标题内容\rtitle = 'Enriched GO Terms') + labs(color = expression(-log[10](pvalue))) + theme(legend.title = element_text(size = 8), legend.text = element_text(size = 14)) + theme(axis.title.y = element_text(margin = margin(r = 50)), axis.title.x = element_text(margin = margin(t = 20))) + theme(axis.text.x = element_text(face = \u0026quot;bold\u0026quot;, color = \u0026quot;black\u0026quot;, angle = 0, vjust = 1))\rplot \u0026lt;- p + mytheme\rplot\r# 保存图片\rggsave(plot, filename = \u0026quot;node7.pdf\u0026quot;, width = 210, height = 210, units = \u0026quot;mm\u0026quot;, dpi = 300)\rKEGG绘图：\npathway = read.delim(\u0026quot;node7.expand.KEGG.xls\u0026quot;, header = T, sep = \u0026quot;\\t\u0026quot;)\rpathway$GeneRatio \u0026lt;- pathway[, 9] / 2434\rpathway$log \u0026lt;- -log10(pathway[, 5])\rlibrary(dplyr)\rlibrary(ggrepel)\rKEGG \u0026lt;- arrange(pathway, pathway[, 5])\rKEGG_dataset \u0026lt;- KEGG[1:20, ]\r# Pathway列最好转化成因子型，否则作图时ggplot2会将所有Pathway按字母顺序重排序\r# 将Pathway列转化为因子型\rKEGG_dataset$Description \u0026lt;- factor(KEGG_dataset$Description, levels = rev(KEGG_dataset$Description))\rKEGG_dataset$GeneRatio \u0026lt;- as.numeric(KEGG_dataset$GeneRatio)\rKEGG_dataset \u0026lt;- arrange(KEGG_dataset, KEGG_dataset[, 5])\rKEGG_dataset$GeneRatio\rKEGG_dataset$log\r# 图片背景设定\rmytheme \u0026lt;- theme(axis.title = element_text(face = \u0026quot;bold\u0026quot;, size = 8, colour = 'black'), # 坐标轴标题\raxis.text.y = element_text(face = \u0026quot;bold\u0026quot;, size = 6, colour = 'black'), # 坐标轴标签\raxis.text.x = element_text(face = \u0026quot;bold\u0026quot;, color = \u0026quot;black\u0026quot;, angle = 0, vjust = 1, size = 8),\raxis.line = element_line(size = 0.5, colour = 'black'), # 轴线\rpanel.background = element_rect(color = 'black'), # 绘图区边框\rplot.title = element_text(face = \u0026quot;bold\u0026quot;, size = 8, colour = 'black', hjust = 0.8),\rlegend.key = element_blank() # 关闭图例边框\r)\r# 绘制KEGG气泡图\rp \u0026lt;- ggplot(KEGG_dataset, aes(x = GeneRatio, y = Description, colour = log, size = Count)) + geom_point() + scale_size(range = c(2, 8)) + scale_colour_gradient(low = \u0026quot;#52c2eb\u0026quot;, high = \u0026quot;#EA4F30\u0026quot;) + theme_bw() + labs(x = 'GeneRatio', y = 'KEGG Terms', # 自定义x、y轴、标题内容\rtitle = 'Enriched KEGG Terms') + labs(color = expression(-log[10](pvalue))) + theme(legend.title = element_text(size = 8), legend.text = element_text(size = 14)) + theme(axis.title.y = element_text(margin = margin(r = 50)), axis.title.x = element_text(margin = margin(t = 20))) + theme(axis.text.x = element_text(face = \u0026quot;bold\u0026quot;, color = \u0026quot;black\u0026quot;, angle = 0, vjust = 1))\rplot \u0026lt;- p + mytheme\rplot\r# 保存图片\rggsave(plot, filename = \u0026quot;node7_KEGG.pdf\u0026quot;, width = 210, height = 210, units = \u0026quot;mm\u0026quot;, dpi = 300)\r本文参考： 叨叨陈聊生物\n","date":"2026-01-29T00:00:00Z","image":"https://zyyang0124.github.io/p/comparativegemomics3/1_hu_7ebc4bd8d038e05.JPG","permalink":"https://zyyang0124.github.io/p/comparativegemomics3/","title":"比较基因组学分析3：节点扩张/收缩基因家族富集分析"},{"content":"1. 背景与目的 基因家族扩张与收缩是基因组进化中的重要现象。通过比较不同物种的基因家族大小，可以揭示基因在进化过程中经历的增减变化，进而理解物种如何适应不同生态环境以及其独特的进化机制。基因家族扩张往往与新功能获得、适应性特征的进化相关；而收缩可能反映某些功能的丧失或选择压力的变化。\n2. CAFE5 简介 CAFE5（Computational Analysis of Gene Family Evolution）是一种常用的基因家族进化分析工具，它基于系统发育树和基因家族大小数据，利用最大似然法推测基因家族在各个分支上经历的扩张与收缩事件。该方法不仅可以量化基因家族变化，还可以判断这些变化是否显著，从而帮助研究者识别潜在的功能相关基因家族。\nOrthogroups.GeneCount.tsv 时间树（tree.txt） │ │ └──────────────┬──────────────┘ ▼ CAFE5 输入处理 │ ▼ CAFE5 分析 │ ▼ 输出 Gamma_* 文件 │ ▼ 筛选显著扩张/收缩家族 (Gamma_family_results.txt + Gamma_change.tab) │ ▼ ┌───────────────────────────┐ │ │ sig_change_tsv.py sig_change_map_to_tree.py 输出 Gamma_change_sig.tsv 输出 cleaned_tree_sig_only.txt │ │ ▼ ▼ 后续统计/功能分析 树上可视化显著家族扩张/收缩 3. 输入数据准备 在使用CAFE5时，至少需要准备两个输入文件：\nOrthogroups.GeneCount.tsv：基因家族的计数文件。 tree.txt：系统发育树文件，包含物种分化时间。 3.1 从 OrthoFinder 的 Orthogroups.GeneCount.tsv 生成 CAFE5 输入文件 Orthogroups.GeneCount.tsv 文件用于记录每个基因家族（Orthogroup）在不同物种中的基因拷贝数，是 CAFE5 分析的核心输入之一。该文件通常来自 OrthoFinder 或 OrthoMCL 等软件，其中每一行对应一个基因家族，每一列对应一个物种的基因数量。为了让 CAFE5 正确读取，我们需要对原始文件进行一些格式检查和整理。\ncp ../1_OrthoFinder/Results_Apr18/Orthogroups/Orthogroups.GeneCount.tsv 11.18.cafe sed 's/_//g' Orthogroups.GeneCount.tsv | awk 'BEGIN{OFS=\u0026quot;\\t\u0026quot;} {$NF=\u0026quot;\u0026quot;; print}' | awk '{print \u0026quot;(null)\\t\u0026quot;$$0}' | sed '1s/(null)/Desc/' \u0026gt; cafe.input.tsv 生成之后还需要剔除不同物种间拷贝数差异过大的基因家族，否则会报错，可以使用官方提供的脚本：https://github.com/hahnlab/cafe_tutorial/blob/main/python_scripts/cafetutorial_clade_and_size_filter.py\npython /home/salticidae/install/CAFE5-master/scripts/cafetutorial_clade_and_size_filter.py -i cafe.input.tsv -o gene_family_filter.txt -s 3.2 生成时间树 时间树的构建见博客xxx\n4. 运行 cafe5 CAFE5的运行命令如下：\ncafe5 -i gene_family_filter.txt -t cafe.input.tree -o out_gamma_k1 -c 80 -k 1 -p 一般运行 k=1~5，根据其输出的 Base/Gamma_results.txt 文件判断哪个拟合程度最好。\nlnL（似然值）：越小越好。表征模型拟合度，-lnL 越小、模型越好。 Alpha：是否存在谱系异质性。Alpha 越大，表示更强的“家族进化速率的变异”；如果 Alpha ≈ 0，则说明 Gamma 模型没必要。 失败家族（failure rates \u0026gt;20%）：太多失败说明模型可能不稳定，或某些家族数据异常。 5. 结果解读 Gamma_asr.tre # 每个基因家族的树文件 Gamma_branch_probabilities.tab # 每个分支计算的概率 Gamma_category_likelihoods.txt Gamma_change.tab # 每一个基因家族在每个节点的收缩与扩张数目 Gamma_clade_results.txt # 每个节点基因家族的扩张/收缩数目 Gamma_count.tab # 每一个基因家族在每个节点的数目 Gamma_family_likelihoods.txt Gamma_family_results.txt # 基因家族变化的p值和是否显著的结果 Gamma_report.cafe Gamma_results.txt # 模型，最终似然值，最终Lambda值等参数信息 5.1 每个节点显著收缩/扩张的基因家族数目可视化 将显著扩张/收缩的基因家族数目体现在树上，需要三个文件：\nGamma_family_results.txt Gamma_clade_results.txt Gamma_asr.tre 从cafe5的输出文件 Gamma_asr.tre 中获得树文件，写入 id_tree.txt\n去掉节点多余的内容：\nsed -E 's/(\u0026lt;[0-9]+\u0026gt;)[^:,;)]+/\\1/g' id_tree.txt \u0026gt; cleaned_tree.txt 运行脚本 sig0.05_change_map_to_tree.py\n从 Gamma_family_results.txt 读入显著家族只保留 \u0026ldquo;y\u0026rdquo; 的基因家族； 从 Gamma_change.tab 选取显著家族对应的行； 每个节点分别统计：所有显著家族的扩张数，所有显著家族的收缩数； 最后将其 map 到树上：写入 cleaned_tree_sig0.05_only.txt cat \u0026gt; sig0.05_change_map_to_tree.py \u0026lt;\u0026lt; 'EOF' #!/usr/bin/env python3 import re import pandas as pd # ----------------------------- # 1. 读取显著家族列表 # ----------------------------- sig_fams = set() with open(\u0026quot;Gamma_family_results.txt\u0026quot;) as f: next(f) # 跳过标题 for line in f: parts = line.strip().split() if len(parts) \u0026gt;= 3 and parts[2].lower() == \u0026quot;y\u0026quot;: sig_fams.add(parts[0]) print(f\u0026quot;显著家族数: {len(sig_fams)}\u0026quot;) # ----------------------------- # 2. 读取 CAFE family × node 变化矩阵 # ----------------------------- df = pd.read_csv(\u0026quot;Gamma_change.tab\u0026quot;, sep=\u0026quot;\\t\u0026quot;) node_cols = df.columns[1:] # 第一列是 FamilyID # 仅显著家族 df_sig = df[df[\u0026quot;FamilyID\u0026quot;].isin(sig_fams)] print(f\u0026quot;显著家族矩阵形状: {df_sig.shape}\u0026quot;) # ----------------------------- # 3. 统计显著扩张/收缩的“家族数量” # ----------------------------- node_change = {} for node in node_cols: changes = df_sig[node] inc = (changes \u0026gt; 0).sum() # 扩张家族数量 dec = (changes \u0026lt; 0).sum() # 收缩家族数量 node_change[node] = (int(inc), int(dec)) print(\u0026quot;每个节点显著扩张/收缩数量统计完毕。\u0026quot;) # ----------------------------- # 4. 读取树 # ----------------------------- with open(\u0026quot;cleaned_tree.txt\u0026quot;) as f: tree = f.read() # ----------------------------- # 5. 替换树中的节点名称 # ----------------------------- for node, (inc, dec) in node_change.items(): if inc == 0 and dec == 0: continue # 两者都不显著则跳过 new_label = node if inc \u0026gt; 0: new_label += f\u0026quot;+{inc}\u0026quot; if dec \u0026gt; 0: new_label += f\u0026quot;-{dec}\u0026quot; tree = re.sub(re.escape(node), new_label, tree) # ----------------------------- # 6. 输出 # ----------------------------- with open(\u0026quot;cleaned_tree_sig0.05_only.txt\u0026quot;, \u0026quot;w\u0026quot;) as f: f.write(tree) print(\u0026quot;写入完成：cleaned_tree_sig0.05_only.txt\u0026quot;) EOF python3 sig0.05_change_map_to_tree.py 5.2 过滤每个节点基因家族的扩张/收缩数目文件中不显著的基因家族 运行过滤脚本 sig0.05_change_tsv.py\n以 Gamma_family_results.txt 里显著家族为准，从 Gamma_change.tab 中去掉不显著家族； 输出一个新的 Gamma_change_sig0.05.tsv。 cat \u0026gt; sig0.05_change_tsv.py \u0026lt;\u0026lt; 'EOF' #!/usr/bin/env python3 import pandas as pd # ----------------------------- # 1. 读取显著家族列表 # ----------------------------- sig_fams = set() with open(\u0026quot;Gamma_family_results.txt\u0026quot;) as f: next(f) # 跳过标题 for line in f: parts = line.strip().split() if len(parts) \u0026gt;= 3 and parts[2].lower() == \u0026quot;y\u0026quot;: sig_fams.add(parts[0]) print(f\u0026quot;显著家族数: {len(sig_fams)}\u0026quot;) # ----------------------------- # 2. 读取 Gamma_change.tab # ----------------------------- df = pd.read_csv(\u0026quot;Gamma_change.tab\u0026quot;, sep=\u0026quot;\\t\u0026quot;) # ----------------------------- # 3. 筛选显著家族 # ----------------------------- df_sig = df[df[\u0026quot;FamilyID\u0026quot;].isin(sig_fams)] # ----------------------------- # 4. 输出新的显著家族矩阵 # ----------------------------- output_file = \u0026quot;Gamma_change_sig0.05.tsv\u0026quot; df_sig.to_csv(output_file, sep=\u0026quot;\\t\u0026quot;, index=False) print(f\u0026quot;完成，已生成 {output_file}，仅包含显著家族\u0026quot;) EOF python3 sig0.05_change_tsv.py ","date":"2025-11-21T00:00:00Z","image":"https://zyyang0124.github.io/p/cafe-genefamily1/1_hu_5fbd7ff93f4d4722.JPG","permalink":"https://zyyang0124.github.io/p/cafe-genefamily1/","title":"比较基因组学分析2：基因家族的扩张与收缩"},{"content":"感谢 Wayne P. Maddison 对流程实现的帮助\n前言 系统发育研究常受限于高通量测序（NGS）数据难以覆盖国外物种，导致取样范围不足，影响结果的代表性与说服力。然而，NCBI 等公共数据库中往往已有这些物种的 Sanger 测序数据。针对这一问题，可采用下文策略：从已有的 NGS 数据中“钓取”（bycatch）目标基因的同源序列，将其与 NCBI 下载的 Sanger 序列进行整合，从而构建取样更全面、更具代表性的系统发育树。\n1. 前提条件 确保已安装 BLAST 本流程依赖 BLAST 工具。 BLAST 可能已包含在 Mesquite 安装目录下的 apps 文件夹中。 若未包含，则需在您的计算机上单独安装 BLAST。 准备基因组组装 FASTA 文件 将包含目标基因可能存在的 contig 组装结果（FASTA 格式）放入一个专用目录中。 这些 FASTA 文件是后续 BLAST 搜索的目标数据库。 准备目标序列 下载高质量的目标序列 2. 主要操作步骤 2.1 启动 Mesquite 2.2 将 FASTA 文件转换为 BLAST 可用数据库 在 Mesquite 的 Log 窗口中，选择菜单：Utilities \u0026gt; Make BLASTable Files from FASTA 在弹出的对话框中，选择包含组装 FASTA 文件的目录。 Mesquite 将为该目录中的每个 FASTA 文件生成对应的 BLAST 数据库。 2.3 加载目标序列（Target Sequence） 在 Mesquite 中打开一个包含目标基因序列的文件。 该目标序列应为高质量的已知序列，来自您的研究物种或其近缘种（关系越近，bycatch 结果越好）。 后续将用此序列对上述组装数据库进行 BLAST 比对。 2.4 在矩阵编辑器中选中目标序列行 在 Character Matrix Editor 中，点击选中代表目标序列的那一行。 2.5 启动本地 BLAST 搜索 选择菜单：Matrix \u0026gt; Search \u0026gt; Top BLAST Matches，然后选择 BLAST Local Server。 点击 OK，将弹出 BLAST 配置对话框。 2.6 配置 BLAST 搜索参数 该对话框为通用 BLAST 设置界面，部分选项在此用途下不适用，具体设置如下：\na. “Additional BLAST options”（附加 BLAST 选项）中，无需手动指定最大 E 值（eValue）或字长（word size），这些将在下一步对话框中设置。 b. 取消勾选 BLAST databases in default location（BLAST 数据库位于默认位置）。 c. 在 Path to folder（数据库文件夹路径）中，选择第 2.2 中生成 BLAST 数据库的同一目录（即您的组装 FASTA 所在目录）。 d. Databases to search（要搜索的数据库）默认为 *，表示搜索该目录下所有数据库。如只需搜索部分数据库，可在此处输入具体的数据库名称列表。 e. 关于序列标题（header）格式的注意事项： 某些组装软件（如 CLC）在 FASTA 序列标题中包含物种名，例如：\u0026gt;MySpecies Specimen 2 | NODE 348830\u0026hellip; 而其他软件（如 SPAdes）则不包含，例如：\u0026gt;NODE 348830\u0026hellip; 如果您的组装 FASTA 标题中不包含物种名，建议勾选 Prepend database name to hit names（在命中序列名前添加数据库名）。因为数据库名源自 FASTA 文件名，而文件名通常包含物种信息，此举有助于后续识别来源。 2.7 设置比对与序列导入选项 建议勾选 reverse complement if needed and align imported sequences（如需则反向互补，并对导入序列进行比对），以便直观查看结果。 是否允许内部插入空位（gaps）？ 如果目标序列为蛋白质编码区（如 COI 基因），不要勾选 allow new internal gaps； 如果目标序列包含非编码区，则建议勾选此项。 2.8 执行 BLAST 搜索并导入结果 点击 OK 后，Mesquite 将调用 BLAST 对指定数据库进行搜索； 自动提取满足条件的 contig 序列，并将其作为新行添加到当前矩阵中。 2.9 修剪命中序列 根据目标参考序列，对命中的序列进行修剪 2.10 处理同一物种的多个命中 若某物种有多个 contig 被命中（例如一个 contig 覆盖基因前端，另一个覆盖后端），Mesquite 会为每个 contig 添加独立行。 此时，您可能希望将这些行合并为一条完整序列。Mesquite 将此操作称为 Merge Taxa（合并分类单元）。 合并方式有两种入口： 在 Character Matrix Editor 中：Matrix \u0026gt; Taxon Utilities \u0026gt; Merge Taxa 或在 List of Taxa 窗口中：List \u0026gt; Taxon Utilities \u0026gt; Merge Taxa 手动合并选定行 先在矩阵中选中需要合并的多行； 选择 Taxon Utilities \u0026gt; Merge Selected Taxa； 系统将提供多种合并策略供选择。 按名称自动匹配合并 选择 Taxon Utilities \u0026gt; Merge Taxa by Name Matching； 系统会弹出对话框，询问名称中哪些部分需一致才能视为同一物种（例如前缀、文件名主体等）。 选择合并策略 无论采用手动还是自动匹配方式，下一步都会出现合并选项对话框。 推荐选择：blend：在无冲突位置合并碱基，冲突处标记；或 refuse（拒绝合并重叠区）：保留重叠区域供人工检查。 2.11 导出数据 ","date":"2025-11-04T00:00:00Z","image":"https://zyyang0124.github.io/p/bycatch/1_hu_49741e53819771db.JPG","permalink":"https://zyyang0124.github.io/p/bycatch/","title":"使用 Mesquite 在基因组组装中搜索 Sanger 测序遗留基因"},{"content":"基于 CAFE 的基因家族回溯与功能注释标准流程 代码可参考 : https://github.com/ZyYang0124/Myscripts/blob/main/CAFE/extract_cafe_matrix_results.py 一、流程目标 本流程旨在从 CAFE 输出结果 中识别显著扩张或收缩的基因家族，并通过回溯至基因家族构建与功能注释阶段，确定这些家族的成员组成与潜在功能，从而为基因家族进化分析提供生物学解释。\n二、总体思路 CAFE 仅输出家族编号（如 OG0000001）及其在各物种中的拷贝变化（ΔCopy），但该编号并不携带生物学意义。 因此，需要通过以下路径逐级回溯：\n1 CAFE 输出 → Orthogroups 表 → 基因 ID 列表 → 功能注释文件 → 家族功能解释 最终形成一份包含家族变化、成员组成与注释信息的整合表。\n三、输入文件 文件类型 来源 主要内容 Base_change.tab CAFE 输出 每个基因家族在各物种的拷贝数变化（扩张/收缩） Orthogroups.tsv OrthoFinder（或其他聚类软件） 每个 orthogroup 的成员基因列表（按物种划分） 注释文件（.tsv / .gff3 / .faa） 各物种功能注释结果 每个基因的功能描述、GO、KEGG 等信息 四、标准分析步骤 步骤 1：筛选显著变化的家族 从 Base_change.tab 中选定目标物种； 根据数值阈值（如 ΔCopy ≥ 3 为扩张，ΔCopy ≤ -3 为收缩）筛选对应的家族； 输出扩张和收缩家族的编号列表。 建议同时记录阈值与物种，以确保结果可复现。\n步骤 2：回溯基因家族构成 在 Orthogroups.tsv 文件中查找上述家族编号； 提取对应家族的所有成员基因； 按物种分列整理，获得“家族–基因ID”对应表； 记录每个家族在各物种的成员数量分布。 若多个物种均有显著变化，可分别整理或联合分析。\n步骤 3：提取目标物种的基因列表 从“家族–基因ID表”中提取目标物种的基因ID； 生成每个物种的基因列表文件； 确保基因命名与注释文件中一致（如含物种前缀或转录本编号）。 步骤 4：匹配功能注释信息 依据基因列表，在物种的注释结果中查找对应条目； 提取功能描述、蛋白结构域、GO、KEGG 等注释信息； 整理为“基因–功能”对应表； 若注释文件来源多样（如 eggNOG、InterProScan 等），建议合并后统一字段。 步骤 5：家族功能整合与生物学解释 将注释结果与家族编号对应；\n汇总为以下字段：\nOrthogroup 变化方向 ΔCopy 物种 成员数 基因列表 主要功能注释 对家族进行分类（如代谢相关、感知相关、转录调控相关等）；\n若家族成员功能一致性较高，可直接推断其主要功能；\n若差异较大，可进一步检查序列同源性或蛋白结构域。\n步骤 6：可选的后续分析 分析方向 内容 工具建议 功能富集 基于家族成员的 GO/KEGG 富集分析 GOATOOLS、KOBAS、clusterProfiler 蛋白结构域统计 检查扩张家族中结构域分布模式 InterProScan、Pfam 系统发育可视化 在进化树上标注家族变化情况 iTOL、ETE3 关联基因表达 检查扩张家族基因的表达特征 RNA-seq 数据分析 五、输出成果 显著扩张与收缩家族列表； 各家族的成员基因清单； 基因功能注释表； 家族功能整合汇总表； （可选）富集分析与可视化结果。 六、质量控制与注意事项 编号一致性 确保 CAFE 与 Orthogroups.tsv 的家族编号完全对应； 注释文件准确性 使用统一来源或经过人工校正的注释信息； 阈值设定 ΔCopy 的阈值应结合家族大小与树的分支长度调整； 功能判定 若功能注释模糊，应辅以 BLAST 比对或结构域信息验证； 数据记录 每步操作应记录参数、文件版本和日期，保证溯源性。 七、流程摘要图 1 2 3 4 5 6 7 8 9 10 11 12 13 CAFE 输出 (Base_change.tab) ↓ 筛选显著扩张/收缩家族 ↓ 回溯 Orthogroups.tsv ↓ 获取家族成员基因ID ↓ 匹配注释信息（GFF/FAA/TSV） ↓ 整合功能表并解释生物学意义 ↓ （可选）富集与可视化分析 ","date":"2025-11-04T00:00:00Z","image":"https://zyyang0124.github.io/p/cafe-genefamily/1_hu_159cb2e17c2109bc.jpg","permalink":"https://zyyang0124.github.io/p/cafe-genefamily/","title":"基于 CAFE 的基因家族回溯与功能注释"},{"content":"研究计划报告 项目名称 “动物再生能力与癌症抑制机制的比较基因组学研究”（英文可拟为 Evolutionary genomics of cancer-suppression and regeneration-linked innovation in animals）\n一、研究背景与意义 癌症作为多细胞生物中几乎普遍存在的一种病理状态，其发生机制主要涉及原癌基因（oncogenes）激活、抑癌基因（tumour suppressor genes, TSGs）失活、DNA 修复机制失效、细胞周期控制破坏及免疫监视失败等。在进化过程中，不同物种为维持体细胞稳态、延长寿命、实现大体型或强再生能力，发展出了一系列防癌机制。\n例如，经典的 Peto’s paradox 即指出：理论上体型越大、寿命越长的动物其癌症风险应更高，但实际上并非如此，这提示了进化层面上的癌症抑制机制的存在。 ([boddylab.com][1]) 已有研究表明，如象类在其基因组中具有多个 TP53 样基因拷贝，从而增强DNA损伤响应。 ([boddylab.com][1]) 再如，某些寿命极长或再生能力强的物种可能具备更强的细胞修复机制或更严格的增殖／去分化控制机制。相比之下，当前关于“强再生物种”在癌症相关基因演化层面的研究却相对稀少。\n基于上述现状，本课题拟通过 比较基因组学 方法，系统检视那些具备强再生能力、低癌症报告率或长寿物种中，与癌症相关基因／通路相关的 基因家族扩张／收缩、选择信号、调控演化 等特征。目标在于识别自然界中演化出的“防癌创新机制”，为人类抗癌研究甚至再生医学提供新的思路。\n此研究在理论上具备显著意义：\n将再生生物学与癌症生物学置于进化基因组学框架下，探讨“再生能力—癌症抑制”两者如何在进化中耦合。 有望发现先前未被重视的物种特异防癌机制，从而补充当前以大象、裸鼹鼠、鲸类为主的研究样本。 在技术上由于全基因组数据与转录组数据逐年丰富，具备较强可行性；且你已有比较基因组学经验，能够快速切入。 从应用层面，若能识别出新机制，有可能为抗癌策略（如增强DNA修复、细胞增殖控制、增强微环境稳定性）或再生医学提供“自然模型”启发。 二、研究目标 本课题拟实现以下四个主要目标：\n在代表性的“强再生／低癌率／长寿”动物物种中，识别癌症相关基因（包括原癌基因、抑癌基因、DNA修复通路基因、再生相关信号通路基因）在其基因组中的 基因家族扩张／收缩、编码区序列选择信号、调控元件演化特征。 将上述物种与其近缘但再生能力较弱、寿命较短或癌症报告较多的对照物种进行比较，评估上述基因/通路在两组之间的差异，从生命周期、再生能力、癌症风险角度建立关联。 借助再生过程或伤口修复过程中的 RNA-seq（若可获取）／单细胞转录组数据，验证候选基因在再生/损伤响应阶段中的表达动态，探究其在防癌—再生耦合机制中的潜在角色。 基于第1~3目标所得候选基因/机制，筛选若干具备转化潜力的基因/通路，并提出后续功能验证设计方案（如体外细胞模型、动物模型敲入/敲出实验），为人类抗癌研究或再生治疗提供进化医学启示。 三、研究内容与技术路线 3.1 物种选择与数据采集 强再生／低癌率／长寿组（拟选）例如：两栖再生模型（如 Axolotl Ambystoma mexicanum）、扁形虫模型（如 Schmidtea mediterranea）、鱼类再生模型、寿命极长或低癌率哺乳动物（如 Naked mole‑rat Heterocephalus glaber）等。 对照组：每一个强组物种尽可能对应其近缘、再生弱或寿命短、癌症报告较多的物种。例如：近缘鼠类、无再生/再生弱的两栖、短寿鱼类等。 收集公开的参考基因组（优选染色体级或高质量assembly）、注释（蛋白编码基因、lncRNA）、RNA-seq/再生时间序列（如公开库）、以及公共癌症相关基因集合（如 COSMIC、OncoKB）作为候选基因库。 整理所选物种的生命周期特征（寿命、体型、再生能力、已知癌症发生/报告率）以便后续分析与解释。 3.2 同源群构建与基因家族演化分析 使用工具如 OrthoFinder / OrthoMCL 构建包括上述物种在内的蛋白同源群。 借助 CAFE 或类似软件分析基因家族的扩张/收缩情况（结合物种分支长度校正）。重点分析癌症相关基因库中的家族变化。 对于显著扩张或收缩的家族，提取成员并进行注释（功能、表达、文献支持）。 3.3 序列层面演化分析：选择性和速率 对候选基因家族成员进行多序列比对（如 MAFFT）、构建系统发育树（如 IQ-TREE）以校正比较。 使用 PAML（branch-site模型）、HyPhy（如 aBSREL、RELAX）等检测分支/位点层面的正向选择或选择强度改变（内部对照：再生/强防癌组 vs 对照组）。 分析演化速率差异（例如 dN/dS 比较）以及是否存在自由适应演化信号。 3.4 表达组学整合分析 获取或生成所选再生物种在不同再生阶段或伤口修复阶段的RNA-seq数据。 对候选基因在再生/修复期间的表达变化进行差异表达分析（DESeq2/edgeR）。 构建共表达网络（WGCNA）识别与再生和细胞增殖相关模块，查看候选基因在模块中的位置。 如可获得单细胞数据，进一步解析候选基因在不同细胞类型/状态（去分化、增殖、分化）中的表达特征。 3.5 调控元件与表观遗传分析（扩展） 探索候选基因上游顺式调控元件（如增强子、启动子）在不同物种间的演化（可利用 ATAC-seq/ChIP-seq 数据或基因组注释中的保守元件）。 检查长非编码RNA (lncRNA) 的演化及其在再生物种中与候选基因的共表达关系。 如果数据可得，分析 DNA 甲基化／组蛋白修饰差异与再生/癌症抑制基因表达关联。 3.6 候选机制筛选与功能验证准备 从以上分析中筛选出满足“基因家族扩张（或收缩）+ 在再生物种中显著不同表达 + 有选择性信号”三重条件的优先候选。 为每个优候选拟定功能验证方案（如：在细胞系中敲入/敲出该基因、再生模型中RNAi或CRISPR干扰、检测DNA损伤响应、细胞增殖／凋亡／去分化能力变化、肿瘤转化率变化）。 预备与实验室合作（再生模型/癌症模型）或商业核心平台对接。 四、预期成果与创新点 创新点 首次系统关注 再生能力强的物种 在癌症相关基因组演化层面的特征，填补当前研究多集中于大体型/长寿动物的空白。 从进化基因组学视角连接“再生—细胞增殖—癌症抑制”三大生物学主题，具有高度交叉学科创新。 可能识别出 新的、防癌相关的基因家族扩张或调控机制，这些机制此前在人类癌症研究中可能未被充分关注。 为未来的抗癌策略或再生医学提供 进化启发：即“自然已演化出的机制”可作为人类治疗思路的借鉴。 预期成果 发表至少一篇中高影响力的学术论文（如 Scientific Reports / PNAS 水平）描述再生/低癌率物种癌症相关基因演化特征。 构建一个包含强再生物种及其癌症相关基因演化结果的公共数据库/表格，供后续研究使用。 确定若干优先候选基因/通路，并撰写功能验证研究提案，为下一步实验奠基。 提出一份进化医学视角下的防癌/再生治疗建议草案（未来方向）。 五、研究实施时间表 时间点 主要任务内容 第1年（0–12月） 物种选择、数据收集（基因组、注释、再生RNA-seq等）、生命周期特征整理；构建同源群；进行基因家族扩张/收缩初步分析。 第2年（12–24月） 序列层面演化分析（选择性检测、速率比较）；筛选候选基因家族；如可能，收集再生/伤口修复RNA-seq数据。 第3年（24–36月） 表达组学整合分析（差异表达、模块网络分析）；调控元件初步探索；候选机制筛选。 第4年（36–48月） 功能验证方案设计（并视条件启动）；整理分析结果、撰写并投稿论文；总结研究成果、提出后续转化方向。 六、人员、资源与预算（概要） 人员配置：博士研究生（你本人，主导分析流程）、可能聘请硕士或研究助理一名，负责编程/注释整合；如涉及实验验证，则需与再生/癌症生物学实验室合作。 计算资源：高性能计算集群（用于基因家族、选择性分析、RNA-seq计算等）；大规模存储空间。 数据资源：公开基因组、注释、RNA-seq；如需自生成，则预算包括测序费用。 实验验证（后期）：细胞系培养、CRISPR/siRNA试验、再生模型或动物模型（视后期合作情况）。 预算项：数据购买/测序费用、计算资源收费、外包分析或合作实验费用、会议差旅、出版费。 合作建议：建议与具备再生生物学或癌症生物学实验能力的课题组合作，以提高实验验证可行性。 七、风险分析与应对策略 风险一：选定物种基因组或注释质量不足，影响分析准确性。 应对：优先选择高质量、染色体级别基因组；注释不佳时进行自我注释或转录组辅助注释。 风险二：再生物种的RNA-seq或单细胞数据缺乏，导致表达验证受限。 应对：如数据公开缺少，可考虑自己生成或选择已有数据丰富物种；备用方案为以基因组分析为主，表达作为次级支持。 风险三：演化分析信号（如扩张/选择）与实际防癌机制之间难以建立因果关系。 应对：谨慎解释—将演化结果作为假设生成，而非直接断言机制；优先筛选可做功能验证的候选基因。 风险四：功能验证实验失败或转化困难。 应对：前期筛选阶段严格选择具有文献基础或表达支持的候选；设计实验方案灵活调整（如先体外细胞试验再进动物模型）。 ","date":"2025-10-31T00:00:00Z","image":"https://zyyang0124.github.io/p/old-genome/1_hu_697cf7c47a619560.JPG","permalink":"https://zyyang0124.github.io/p/old-genome/","title":"动物再生能力与癌症抑制机制的比较基因组学研究"},{"content":"燕麦基因组研究与超级品种培育 ——河北大学 杜会龙（2025）\n以群体基因组学为核心范式，含科学思维、实验设计与方法论深度解析\n一、饲草产业困局与燕麦的战略定位 1.1 国家粮食安全与饲草需求的矛盾 全球现状：近一半的小麦、玉米等主粮作物被用作饲料（“清储”），形成“人畜争粮”局面。 中国困境： 优质饲草（如苜蓿、燕麦）严重依赖进口。 可用于饲草种植的土地极度匮乏：粮食主产区耕地受政策保护，不得转为饲草用地。 优异草种资源匮乏：苜蓿、燕麦等核心草种主要依赖进口，自主知识产权品种稀缺。 地方实践瓶颈：传统畜牧业多采用“割草喂养”模式，各地使用本地野生草种，导致饲草体系碎片化，难以形成规模化、标准化研究。 1.2 饲草基础研究的“三无”状态 无系统性种质评价：地方农科院虽有上万份种质资源，但受限于经费与人力，每年仅能评价几十份，筛选效率极低。 无功能基因组学研究：多数饲草物种尚无一篇机制研究文章（即缺乏“基因克隆→上游/下游通路解析→转基因验证→表型改变”的完整证据链）。 无国际大网络：缺乏像水稻、小麦那样的全球协作研究网络，研究力量分散。 1.3 燕麦的独特优势与战略价值 特性 具体表现 双重用途 既是全球第七大粮食作物，又是除苜蓿外最重要的优质饲草。 综合性能 产量高、营养价值高、适口性好。 环境适应性 极强的耐旱性（“靠天收”，全年不灌溉）、耐盐碱、耐贫瘠。 边际土地潜力 中国有15亿亩盐碱地，若燕麦能在其上高效生长，可实现“不与粮争地”，解决粮食与饲草双重短缺。 关键数据：当前燕麦平均亩产约300斤，而团队已筛选出材料可达1000斤，提升潜力巨大。\n二、燕麦研究的三大科学挑战 2.1 基因组复杂性：组装的“不可能任务” 基因组大小：11 Gb（人类基因组仅3 Gb）。 倍性：六倍体（AACCDD），同源染色体配对复杂。 重复序列：高达 87%以上，主要由转座子（TE）构成。 历史背景：在长读长测序技术成熟前，组装一个六倍体燕麦基因组几乎是“不可能完成的任务”。 2.2 功能研究的“零基础” 缺乏高质量参考基因组，导致： 功能基因组学研究滞后：无法进行精准的基因定位与克隆。 分子育种技术落后：转基因效率远低于水稻、玉米等模式作物。 产业影响：高粱、谷子等作物因基因组早解析，产业快速发展；燕麦则因研究滞后，排名持续下降。 2.3 科研投入的“机会成本” 报告人博士毕业时欲做小麦泛基因组，预算需1200万，导师劝阻：“刚毕业就拿千万级项目，若失败将成为学校罪人。” 结果：两年后，国际团队背靠背在《Nature》发表小麦与大麦基因组论文，印证了高投入、高风险项目的巨大回报。 启示：开辟新领域需要勇气与支持，燕麦正是一个尚未被充分开发的“蓝海”。 三、研究策略：构建燕麦研究的“全链条”体系 团队自2022年起，系统性构建从种质收集 → 表型评价 → 基因组解析 → 育种应用的全链条研究体系。\n3.1 种质资源库建设：全球化与系统性 收集规模：全球29个国家，超过10,000份燕麦种子资源。 代表性筛选：基于地理来源、系统发育、表型、遗传多样性，筛选出 2,300份核心种质进行高深度重测序。 产出：构建了代表全球燕麦多样性的高质量基因型变异图谱。 3.2 多年多点表型组学：真实世界的“硬核”数据 试验设计： 连续4年，在河北（含疫情期间校内试验）、山东东营（盐碱地）、青海、宁夏等5个生态区进行种植。 采用单株记录方式，而非传统的大区混收，确保每株的产量、株高、分蘖数、茎粗、叶宽等性状精确可溯。 学生亲自参与数十亩地的播种、管理、收获，工作量巨大。 高通量表型技术： 基于近红外光谱建立非破坏性品质检测体系，可快速预测粗蛋白、中性洗涤纤维等营养成分，替代耗时费力的化学分析。 优异种质筛选成果： 筛选出 60+ 份兼顾高产与优质的食用型种质。 在山东东营盐碱地（8‰–10‰）筛选出 26份强耐盐碱材料，部分材料抗性显著优于主栽品种。 四、核心发现：从基因组到驯化的深层解析 4.1 中国裸燕麦的演化之谜 遗传分化：通过群体基因组分析，发现中国裸燕麦与全球29国的皮燕麦存在明显遗传分化，形成独立类群。 驯化代价： 丢失抗性基因：长期在狭隘的高寒地区种植，导致大量抗病、抗逆基因丢失，解释了为何中国裸燕麦抗性普遍偏低。 富集品质基因：获得了更多与口感、营养相关的优良等位基因，使其更适合作为粮食食用。 历史验证：自1970年代起，我国从国外引进皮燕麦改良本土裸燕麦抗性，与本研究发现完全吻合。 大尺度结构变异：在驱动种群分化、环境适应和表型差异中起关键作用。 4.2 结构变异（SV）：塑造抗逆性的“隐形推手” 主要驱动力：发现转座子（TE）是结构变异的主要来源，贡献了近90%的SV。 插入偏好性： 不同TE家族在插入位置上有明显偏好。 某些TE家族特异性倾向于在基因周围插入。 核心科学问题： “这种偏好是源于TE自身的‘插入选择性’，还是因为插入基因区的TE更易被自然选择‘保留下来’？” 目前尚无定论，是进化生物学的重要课题。\n功能影响： 受SV影响的基因，在胁迫（盐碱、干旱、高低温）下表现出更高的表达可塑性（expression plasticity）。 即：这些基因在正常条件下表达平稳，但在胁迫下能迅速大幅上调，帮助植株应对逆境。 这一机制是燕麦强抗逆性的分子基础之一。 4.3 关键基因的功能验证 通过GWAS与eQTL分析，鉴定多个候选基因。 案例：OaK91基因与耐旱性 在该基因上游发现一个与耐旱性显著相关的结构变异。 实验证明：该SV通过影响转录因子OaK91的结合，调控基因表达水平，最终决定植株的耐旱能力。 五、育种工具开发：从数据到决策 5.1 燕麦综合数据库 内容：整合基因组、转录组、多年多点表型数据。 功能：提供在线GWAS、关联分析、差异表达分析等工具。 目标用户：让不懂生物信息学的育种学家也能便捷使用，促进产学研融合。 5.2 基因组预测大模型（Genomic Prediction Model） 原理：将2,300份材料的基因型（数百万SNP/SV）与多年表型数据结合，训练机器学习模型。 功能： 输入任意材料的基因型，即可预测其未种植时的表型（如株高、产量）。 预测杂交后代的表现，指导最优亲本组合选择。 模型优化： 正在引入上千份材料的大尺度结构变异数据和各类胁迫下的转录组数据，以提高预测精度。 目标是实现“不种地也能育种”，极大缩短育种周期。 六、野生燕麦资源：被遗忘的“基因宝库” 6.1 野生种的价值 栽培作物在驯化过程中遗传多样性急剧下降，丢失了大量抗性基因。 野生燕麦在自然选择压力下，保留了强大的抗病、抗逆、竞争优势。 6.2 燕麦属的物种多样性 共30个野生物种，涵盖二倍体（如CGAA）、四倍体（如AADD, CCDD）、六倍体（如ACCD, DD）。 明星物种： Avena barbata（巴巴塔燕麦）：四倍体，具有广谱抗病性（抗黑粉病、白粉病、锈病）。 Avena fatua（野燕麦）：六倍体，全球恶性入侵杂草，具强竞争力与休眠性。 6.3 野生 vs. 栽培基因组比较 基因含量：野生燕麦比栽培燕麦多出 26.62% 的特异基因 和 59.93% 的特异等位基因。 渗入证据：在部分栽培燕麦中检测到野生基因渗入，证明利用野生种改良栽培种不仅是可行的，而且已在发生。 6.4 驯化关键事件：28 Mb片段的复制 发现：栽培燕麦相比野生燕麦，多出一个约 28兆碱基（Mb）的基因组片段，且发生了复制（两份拷贝）。 意义： 该片段包含多个产量相关基因，包括水稻“绿色革命”基因 SD1 的直系同源基因。 复制后，该区域整体甲基化水平降低，表达水平升高，可能通过“剂量效应”提升产量。 驯化假说： 该复制事件很可能发生在燕麦早期驯化阶段。 全球29国的栽培燕麦均携带此复制，而野生燕麦均无，表明它被早期农民强烈选择并随农业传播至全球。 未来验证：需构建近等基因系（NIL），仅在此片段上存在差异，直接验证其对产量的影响。 七、恶性杂草“野燕麦”（Avena fatua）的反向研究 7.1 危害与威胁 列入中国2023年重点管理入侵物种名录。 对全球50国造成严重威胁，中国每年造成小麦损失 17亿公斤。 具“行走的种子”特性（芒带螺旋，可滚动传播）和强种子休眠性，极难根除。 7.2 抗性机制初探 基因家族扩张：在野燕麦基因组中，谷胱甘肽S-转移酶（GST）家族显著扩张，尤其在D亚基因组的1号和4号染色体。 推测功能：GST参与解毒过程，其扩张可能与强除草剂抗性有关。 科研警示： 仅凭一个个体的基因组差异得出结论是危险的（“两个个体不能代表种群”）。 必须进行大规模种群水平验证，确认该扩张是种群特征，而非个体偶然。 八、总结：培育未来的“超级燕麦” 8.1 已实现的突破 ✅ 建立了中国首个系统的燕麦种质资源库与表型数据库。 ✅ 揭示了中国裸燕麦的驯化历史与遗传代价。 ✅ 发现了结构变异在抗逆性中的核心作用。 ✅ 解析了栽培燕麦28 Mb片段复制这一关键驯化事件。 ✅ 开发了基因组预测模型，推动智慧育种。 8.2 终极目标 培育“超级燕麦”：一种兼具高产、优质、广谱抗逆、适应边际土地的超级品种。 实现农业的“终极梦想”：摆脱对精细化管理（施肥、浇水、打药）的依赖，发展高效、低人工、机械化的可持续农业。 九、科研方法论：杜老师的核心思想与思维训练 9.1 科研的本质：解决问题，而非堆砌技术 杜老师反复强调的核心观点：\n“拿一个基因组，不是为了发文章，而是为了解决问题。” “现在拿一个基因组，可能大家觉得好发文章，可是你们可以去试一试，装一个20G的基因组……能发一个十来分的文章把绝对顶一下了。但关键是，你要解决什么东西？”\n批判“技术主义”：他明确反对学生沉迷于“跑差异表达、做富集分析、画系统发育树”这类“流水线式”的生信分析。 强调“故事性”：科研的核心是讲一个完整、有深度的科学故事。这个故事必须围绕一个核心科学问题展开，例如：“燕麦为何如此耐旱？”、“中国裸燕麦与国外皮燕麦的遗传差异是什么？”、“结构变异如何驱动作物适应性演化？” “无故事，不发文章”：如果研究没有明确的科学问题和叙事逻辑，仅仅是数据的堆砌（如“赛德主学没有出没有故事”），是无法产出高水平论文的。 9.2 实验设计的“四步法”：构建严谨的科研路径 杜老师提出了一套系统性的科研设计框架，适用于任何研究方向：\n步骤 核心问题 杜老师的阐释与实例 1. 技术体系是否存在？ 我要解决这个问题，所需的技术是现成的，还是需要自己搭建？ 实例：燕麦基因组组装在早期是“不可能任务”，因技术（长读长测序）不成熟。团队等待技术进步后才启动，体现了对技术可行性的清醒认知。 2. 是否有核心科学问题？ 这是一个值得研究的“方向”吗？它解决了什么关键问题？ 实例：选择燕麦而非小麦，正是因为燕麦是“0”的状态，有开辟新领域的潜力，而非在已有红海中内卷。 3. 需要哪几步才能解决？ 将大问题拆解为可执行的阶段性目标。 实例：燕麦研究被拆解为：① 收集种质 → ② 表型评价 → ③ 基因组测序 → ④ 构建数据库 → ⑤ 基因挖掘 → ⑥ 育种应用。 4. 前人工作如何借鉴？ 无人能凭空开辟领域，必须站在巨人肩膀上。 实例：借鉴水稻、小麦的基因组研究范式，但应用于燕麦这一“处女地”，实现降维打击。 9.3 科学问题的“提出”与“验证”：警惕“个体偏差”陷阱 这是报告中最具警示意义的科研思维课。\n经典反例：\n“我拿了一个亚洲人和一个欧洲人的基因组一比，发现一个基因是亚洲人特异的，且与智力相关，于是宣称找到了‘人类智慧基因’。” —— 这是极其危险的推理，因为它基于两个个体，无法代表种群。\n杜老师的警示：\n“两个个体不能代表一个种”：任何基于少数样本的发现，都可能是偶然的“噪音”，而非真实的“信号”。 必须进行种群水平的验证： 实例1：发现栽培燕麦有28 Mb片段复制，野生燕麦没有。为证明这是驯化事件，团队收集了全球29国的材料，发现所有栽培燕麦都有此复制，而野生燕麦均无，从而将“个体差异”升华为“种群特征”。 实例2：发现野燕麦GST基因家族扩张。杜老师立即指出：“现在还存在一个问题……你拿两个个体做比较，这个差异是不是种群水平的？” 强调必须进行大规模种群测序验证。 科研的“自我鉴定”：好的研究必须能自我验证。例如，当发现某个基因家族在特定亚基因组扩张时，其他家族应无此现象，这本身就是对结果可信度的检验。\n9.4 博士生的终极目标：从“执行者”到“开创者” 杜老师对博士生的期望远超一般导师：\n“博士毕业时，你能否建立一个课题组，确定一个独一无二的研究方向？”\n这要求博士生具备独立提出科学问题、设计研究路径、整合资源的能力。 他本人博士毕业即开辟燕麦新领域，正是这一理念的践行。 避免“导师延伸”陷阱：\n“你不可能说我之前我的导师是做这个的，好，我延伸一点点……你绝对会死掉。”\n鼓励学生走出舒适区，寻找真正具有区分度（“区别度”）的研究方向。 技术是“可习得的”：\n“技术永远不是问题。问题是你的方向、科学问题、实验设计、逻辑思维……” “生信技术，两三个月全都可以修（学），就如说一天可以学会太九了。”\n强调思维训练远比技术学习重要。博士培养的核心是批判性思维、逻辑推理和问题解决能力。 十、从实验室到田野：科研的“接地气”哲学 杜老师的研究充满“泥土气息”，体现了真正的“把论文写在大地上”。\n10.1 “没见过燕麦，怎么做燕麦研究？” 团队初期连燕麦长什么样都不知道，实验室种植失败。 解决方案：全体老师学生开车去张家口的田里，亲眼观察燕麦的生长状态。 启示：脱离实际的“闭门造车”式研究是危险的。真正的科研必须理解研究对象的真实生态。 10.2 “农业的终极目标” 杜老师提出一个极具颠覆性的愿景： “什么时候我们的作物，像路边的野花野草一样，不需要浇水、施肥、打药，自己就能长得非常好，这才是农业的终极目标。”\n他对比了国内外农业： 国内：农民仍需大量人工投入（挖红薯用铁锹）。 国外：高度机械化，一人可管理数千亩。 目标：培育出“超级燕麦”，不仅高产优质，更能在边际土地上“野蛮生长”，实现高效、低人工的可持续农业。 十一、现代科研的“三重境界”：以群体基因组学为灵魂 杜老师的报告，是一次从“经典遗传学”到“现代群体基因组学”的完美示范。\n11.1 现代科研的“三重境界” 境界 特征 杜老师团队的实践 第一重：个体描述 测一个基因组，描述其结构。 ❌ 避免。强调“两个个体不能代表一个种”。 第二重：群体关联 在群体中寻找基因型与表型的关联。 ✅ 核心。2,300份材料的GWAS、选择清除分析。 第三重：机制解析 对关联区域进行功能验证，阐明生物学机制。 ✅ 升华。如验证OaK91基因SV如何影响耐旱性。 11.2 群体视角下的“变异图谱”：研究的基石 2,300份材料的重测序不是简单的数据堆砌，而是构建了燕麦的“群体变异图谱”。 这张图谱包含了： 单核苷酸变异（SNP） 插入缺失（InDel） 大尺度结构变异（SV）（如28 Mb复制、TE插入） 拷贝数变异（CNV） 核心价值：它使得研究从“描述一个现象”升级为“解析一个规律”。例如，可以研究： 哪些变异在驯化过程中受到选择？ 哪些变异与特定环境（如盐碱地）相关？ 变异如何影响基因表达和最终表型？ 11.3 数据分析的“自我验证”机制 在群体数据中，结果的可靠性可以通过内部一致性来检验。\n实例：在分析野燕麦GST基因家族时，杜老师指出： “大家可以看出基因类1的野生的比栽培的都要多。嗯。大家天，是不是这几个都没有什么显著差别？野生的、栽培的没有什么差别。”\n逻辑：如果只有GST家族扩张，而其他无关家族没有变化，这增加了结果的可信度。如果所有家族都扩张，那可能是技术偏差或系统性误差。 11.4 育种应用：从“经验选择”到“精准预测” 传统育种：基于少数表型数据，经验性选择亲本。 群体基因组育种： 基于2,300份材料的基因型和表型数据，训练基因组预测大模型。 该模型能预测任意材料（或杂交组合）的表型，实现“不种地也能育种”。 这只有在大规模群体数据基础上才可能实现。 十二、核心科学范式：从“个体”到“群体”的基因组学革命 杜老师在报告中多次强调一个颠覆性的观点：\n“两个个体不能代表一个种。” “你拿一个亚洲人和一个欧洲人的基因组一比，就说这是导致人种差异的原因，可能吗？”\n这背后，是他对群体基因组学（Population Genomics） 作为现代生命科学研究唯一可靠范式的深刻理解。\n12.1 “个体基因组”的致命缺陷 在长读长测序普及前，基因组研究多基于单一个体的组装。这种模式存在根本性问题：\n偶然性与噪音：个体间的差异可能是随机突变、测序错误或组装错误，而非真实的生物学信号。 无法区分“种群特征”与“个体特例”：一个在个体A中发现的基因扩张，可能只是该个体的偶然事件，不具有普遍意义。 经典反例： 报告中提到的“大猩猩基因组更新后，发现人特异基因其实大猩猩也有”，导致多年研究推倒重来。 仅凭一个野燕麦和一个栽培燕麦比较，就宣称“GST家族扩张导致抗除草剂”，是极其危险的结论。 12.2 群体基因组学的“四重保险” 杜老师的团队工作，完美诠释了如何通过大规模群体数据规避上述风险，构建可靠的科学结论。\n科学发现 “个体视角”会怎样？ “群体视角”如何验证？ 科学价值 中国裸燕麦的遗传独特性 比较一个中国样本和一个国外样本，可能只是偶然。 基于2,300份全球材料的群体分析，发现中国裸燕麦形成独立聚类，证明其为种群水平的分化。 确立了中国裸燕麦的独立演化地位。 28 Mb片段复制是驯化关键事件 在一个栽培燕麦中发现复制，可能是新发突变。 全球29国的栽培燕麦几乎都含有此复制，而所有野生燕麦均无。证明该事件发生在驯化早期，是被强烈选择的“奠基者事件”。 揭示了燕麦从野生杂草到栽培作物的关键一步。 结构变异（SV）驱动抗逆性 发现某个SV与耐旱相关，可能是假阳性。 在2,300份材料中系统鉴定SV，结合多年多点表型数据进行GWAS，找到与耐旱、耐盐碱等性状显著关联的SV。 将SV从“基因组噪音”提升为“功能元件”。 野生燕麦的基因渗入 在一个栽培品种中发现野生基因，可能是杂交污染。 在多个栽培品种中检测到系统性的野生基因渗入，证明这是育种中普遍存在的现象。 为利用野生种改良栽培种提供了理论依据。 十三、群体视角如何重塑实验设计与数据分析 13.1 从“验证假设”到“探索规律” 传统模式（个体）：提出一个假设（如“基因X影响产量”），然后在少数材料中验证。 群体模式：不预设具体基因，而是通过全基因组关联分析（GWAS）、选择清除分析（Selective Sweep） 等方法，在全基因组范围内无偏地探索与性状相关的区域。 实例：团队没有预先猜测哪个基因控制耐旱，而是通过GWAS，在全基因组中“扫描”出与耐旱性显著关联的SV，再进行功能验证。\n13.2 数据分析的“自我验证”机制 在群体数据中，结果的可靠性可以通过内部一致性来检验。\n实例：在分析野燕麦GST基因家族时，杜老师指出： “大家可以看出基因类1的野生的比栽培的都要多。嗯。大家天，是不是这几个都没有什么显著差别？野生的、栽培的没有什么差别。”\n逻辑：如果只有GST家族扩张，而其他无关家族没有变化，这增加了结果的可信度。如果所有家族都扩张，那可能是技术偏差或系统性误差。 13.3 育种应用：从“经验选择”到“精准预测” 传统育种：基于少数表型数据，经验性选择亲本。 群体基因组育种： 基于2,300份材料的基因型和表型数据，训练基因组预测大模型。 该模型能预测任意材料（或杂交组合）的表型，实现“不种地也能育种”。 这只有在大规模群体数据基础上才可能实现。 十四、总结：一场关于“如何做科研”的全景式教学 杜老师的报告，表面上是燕麦基因组研究的进展汇报，实则是一场关于“如何从0到1开展前沿科研”的全景式教学。\n14.1 一个完整的科研闭环 识别痛点：国家饲草危机、土地短缺。 选择战场：燕麦——兼具粮食与饲草潜力，但研究基础为“0”。 系统构建：从种质收集到数据库建设，打造全链条研究体系。 深度解析：利用组学技术，揭示驯化、抗逆的分子机制。 应用导向：开发育种模型，培育超级品种。 思维贯穿：始终以核心科学问题为导向，警惕逻辑陷阱。 11.2 给科研新人的终极启示 勇气：敢于选择“无人区”，做“从0到1”的工作。 务实：深入田野，理解研究对象的真实世界。 严谨：警惕“个体偏差”，坚持种群水平验证。 智慧：技术服务于问题，思维高于工具。 格局：科研的最终目标是解决国家需求、推动社会进步。 ","date":"2025-10-28T00:00:00Z","image":"https://zyyang0124.github.io/p/oat-genome/1_hu_5bec4e3798b536d6.JPG","permalink":"https://zyyang0124.github.io/p/oat-genome/","title":"燕麦基因组研究与超级品种培育"}]