这是对我的问题的描述:我有两个文本文件(此处$variants
和$annotation
)。我想检查第 2 列的值是否$variants
位于第 2 列和第 3 列的值之间$annotation
。如果这是真的,那么$annotation
应该将第 1 列中的值添加到 中的新列$variants
。
这就是我的示例输入文件的样子
$annotation
表示一个制表符分隔的文本文件
这些值可能重叠并且无法完美排序,因为我正在使用循环基因组
C0 C1 C2
gene1 0 100
gene2 500 1000
gene3 980 1200
gene4 1500 5
$variants
表示一个制表符分隔的文本文件
C0 C1
... 5
... 10
... 100
... 540
... 990
输出应如下所示($variants
添加了另外两列)
C0 C1 C2 C3
... 5 gene1 gene4
... 10 gene1
... 100 gene1
... 540 gene2
... 990 gene2 gene3
这就是我的脚本目前的样子
my %hash1=();
while(<$annotation>){
my @column = split(/\t/); #split on tabs
my $keyfield = $column[1] && $column[2]; # I need to remember values from two columns here. How do I do that?
}
while(<$variants>){
my @column=split(/\t/); # split on tabs
my $keyfield = $column[1];
if ($hash1{$keyfield} >= # so the value in column[1] should be between the values from column[1] & [2] in $annotation
push # if true then add values from column[0] in $annotation to new column in $variants
}
所以我最大的问题是如何使用哈希记住文件中的两个值以及如何将一个文件中的值放入另一个文件的列中。有人可以帮我解决这个问题吗?