一个可重复使用的 种内/种间共线性分析 与 Ka/Ks 分析流程模板。
本仓库用于整理从 GFF/GFF3 注释文件和 protein FASTA 蛋白序列文件出发,完成 MCScanX 共线性分析、目标基因筛选 以及 Ka/Ks 选择压力分析 的标准流程。
本仓库仅保存分析流程、辅助脚本和示例配置,不包含任何真实基因组数据、注释文件、序列文件或分析结果。
- 🧬 从 GFF/GFF3 和蛋白 FASTA 生成 MCScanX 输入文件
- ⚡ 使用 DIAMOND 进行全基因组蛋白自比对
- 🔗 使用 MCScanX / TBtools 进行共线性分析
- 🎯 从共线性结果中筛选目标基因相关的共线性基因对
- 🧪 提取候选基因对的 CDS 序列用于 Ka/Ks 分析
- 📊 根据 Ka/Ks 结果判断基因对受到的选择压力
.
├── scripts/
│ ├── prepare_mcscanx_inputs.py
│ ├── filter_collinearity_targets.py
│ ├── extract_cds_by_ids.py
│ └── validate_cds_lengths.py
├── configs/
│ ├── targets.example.txt
│ └── kaks_pairs.example.tsv
├── data/
│ ├── raw/ # 本地放原始数据;不会上传 GitHub
│ └── intermediate/ # 中间文件;不会上传 GitHub
├── results/
│ ├── mcscanx/ # MCScanX 结果;不会上传 GitHub
│ └── kaks/ # Ka/Ks 结果;不会上传 GitHub
├── docs/
│ └── workflow.zh-CN.md
├── .gitignore
├── LICENSE
└── README.md
本仓库已经配置 .gitignore,默认不会上传以下敏感或大文件:
*.fa*.fasta*.fna*.gff*.gff3*.gtf*.blast*.dmnd*.collinearitydata/raw/*data/intermediate/*results/*
上传 GitHub 前仍建议运行:
git status确认没有真实序列、真实注释或真实分析结果被加入 Git。
把原始文件放在本地,不提交到 GitHub:
data/raw/genome.gff
data/raw/protein.fasta
data/raw/genome.fasta # 仅 Ka/Ks 需要从 genome + gff 提取 CDS 时使用
python3 scripts/prepare_mcscanx_inputs.py \
--gff data/raw/genome.gff \
--protein data/raw/protein.fasta \
--prefix TK \
--outdir data/intermediate输出:
data/intermediate/TK.clean.protein.fasta
data/intermediate/TK.gff
其中 TK.gff 是 MCScanX 4 列格式:
chromosome/scaffold gene_id/protein_id start end
cd data/intermediate
diamond makedb --in TK.clean.protein.fasta -d TK
diamond blastp -d TK.dmnd -q TK.clean.protein.fasta -o TK.blast -e 1e-5 -k 5 -f 6输出:
TK.blast
打开 TBtools:
Quick Run MCScanX Wrapper
填入:
Input .blast File: data/intermediate/TK.blast
Input .gff File: data/intermediate/TK.gff
Output Directory: results/mcscanx
核心输出:
results/mcscanx/TK.collinearity
准备目标基因列表:
configs/targets.txt
一行一个目标基因/蛋白 ID。
运行:
python3 scripts/filter_collinearity_targets.py \
--collinearity results/mcscanx/TK.collinearity \
--gff data/intermediate/TK.gff \
--targets configs/targets.txt \
--out_prefix results/mcscanx/target_collinearity输出:
results/mcscanx/target_collinearity_pairs.tsv
results/mcscanx/target_collinearity_summary.tsv
准备候选基因对:
configs/kaks_pairs.tsv
格式:
geneA geneB
中间是 Tab。
如果已经有全基因组 CDS FASTA:
python3 scripts/extract_cds_by_ids.py \
--cds data/raw/all.cds.fa \
--ids configs/kaks_ids.txt \
--out results/kaks/target.cds.fa如果没有 CDS FASTA,但有 genome FASTA + GFF,可先用 gffread 提取:
gffread data/raw/genome.gff -g data/raw/genome.fasta -x data/intermediate/all.cds.fapython3 scripts/validate_cds_lengths.py --cds results/kaks/target.cds.fa打开 TBtools:
Simple Ka/Ks Calculator (NG)
填入:
Input CDS File: results/kaks/target.cds.fa
Input GenePair File: configs/kaks_pairs.tsv
Output Table File: results/kaks/kaks.result.tsv
常见解释:
| Ka/Ks | 解释 |
|---|---|
< 1 |
纯化选择,功能较保守 |
≈ 1 |
中性进化 |
> 1 |
正选择,可能存在功能分化 |
NaN |
Ka 和 Ks 不能有效估计,通常不能用于选择压力判断 |
- Python 3
- DIAMOND
- TBtools-II
- 可选:gffread
本模板不包含任何真实研究数据。请勿提交真实序列、真实注释、真实 .blast、真实 .collinearity 或真实 Ka/Ks 结果。