如何将补充SNP呼叫替换为原始参考/替代SNP呼叫?

时间:2019-03-25 20:17:35

标签: r bioinformatics

我对两种基因型进行了测序,并提取了相应的SNP芯片SNP,以将我们的基因型与完全相同的基因型的公开数据进行比较。我注意到某些SNP必须具有相反的链极性,并且需要翻转。如何使用R检查样本调用是否与参考或替代SNP调用匹配,如果不匹配,则用互补核苷酸替换样本调用?

我尝试合并ifelsechartr,但失败了。

示例数据

test <- data.frame("pos" = 1:5, "ref" = c("A", "T", "C", "C","G"), "alt" = c("G","C", "A", "T", "A"), "sample" = c("A", "A", "C", "G", "G"))
View(test)

+---------+------+-------+----------+
|   pos   | ref  |  alt  | sample1  |
+---------+------+-------+----------+
| 1       | A    | G     | A        |
| 2       | T    | C     | A        |
| 3       | C    | A     | C        |
| 4       | C    | T     | G        |
| 5       | G    | A     | G        |
+---------+------+-------+----------+


所需的输出

+---------+------+-------+----------+
|   pos   | ref  |  alt  | sample1  |
+---------+------+-------+----------+
| 1       | A    | G     | A        |
| 2       | T    | C     | T        |
| 3       | C    | A     | C        |
| 4       | C    | T     | C        |
| 5       | G    | A     | G        |
+---------+------+-------+----------+

3 个答案:

答案 0 :(得分:0)

您可以使用库 dplyr 来操纵数据集。例如,使用mutate(),您可以检查示例调用是否与参考匹配。 然后,您可以使用ifelse()进行一些更改。

library(dplyr)


test %>% 
  mutate(TEST1 = (ref == sample)) %>%
  mutate(sample2 = ifelse(TEST1 == TRUE, ref, sample))

#   pos ref alt sample TEST1
# 1   1   A   G      A  TRUE
# 2   2   T   C      A FALSE
# 3   3   C   A      C  TRUE
# 4   4   C   T      G FALSE
# 5   5   G   A      G  TRUE

答案 1 :(得分:0)

使用 ifelse chartr

ifelse(test$sample == test$ref, test$sample, chartr("ATCG", "TAGC", test$sample))
# [1] "A" "T" "C" "C" "G"

答案 2 :(得分:0)

尽管您在R中寻求解决方案,但您仍可能需要考虑其他工具来翻转钢绞线,特别是如果您需要进行较大规模的加工时。您可以使用Plink和许多其他工具来做到这一点。另外,我可能会寻求从其记录/方法说明中确认公共数据中的链对齐。如果/似乎仅翻转了公共数据集中的某些SNP,那将是可疑的(人们希望同一来源的数据中的对齐方式是一致的)。 另外,如果使用位置参数,则应在公共数据中确认基因组的构建/版本,因为不同的版本也可能引起混淆。最后,我可能还想确保问题中的SNP不是多等位基因,因为它也可能是差异的来源。