如何匹配unix中列中的ID?

时间:2016-08-29 21:21:02

标签: unix bioinformatics

我完全清楚可能已经发布了类似的问题,但在搜索之后我们的问题似乎有所不同(或者至少我找不到可以在我的情况下采用的解决方案)。 / p>

我目前有两个文件:“messyFile”“wantID”“messyFile”的大小 80,000,000 X 2,500 ,而“wantedID”的大小 1 x 462 。在“messyFile”的第253行,有2500个ID。但是,我想要的只是文件“wantedID”中的462个ID。假设462个ID是2500个ID的子集,我如何处理文件“messyFile”,使其仅包含有关462个ID的信息(即大小 80,000,000 X 462 )。

非常感谢您的耐心等待!

ps:对不起,感到困惑。但是,是的,问题可归结为类似的事情。在“文件#1”的第一行中,有10个ID。在“文件#2”的第1行中,有3个ID(“文件#2”仅包含1行)。 3个ID是10个ID的子集。现在,我希望处理“文件#1”,以便它只包含有关“文件#2”中列出的3个ID的信息。

ps2:“messyFile”是一个vcf文件,而“wantedID”可以是一个文本文件(我说“可以”因为它很小,所以我几乎可以为它做任何类型)

ps3:“文件#1”看起来像这样:

sample#1 sample#2 sample#3 sample#4 sample#5
    0        1       0        0        1
    1        1       2        0        2

“文件#2”看起来像这样:

sample#2 sample#4 sample#5

所需的输出应如下所示:

sample#2 sample#4 sample#5
   1        0        1
   1        0        2

2 个答案:

答案 0 :(得分:3)

要解析VCF格式,请使用bcftools

http://samtools.github.io/bcftools/bcftools.html

专门针对您的任务,请参阅view命令:

http://samtools.github.io/bcftools/bcftools.html#view

示例:

bcftools view -Ov -S 462sample.list -r chr:pos -o subset.vcf superset.vcf

您需要获取SNP的位置以指定上面的chr:pos

您可以使用DbSNP执行此操作:

http://www.ncbi.nlm.nih.gov/SNP/index.html

确保将基因组构建与VCF文件中使用的构建匹配。

您还可以使用plink

https://www.cog-genomics.org/plink2

但是,PLINK对重复的SNP和其他事情很挑剔,所以除非你解决这些问题,否则它可能会抱怨。

我使用awk编程语言完成了您过去的尝试。为了您的理智,我建议使用上述工具之一:)

答案 1 :(得分:1)

好的,我不知道vcf文件是什么,但如果您提供的文件#1和文件#2样本是包含制表符分隔列的文件,则可以使用:

fs.writeFileSync()

如果它们不是制表符分隔值,则可以根据实际数据格式进行修改。