ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

R语言模拟出随机ped和map文件

2022-04-29 18:33:40  阅读:145  来源: 互联网

标签:50000 map 200 模拟出 ped nsnp


 

1、方法1

模拟200个样本, 50000个位点

nsnp <- 50000
nind <- 200
nums <- sample(1:2, nsnp * 2 * nind, replace = T)
snp_matrix <- matrix(nums, nrow = 200)

col_idx <- matrix(1:100000, ncol = 2, byrow = T)

dim(snp_matrix)

base <- sample(c("A", "T", "C", "G"), 2)

for (i in 1:nrow(col_idx)) {
  base <- sample(c("A", "T", "C", "G"), 2)
  snp_matrix[,col_idx[i,]] <- replace(snp_matrix[,col_idx[i,]], which(snp_matrix[,col_idx[i,]] == 1),base[1])
  snp_matrix[,col_idx[i,]] <- replace(snp_matrix[,col_idx[i,]], which(snp_matrix[,col_idx[i,]] == 2),base[2])
  }

fid <- rep("pop1", nind)
iid <- paste0("iid", 1:nind)
pid <- rep(0, nind)
mid <- pid
sex <- sample(1:2, nind, replace = T)
phy <- sample(1:2, nind, replace = T)

resultped <- cbind(fid, iid, pid, mid, sex, phy, snp_matrix)

chr <- rep(1, nsnp)
dis <- rep(0, nsnp)
pos <- sort(sample(1:200000000, nsnp))
snpid <- paste0(chr,":", pos)

resultmap <- cbind(chr, snpid, dis, pos)

write.table(resultped, "result.ped", row.names = F, col.names = F, quote = F, sep = "\t")
write.table(resultmap, "result.map", row.names = F, col.names = F, quote = F, sep = "\t")

 

 

2、方法2

 

标签:50000,map,200,模拟出,ped,nsnp
来源: https://www.cnblogs.com/liujiaxin2018/p/16207678.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有