将marker转成012格式

进行GS前,需要将标记格式转成012格式,0表示低频allele的个数,即M矩阵。在R中有包synbreedSNPassoc能够完成这项工作。

library(tidyverse)
library(synbreed)
library(SNPassoc)
# 准备数据
data("SNPs")
pheno <- SNPs %>% select(id, blood.pre, protein)
genos <- SNPs[,-c(1:5)] %>% `rownames<-`(pheno$id)
pheno$id <- factor(pheno$id)

# synbreed 
G_syn <- create.gpData(geno = as.matrix(genos)) %>% codeGeno() %>% magrittr::extract2("geno")
# snp10001 snp100010 snp100011 snp100012 snp100013
# 1        0         0         0         0         0
# 2        0         0         0         1         0
# 3        0         0         2         0         0
# 4        1         0         0         0         0
# 5        0         0         0         0         0
# SNPassoc
G_snp <- setupSNP(geno,1:ncol(geno),sep="")%>% apply(2,additive)
# snp10001 snp10002 snp10003 snp10004 snp10005
# [1,]        2        2        0        0        2
# [2,]        2        1        0        0        1
# [3,]        2        2        0        0        2
# [4,]        1        2        0        0        2
# [5,]        2        1        0        0        2

这2个包的列的排列方式不同。转换模型也不同:SNPassoc得到的不是M矩阵,而是相反的高频allele矩阵。这2zhong矩阵得到的加性关系矩阵也不同,因此随机效应值也是不一样的。我尝试用2减去G_snp,应该是可以,但分子关系矩阵依然有差别,不再往下细究,建议还是用synbreed。

自编函数

genoTo012 <- function(genotype) {
  allel_all <- genotype %>% str_split("") %>% unlist
  allel_uni=unique(allel_all)
  allel_tab=table(allel_all)
  allel_min=names(allel_tab[which.min(allel_tab)])
  allel_max=allel_uni[allel_uni!=allel_min]
  geno_2=paste0(allel_min,allel_min)
  geno_0=paste0(allel_max,allel_max)
  genotype[which(genotype==geno_0)]=0
  genotype[which(genotype==geno_2)]=2
  genotype[which(genotype!=0&genotype!=2)]=1
  genotype=as.numeric(genotype)
  return(genotype)
}
G_self=apply(genos,2,genoTo012)
> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 22000)

Matrix products: default

Random number generation:
 RNG:     Mersenne-Twister 
 Normal:  Inversion 
 Sample:  Rounding 
 
locale:
[1] LC_COLLATE=Chinese (Simplified)_China.936  LC_CTYPE=Chinese (Simplified)_China.936   
[3] LC_MONETARY=Chinese (Simplified)_China.936 LC_NUMERIC=C                              
[5] LC_TIME=Chinese (Simplified)_China.936    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] forcats_0.5.1    stringr_1.4.0    dplyr_1.0.7      purrr_0.3.4      readr_1.4.0      tidyr_1.1.4     
 [7] tibble_3.1.6     ggplot2_3.3.5    tidyverse_1.3.1  synbreed_0.12-14
loaded via a namespace (and not attached):
 [1] httr_1.4.2           pkgload_1.2.4        jsonlite_1.7.2       foreach_1.5.1       
 [5] modelr_0.1.8         microbenchmark_1.4-7 assertthat_0.2.1     BiocManager_1.30.16 
 [9] cellranger_1.1.0     doBy_4.6.11          remotes_2.4.2        sessioninfo_1.2.2   
[13] pillar_1.6.4         backports_1.4.1      lattice_0.20-38      glue_1.6.0          
[17] rvest_1.0.2          colorspace_2.0-1     Matrix_1.2-17        pkgconfig_2.0.3     
[21] devtools_2.4.3       broom_0.7.11         curry_0.1.1          haven_2.4.1         
[25] scales_1.1.1         processx_3.5.2       qtl_1.48-1           generics_0.1.1      
[29] usethis_2.1.5        ellipsis_0.3.2       cachem_1.0.4         regress_1.3-21      
[33] withr_2.4.3          cli_3.1.0            readxl_1.3.1         magrittr_2.0.1      
[37] crayon_1.4.2         memoise_2.0.1        ps_1.6.0             fs_1.5.0            
[41] fansi_0.5.0          doParallel_1.0.14    MASS_7.3-51.4        xml2_1.3.2          
[45] LDheatmap_0.99-7     pkgbuild_1.3.1       tools_3.6.0          prettyunits_1.1.1   
[49] hms_1.1.1            lifecycle_1.0.1      reprex_2.0.1         munsell_0.5.0       
[53] callr_3.7.0          Deriv_4.1.3          compiler_3.6.0       rlang_0.4.12        
[57] grid_3.6.0           rstudioapi_0.13      iterators_1.0.11     igraph_1.2.6        
[61] testthat_3.0.2       gtable_0.3.0         codetools_0.2-16     abind_1.4-7         
[65] DBI_1.1.2            curl_4.3.1           R6_2.5.1             lubridate_1.7.10    
[69] BGLR_1.0.4           fastmap_1.1.0        utf8_1.2.2           rprojroot_2.0.2     
[73] desc_1.4.0           stringi_1.6.1        parallel_3.6.0       Rcpp_1.0.6          
[77] vctrs_0.3.8          dbplyr_2.1.1         tidyselect_1.1.1 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容