首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择唯一定位到SNP的基因

选择唯一定位到SNP的基因
EN

Stack Overflow用户
提问于 2022-03-02 00:29:39
回答 1查看 58关注 0票数 0

我有一个vcf,想要选择100个基因,每个基因,选择一个SNP?从技术上讲,如果我们考虑一个基因,它就有许多rsid被映射到它上。在我的分析中,我需要选择100个基因,每个基因只为它选择一个SNP,而忽略其他的,并且有一个最后的vcf文件,只有100个基因唯一地映射到1 rsid。有什么包裹可以这样做吗?

22 16050075 rs587697622 A G 100.0传球

AC=1;AF=0.000199681;AN=5008;NS=2504;DP=8012;EAS_AF=0;AMR_AF=0;AFR_AF=0;EUR_AF=0;SAS_A F=0.001;AA=.|||;VT=SNP;ANN=G|intergenic_region|MODIFIER|CHR_START-LA16c-4G1.3|CHR_START-ENSG00000233866|intergenic_region|CHR_START-ENSG00000233866|||n.16050 075A>G|||||| GT

这就是我想要做的:库(VcfR)

代码语言:javascript
运行
复制
# Import VCF
my.vcf <- read.vcfR('my.vcf.gz')
# Combine CHROM thru FILTER cols + INFO cols
my.vcf.df <- cbind(as.data.frame(getFIX(my.vcf)), INFO2df(my.vcf))
data_new <- my.vcf.df[!duplicated(my.vcf.df[ ,"ANN"]),]

我的数据集是这样的:

如您所见,ANN列有几个ENSG00000233866值。我想根据ANN值(即基因ID )过滤df,所以对于ENSG00000233866,我只想选择一个或几个rsid或rs值,而忽略其他值。对于其他基因,我也想这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-03 02:07:17

考虑一下str.splitANN中以管道分隔的列中的基因,这大约是第四个管道。然后用ave进行基因分组的顺序计数。然后是1的subset组号。请不要在下面使用新管道|> in R 4.1.0+:

代码语言:javascript
运行
复制
data_new <- within(
  data_new, {
    GENE <- gsub(
       "CHR_START-", "", 
       sapply(strsplit(ANN, "|"), "[", 4)
    )
    GENE_GROUP_SEQ <- ave(1:nrow(data_new), GENE, FUN=seq_along)
  }
) |> subset(
  GENE %in% unique(GENE)[1:100] &  # SUBSET FOR FIRST 100 GENES
  GENE_GROUP_SEQ == 1              # SUBSET FOR FIRST OF EACH GENE GROUP
) |> `row.names<-`(NULL)           # RESET ROW NAMES

对于小于4.1.0的R版本,释放管道以分离调用:

代码语言:javascript
运行
复制
data_new <- within(
  data_new, {
    GENE <- gsub(
       "CHR_START-", "", 
       sapply(strsplit(ANN, "|"), "[", 4)
    )
    GENE_GROUP_SEQ <- ave(1:nrow(data_new), GENE, FUN=seq_along)
  }
)

data_sub <- subset(
  data_new,
  GENE %in% unique(GENE)[1:100] &           # SUBSET FOR FIRST 100 GENES
  GENE_GROUP_SEQ == 1                       # SUBSET FOR FIRST OF EACH GENE GROUP
)

dat_sub <- `row.names<-`(data_sub, NULL)    # RESET ROW NAMES
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71316146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档