最近在做群體結(jié)構(gòu)分析,群體結(jié)構(gòu)三劍客:structure、pac和kinship。這邊我主要用的軟件是structure,畢竟比較老牌,正常一個(gè)K值只要1天時(shí)間,我感覺還能接受。在structure獲得輸出結(jié)果后,需要利用CLUMPP對(duì)多次循環(huán)的K矩陣進(jìn)行合并。
CLUMPP的安裝
官網(wǎng)網(wǎng)址:https://web.stanford.edu/group/rosenberglab/clumpp.html,進(jìn)行簡(jiǎn)單的一個(gè)注冊(cè)之后,就可以跳轉(zhuǎn)到下載鏈接。
下載與安裝
wget https://web.stanford.edu/group/rosenberglab/software/CLUMPP_Linux64.1.1.2.tar.gz
tar zxvf CLUMPP_Linux64.1.1.2.tar.gz #解壓即可用
CLUMPP的使用
- 對(duì)structure的循環(huán)結(jié)果進(jìn)行提取,構(gòu)建成CLUMPP的輸入文件格式。
- CLUMPP的示例數(shù)據(jù)格式為:
在這里插入圖片描述
因?yàn)檫@里他也是K值為3的時(shí)候,所以只有5列。
第1列:材料編號(hào)
第2-4列:K的成分比例
第5列:?jiǎn)沃甑臄?shù)目(通常取1即可)
下面為我提取structure的結(jié)果的一個(gè)腳本,我設(shè)置的循環(huán)數(shù)為5,分別從0-4,結(jié)果文件分別為structure.out.3.0_f,structure.out.3.1_f,structure.out.3.2_f,structure.out.3.3_f,structure.out.3.4_f。
my(@line,$flag,$num,$i);
open OUT, ">241map.popfile"; #文件輸出名
for($i=0;$i<=4;$i++){
$flag=0;
$num=1;
open IN, "structure.out.3.".$i."_f"; # 只針對(duì)K=3
while(<IN>){
chomp;
if(/^Inferred ancestry/){
$flag=1;
}
if($flag==1){
@line=split/\s+/;
if(scalar(@line)==8){
print OUT $num.": ".$line[5]." ".$line[6]." ".$line[7]." 1\n";
}elsif(scalar(@line)==7){
print OUT $num.": ".$line[4]." ".$line[5]." ".$line[6]." 1\n";
}
}
if(/Estimated Allele Frequencies in each cluster/){
$flag=0;
}
$num++;
}
print OUT "\n";
}
- CLUMPP參數(shù)文件設(shè)置
- 初始文件在安裝目錄下的
paramfile,直接cp過來就行,只用修改下面幾個(gè)位置。
在這里插入圖片描述 -
單株時(shí)用的參數(shù),所以我這里選擇是空值
-
structure合并的結(jié)果文件,用上面的那個(gè)腳本提取
-
輸出合并后的Q矩陣
-
相當(dāng)于log文件
-
strutcture時(shí)設(shè)置的K值
-
群體大小
-
循環(huán)數(shù)
- 直接在當(dāng)前目錄運(yùn)行即可
~/software/CLUMPP_Linux64.1.1.2/CLUMPP
結(jié)果文件與輸入文件類似,均為5列,直接提取中間3列數(shù)值去R語言繪圖即可。
在這里插入圖片描述
