20261002
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ln -sf ../11.reference_v2/raw .
|
||||
cd raw
|
||||
ln -sf Hippophae_tibetana.genomic.fasta HT.fa
|
||||
ln -sf YN.genome.fa YN.fa
|
||||
seqkit grep -f ZG.target.txt ZG.genome.fa > ZG.fa
|
||||
ln -sf ZJ.genome.fa ZJ.fa
|
||||
seqkit grep -f MG.target.txt MG.genome.fasta > MG.fa
|
||||
ln -sf EM.genome.fasta EM.fa
|
||||
cd ..
|
||||
|
||||
bash "$SCRIPTS"/utils/asm_qc.sh raw/ZJ.fa \
|
||||
raw/EM.fa \
|
||||
raw/EA.fa \
|
||||
raw/HT.fa \
|
||||
raw/ZY.fa \
|
||||
raw/ZG.fa \
|
||||
raw/MG.fa \
|
||||
raw/YN.fa \
|
||||
raw/HG.fa \
|
||||
raw/HS.fa \
|
||||
raw/HN.fa > qc.tsvWDw
|
||||
|
||||
##
|
||||
## minimap2 比对:YN 为参考(ZG 含单倍型出局),asm5 档位(属内分歧 0.001-0.007,EA/EM 约 0.03 也覆盖)
|
||||
## ZJ 已剔除(跨科,分歧 0.19);YN 不做自比对
|
||||
##
|
||||
REF=raw/YN.fa
|
||||
mkdir -p paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/HG.fa '>' paf/HG.paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/HN.fa '>' paf/HN.paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/HS.fa '>' paf/HS.paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/HT.fa '>' paf/HT.paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/MG.fa '>' paf/MG.paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/ZG.fa '>' paf/ZG.paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/ZY.fa '>' paf/ZY.paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/EA.fa '>' paf/EA.paf
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/EM.fa '>' paf/EM.paf
|
||||
|
||||
## 覆盖速览(pilot 判档用;asm5 若 EA/EM 覆盖塌,对这两个换 asm10 重跑)
|
||||
for f in paf/*.paf; do
|
||||
awk -v OFS='\t' '{alen += $11; qlen = $2} END {printf "%s\tqlen=%d\taligned=%d\tcov=%.2f%%\n", FILENAME, qlen, alen, alen / qlen * 100}' "$f"
|
||||
done
|
||||
|
||||
## YN 自比对:Dsuite 需要 YN 作样本(自比对产生全纯合参考基因型 VCF)
|
||||
pueue add -- minimap2 -cx asm5 --cs=long -t 8 "$REF" raw/YN.fa '>' paf/YN.paf
|
||||
|
||||
##
|
||||
## PAF 过滤:只留 primary 链(tp:A:P)并按参考坐标排序(paftools call 要求排序输入)
|
||||
## primary 链是一对一共线块的近似;如需严格双向最佳命中,在此之上再加过滤
|
||||
##
|
||||
mkdir -p paf_primary
|
||||
grep 'tp:A:P' paf/HG.paf | sort -k6,6 -k8,8n > paf_primary/HG.paf
|
||||
grep 'tp:A:P' paf/HN.paf | sort -k6,6 -k8,8n > paf_primary/HN.paf
|
||||
grep 'tp:A:P' paf/HS.paf | sort -k6,6 -k8,8n > paf_primary/HS.paf
|
||||
grep 'tp:A:P' paf/HT.paf | sort -k6,6 -k8,8n > paf_primary/HT.paf
|
||||
grep 'tp:A:P' paf/MG.paf | sort -k6,6 -k8,8n > paf_primary/MG.paf
|
||||
grep 'tp:A:P' paf/ZG.paf | sort -k6,6 -k8,8n > paf_primary/ZG.paf
|
||||
grep 'tp:A:P' paf/ZY.paf | sort -k6,6 -k8,8n > paf_primary/ZY.paf
|
||||
grep 'tp:A:P' paf/YN.paf | sort -k6,6 -k8,8n > paf_primary/YN.paf
|
||||
grep 'tp:A:P' paf/EA.paf | sort -k6,6 -k8,8n > paf_primary/EA.paf
|
||||
grep 'tp:A:P' paf/EM.paf | sort -k6,6 -k8,8n > paf_primary/EM.paf
|
||||
|
||||
##
|
||||
## paftools call:每样本一个 VCF(-s 样本名;-l/-L 最小块长阈值,可调)
|
||||
##
|
||||
mkdir -p vcf
|
||||
paftools.js call -s HG -l 5000 -L 10000 paf_primary/HG.paf > vcf/HG.vcf
|
||||
paftools.js call -s HN -l 5000 -L 10000 paf_primary/HN.paf > vcf/HN.vcf
|
||||
paftools.js call -s HS -l 5000 -L 10000 paf_primary/HS.paf > vcf/HS.vcf
|
||||
paftools.js call -s HT -l 5000 -L 10000 paf_primary/HT.paf > vcf/HT.vcf
|
||||
paftools.js call -s MG -l 5000 -L 10000 paf_primary/MG.paf > vcf/MG.vcf
|
||||
paftools.js call -s ZG -l 5000 -L 10000 paf_primary/ZG.paf > vcf/ZG.vcf
|
||||
paftools.js call -s ZY -l 5000 -L 10000 paf_primary/ZY.paf > vcf/ZY.vcf
|
||||
paftools.js call -s YN -l 5000 -L 10000 paf_primary/YN.paf > vcf/YN.vcf
|
||||
paftools.js call -s EA -l 5000 -L 10000 paf_primary/EA.paf > vcf/EA.vcf
|
||||
paftools.js call -s EM -l 5000 -L 10000 paf_primary/EM.paf > vcf/EM.vcf
|
||||
|
||||
bgzip -f vcf/HG.vcf && tabix -f -p vcf vcf/HG.vcf.gz
|
||||
bgzip -f vcf/HN.vcf && tabix -f -p vcf vcf/HN.vcf.gz
|
||||
bgzip -f vcf/HS.vcf && tabix -f -p vcf vcf/HS.vcf.gz
|
||||
bgzip -f vcf/HT.vcf && tabix -f -p vcf vcf/HT.vcf.gz
|
||||
bgzip -f vcf/MG.vcf && tabix -f -p vcf vcf/MG.vcf.gz
|
||||
bgzip -f vcf/ZG.vcf && tabix -f -p vcf vcf/ZG.vcf.gz
|
||||
bgzip -f vcf/ZY.vcf && tabix -f -p vcf vcf/ZY.vcf.gz
|
||||
bgzip -f vcf/YN.vcf && tabix -f -p vcf vcf/YN.vcf.gz
|
||||
bgzip -f vcf/EA.vcf && tabix -f -p vcf vcf/EA.vcf.gz
|
||||
bgzip -f vcf/EM.vcf && tabix -f -p vcf vcf/EM.vcf.gz
|
||||
|
||||
##
|
||||
## 合并为 10 类群多样本 VCF
|
||||
##
|
||||
pueue add -- bcftools merge -O z -o vcf/dsuite.10taxa.vcf.gz vcf/HG.vcf.gz vcf/HN.vcf.gz vcf/HS.vcf.gz vcf/HT.vcf.gz vcf/MG.vcf.gz vcf/ZG.vcf.gz vcf/ZY.vcf.gz vcf/YN.vcf.gz vcf/EA.vcf.gz vcf/EM.vcf.gz
|
||||
tabix -f -p vcf vcf/dsuite.10taxa.vcf.gz
|
||||
|
||||
##
|
||||
## 物种树:主数据集第二套(exclude_all_fs)ASTRAL 树剔除 ZJ
|
||||
## TODO: 剪树工具任选(nw_prune / gotree / R ape),产物放 tree/dsuite.nwk
|
||||
##
|
||||
mkdir -p tree
|
||||
# nw_prune ../14.taxa_phylogeny/exclude_all_fs/species_tree/coal.tre ZJ > tree/dsuite.nwk
|
||||
|
||||
##
|
||||
## SETS 文件:双外类群交叉验证,EA / EM 各标一次 Outgroup
|
||||
##
|
||||
mkdir -p sets dsuite
|
||||
cat > sets/EA_out.txt <<'EOF'
|
||||
HG HG
|
||||
HN HN
|
||||
HS HS
|
||||
HT HT
|
||||
MG MG
|
||||
ZG ZG
|
||||
ZY ZY
|
||||
YN YN
|
||||
EA Outgroup
|
||||
EM EM
|
||||
EOF
|
||||
cat > sets/EM_out.txt <<'EOF'
|
||||
HG HG
|
||||
HN HN
|
||||
HS HS
|
||||
HT HT
|
||||
MG MG
|
||||
ZG ZG
|
||||
ZY ZY
|
||||
YN YN
|
||||
EA EA
|
||||
EM Outgroup
|
||||
EOF
|
||||
|
||||
##
|
||||
## Dtrios + Fbranch(EA / EM 各跑一遍)
|
||||
##
|
||||
pueue add -- Dsuite Dtrios -t tree/dsuite.nwk -o dsuite/EA_out vcf/dsuite.10taxa.vcf.gz sets/EA_out.txt
|
||||
pueue add -- Dsuite Dtrios -t tree/dsuite.nwk -o dsuite/EM_out vcf/dsuite.10taxa.vcf.gz sets/EM_out.txt
|
||||
Dsuite Fbranch tree/dsuite.nwk dsuite/EA_out_tree.txt > dsuite/EA_out_fbranch.txt
|
||||
Dsuite Fbranch tree/dsuite.nwk dsuite/EM_out_tree.txt > dsuite/EM_out_fbranch.txt
|
||||
# dtools.py dsuite/EA_out_fbranch.txt tree/dsuite.nwk
|
||||
# dtools.py dsuite/EM_out_fbranch.txt tree/dsuite.nwk
|
||||
Reference in New Issue
Block a user