查找20%样本中调用的变体

时间:2015-10-08 09:32:44

标签: r statistics bioinformatics

我想在R或Linux中完成这项工作:

我有一个文本格式的矩阵。在此表中,行包含SNP,列包含样本,其中包含基因型和未测量数据(A / A,C / T,0/0)。

我想找到20%样本中调用的变体(即:找到每行中20%样本中观察到的基因型(对于每个SNP),除了0/0)。

              A         B         C         D
1:14773      0/0       0/0       0/0       0/0
1:14907      A/G       A/G       A/A       A/C
1:14930      A/G       A/T       A/G       A/G
1:14933      G/A       0/0       0/0       G/A
1:14948      0/0       0/0       0/0       0/0

1 个答案:

答案 0 :(得分:0)

试试这个:

#dummy data
df <- read.table(text="              A         B         C         D
1:14773      0/0       0/0       0/0       0/0
1:14907      A/G       A/G       A/A       A/C
1:14930      A/G       A/T       A/G       A/G
1:14933      G/A       0/0       0/0       G/A
1:14948      0/0       0/0       0/0       0/0")

#get SNPs with at least 20% call
rownames(df)[rowSums(df != "0/0")/ncol(df) > 0.2]
# output
# [1] "1:14907" "1:14930" "1:14933"

#get frequency for each genotype
sapply(unique(c(t(df))), function(i){
  rowSums(df == i) / ncol(df)
  })

# output
#         0/0  A/G  A/A  A/C  A/T G/A
# 1:14773 1.0 0.00 0.00 0.00 0.00 0.0
# 1:14907 0.0 0.50 0.25 0.25 0.00 0.0
# 1:14930 0.0 0.75 0.00 0.00 0.25 0.0
# 1:14933 0.5 0.00 0.00 0.00 0.00 0.5
# 1:14948 1.0 0.00 0.00 0.00 0.00 0.0