2017-06-07 32 views
0

我已經從包含SNP信息的表創建了一個genind對象。如何將地層信息添加到genind

我需要將人口信息插入這個genind。

我知道哪些個人(通過數字標識)應該進入每個人羣。

我該如何選擇正確的個體並將它們放入不同的羣體?

回答

1

在提問時做出可重複的示例總是有幫助的。

首先,加載必要的庫(肯定它adegenet)
library(adegenet)

首先讓等位基因
alleles <- paste0("0",1:4)

座的設定數量的矢量製作一些假的數據,人均個人,人口數量

nloci <- 10 
nind <- 10 
npops <- 2 

使用for循環,使假的數據集

i <- NULL 
out <- NULL 
for(i in 1:npops){ 
    #there are nind*nloci genotypes in each population 
    #make a 
    gts <- replicate(n = nind*nloci, 
        expr = paste0(sample(x = alleles,size = 1,replace = T), 
           sample(x = alleles,size = 1,replace = T))) 
    gts <- as.data.frame(matrix(data = gts, 
           nrow = nind, ncol = nloci, byrow = T)) 
    #making generic locus colnames() 
    colnames(gts) <- paste("locus_",1:nloci) 
    out <- rbind(out,gts) 
} #end of for loop 
head(out) 

現在轉換是data.frame成genind

obj <- df2genind(out, ploidy=2, ncode=2) 
obj 

注意,row.names()被認爲是個人的ID

現在對於設置的人口,現在注意它的空白

[email protected] 

你只需要一個向量,代表不滿對應每個人的人口。

選項1

如果您的個人ID由人口聚集(如1-10是從POP1和11-20來自POP2),那麼這樣的事情應該工作

pops<- paste0("pop",1:npops) 

設置使用媒介種羣,確保它的一個因素

[email protected] <- as.factor(rep(pops,each=nind)) 
[email protected] 

選項2

如果包含您的SNP信息的原始數據幀(表格)也包含人口信息,則可以使用該數據幀作爲您的向量。如果out看起來像這樣

out$pops <- sample(x = pops,size = nrow(out),replace = T) 
head(out) 

那麼你就可以使用該列作爲載體

[email protected] <- as.factor(out$pops) 
[email protected] 

選項3

另外,如果你有另外的表使你能夠確定哪些人相當於哪些人口,那麼你使用這些信息。它假定第二個表(data.frame)是相同的行數作爲out

下面是一個例子第二表

df <- data.frame(pops = rep(pops,each=nind), 
       id = sample(x = 1:nrow(out),size = nrow(out),replace = F)) 
head(df) 

注意,ID是不是爲了,但他們在out並因此在obj,所以需要df他們以正確的順序後,要由df$id

df <- df[order(df$id),] 
head(df) 

下令

[email protected] <- as.factor(df$pops) 
[email protected] 
+0

非常感謝您對於不包含數據集或示例感到抱歉,我對這一切都是陌生的! 我的問題是,個人ID不是由羣體聚類。 例如,我有個人001,002,003,... 450 我知道有2個人口。 但是人口1是由個人組成的001,006,009,150,... 人口2是由個人002,003,004,005,007,008,010, 組成的。這就是我陷入困境的地方。 再次感謝您的時間! –

+0

沒問題,很高興我能幫助一位遺傳學家。包含SNP信息的表是否也有識別ID和總體的列?或者您是否有另一張表,其中包含兩個不同列的人口和ID信息? – Sardimus

+0

實際上比這更復雜。 我有ID爲行的SNP表。然後我進行聚類分析和MDS來探索我的數據,看到兩個不同的「人口」形成。在這兩種情況下,我都能夠從兩個羣體中提取哪些身份證(兩種身份證相匹配)。我現在需要一種方法來創建一個等級級別,我可以將其插入到AMOV中以證明存在人口分化。我正在考慮創建兩個「人口」插入到genind對象中,然後將其用作我的層次級別。但我不知道該怎麼去做。 –