1 ssr做群体结构数据准备
2 structure 命令行计算群体结构
1.ssr做群体结构数据准备
原始数据类型

由于原始的SSR标记数据不符合structure输入的格式要求,可以使用我们的python脚本做数据格式转换。
$cat dat2structure.py
#!/usr/bin/env python3
import sys
dat = sys.argv[1]
with open(dat,'r') as f:
num=1
for LN in f:
if num ==1:
print(LN.strip())
num-=1
else:
spl = LN.strip().split()
cnt = len(spl)
#print(' '.join(spl[0:2]))
print(' '.join(spl[0:3]),' '.join([spl[i] for i in range(3,cnt,2)]))
print(' '.join(spl[0:3]),' '.join([spl[i] for i in range(4,cnt,2)]))
经过上面的脚本转换后,转化后的数据格式,由于SSR数据是共显性标记,每两行为一个样本的SSR标记值:

2. structure 命令行计算群体结构
2.1 mainparams主要参数及说明
关键的参数一:

define NUMINDS 162: 此处162代表总样本数
define NUMLOCI 20: 此处20代表总标记数
define MISSING 9: 此处9代表缺失值
关键参数二:

define PHENOTYPE 1: 此处设置为1,使用表型性状
2.2 extraparams使用默认即可
2.3 运行structure命令
for K in {1..10};do (nohup /biodata/02.software/structure/structure -i structure.new.txt -m mainparams -e /biodata/02.software/structure/extraparams -K ${K} -o kk_run1_k${K} &);done # 运行>=2次做后续DeltaK 折线图
2.4 利用structureHarvester做K值评估
小编选择下载structureHarvester.py本地版命令行进行统计,也可在线分析,不用自己再另行绘图。
python /home/hang/software/structureHarvester-master/structureHarvester.py --dir=test/Results/ --out=./LK --evanno
2.5 统计绘制DeltaK折线图,找最佳K值。
下面是我的绘图代码
library(ggplot2)
args = commandArgs(T)
ipt = args[1] # evanno.txt
out = args[2]
dat = read.table(ipt)
func = 'DeltaK = mean(|L"(K)|) / sd(L(K))'
ggplot(dat,aes(x=V1,y=V7)) + geom_point(color='blue',size=rel(2)) + geom_line(color='blue') +
scale_x_continuous(breaks = 1:10,labels = c('',2:9,'')) +
xlab('K') + ylab('Delta K') +
geom_hline(yintercept = 0,color="gray") +
annotate("text", x=5, y=max(dat$V7,na.rm = T)*1.1, parse=F, label=func) +
theme_classic()
ggsave(paste0(out,'_DeltaK.png'),width = 8,height = 6,dpi = 300)
ggsave(paste0(out,'_DeltaK.pdf'),width = 8,height = 6)
可视化结果如下:

2.6 CLUMPP分析
使用CLUMPP对structure分析的重复运算结果进行重复抽样分析。得到最佳K值的Q-matrix结果。在当前目录创建好配置文件(如下:红框内是你需要对应自己数据修改的参数)

关键参数:
运行下列命令即可得到最终K值 Q矩阵:
nohup /biodata/02.software/CLUMPP_Linux64.1.1.2/CLUMPP &
2.7 群体结构图可视化
可选择将CLUMPP的结果传递给distruct,进行structure图形的绘制。这里可使用我们编写的R脚本进行可视化,结果如下:
