Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在unix中匹配列中的ID?_Unix_Bioinformatics_Vcf Variant Call Format_Bcftools - Fatal编程技术网

如何在unix中匹配列中的ID?

如何在unix中匹配列中的ID?,unix,bioinformatics,vcf-variant-call-format,bcftools,Unix,Bioinformatics,Vcf Variant Call Format,Bcftools,我完全知道可能已经发布了类似的问题,但在搜索之后,我们的问题的细节似乎有所不同(或者至少我没有找到一个可以在我的案例中采用的解决方案) 我目前有两个文件:“messyFile”和“wantedID”“messyFile”的大小为80000000x2500,而“wantedID”的大小为1 X 462。在“messyFile”的第253行,有2500个ID。但是,我只需要文件“wantedID”中的462个id。假设462个ID是2500个ID的子集,我如何处理文件“messyFile”,使其仅包

我完全知道可能已经发布了类似的问题,但在搜索之后,我们的问题的细节似乎有所不同(或者至少我没有找到一个可以在我的案例中采用的解决方案)

我目前有两个文件:“messyFile”“wantedID”“messyFile”的大小为80000000x2500,而“wantedID”的大小为1 X 462。在“messyFile”的第253行,有2500个ID。但是,我只需要文件“wantedID”中的462个id。假设462个ID是2500个ID的子集,我如何处理文件“messyFile”,使其仅包含有关462个ID的信息(即大小8000000 X 462

非常感谢你的耐心

ps:很抱歉给你带来了困惑。但问题可以归结为这样的问题。在文件1的第一行中,有10个ID。在“文件2”的第一行中,有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
sample#2 sample#4 sample#5
sample#2 sample#4 sample#5
   1        0        1
   1        0        2
“文件#2”应如下所示:

sample#1 sample#2 sample#3 sample#4 sample#5
    0        1       0        0        1
    1        1       2        0        2
sample#2 sample#4 sample#5
sample#2 sample#4 sample#5
   1        0        1
   1        0        2
所需的输出应如下所示:

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

好的,我不知道vcf文件是什么,但是如果您提供的文件#1和文件#2示例是包含制表符分隔列的文件,那么这将起作用:

declare -a data=(`head -1 data.txt`)
declare -a header=(`head -1 header.txt`)

declare fields
declare -i count
for i in "${header[@]}" ; do
  count=0
  for j in "${data[@]}" ; do
    count=$count+1;
    if [ $i == $j ] ; then
      fields=$fields,$count
    fi
  done
done

cut -f ${fields:1} data.txt

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

好的,我不知道vcf文件是什么,但是如果您提供的文件1和文件2示例是包含制表符分隔列的文件,那么这将起作用:

declare -a data=(`head -1 data.txt`)
declare -a header=(`head -1 header.txt`)

declare fields
declare -i count
for i in "${header[@]}" ; do
  count=0
  for j in "${data[@]}" ; do
    count=$count+1;
    if [ $i == $j ] ; then
      fields=$fields,$count
    fi
  done
done

cut -f ${fields:1} data.txt

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

要解析VCF格式,请使用
bcftools

专门针对您的任务,请参见
查看
命令:

例如:

bcftools view -Ov -S 462sample.list -r chr:pos -o subset.vcf superset.vcf
您需要获得SNP的位置,以在上面指定
chr:pos

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

只需确保基因组构建与VCF文件中使用的基因组构建相匹配

您也可以使用
plink

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


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

要解析VCF格式,请使用
bcftools

专门针对您的任务,请参见
查看
命令:

例如:

bcftools view -Ov -S 462sample.list -r chr:pos -o subset.vcf superset.vcf
您需要获得SNP的位置,以在上面指定
chr:pos

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

只需确保基因组构建与VCF文件中使用的基因组构建相匹配

您也可以使用
plink

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


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

不清楚数据的格式。听起来像是一团糟!;-)你能给我们一个非常小的messyFile和WantedID的示例数据集吗。如果它可以处理10行凌乱的文件,需要3行,那么它可能也可以处理较大的文件。令人困惑的是,在“messyFile”的第253行,有2500个ID。但是,我只需要文件“wantedID”中的462个id将示例数据中的这一点减少为“第3行有10个ID,我想要的是文件中的4个ID”wantedID“。我们需要看到预期的输出有任何帮助。祝你好运,抱歉搞混了。我刚刚在我的原始帖子中编辑了它。请使用人们可以复制/粘贴到其环境中的数据,然后开发解决方案。就这样,我们开始整理数据,结果你告诉我们“哦,是的,我忘了提到的另一个案例呢”(!)好吗?祝你好运。我很抱歉,我很难得到实际的数据(甚至提取出更小的数据),因为它太大太乱了。然而,我设法想出了一些类似它们的东西。不清楚你的数据的格式。听起来像是一团糟!;-)你能给我们一个非常小的messyFile和WantedID的示例数据集吗。如果它可以处理10行凌乱的文件,需要3行,那么它可能也可以处理较大的文件。令人困惑的是,在“messyFile”的第253行,有2500个ID。但是,我只需要文件“wantedID”中的462个id将示例数据中的这一点减少为“第3行有10个ID,我想要的是文件中的4个ID”wantedID“。我们需要看到预期的输出有任何帮助。祝你好运,抱歉搞混了。我刚刚在我的原始帖子中编辑了它。请使用人们可以复制/粘贴到其环境中的数据,然后开发解决方案。就这样,我们开始整理数据,结果你告诉我们“哦,是的,我忘了提到的另一个案例呢”(!)好吗?祝你好运。我很抱歉,我很难得到实际的数据(甚至提取出更小的数据),因为它太大太乱了。然而,我设法想出了一些类似的东西。