记录一下今天遇到的一个小报错,在运行ADMIXTURE时按照以前写好的脚本运行居然报错了,看了一下日志信息发现了以下报错:Invalid chromosome code! Use integers.这里要求染色体名称必须是整数形式,让我想起了前几天做GWAS的时候解决的问题,看来加入了indel之后染色体名又不能顺利转化为数字了。废话少说,直接开搞。
less your.vcf|grep -v "#" |awk '{print $1}' |sort -u |awk '{print $1"\tChr"NR}' >chr_name_change.txt #生成染色体名称转化表,我的原本染色体名称类似:Chr01A,在这里只改成了Chr1
vim chr_name_change.txt #我希望把Chr1改成Chr01,但是不知道怎么写代码,只好手动添加
bcftools annotate --rename-chrs chr_name_change.txt your.vcf > chrname_change.vcf #admixture要求染色体名称只能为整数,而plink在处理形如CHR01的染色体时会自动替换为1,但有些染色体格式如CHR01A则不能转化,因此先使用bcftools进行格式转换。
plink --vcf chrname_change.vcf --make-bed --out snp_indel --allow-extra-chr --keep-allele-order --set-missing-var-ids @:# --chr-set 70 #plink转化为bed格式
seq 2 6 | awk '{print "admixture --cv -j2 snp_indel.bed "$1" 1>admix."$1".log 2>&1"}' > admixture.sh
#在vi编辑器下输入
%s/^/nohup /
%s/$/ \&/
sh admixture.sh
ps -aux |grep admixture
大功告成