【发布时间】:2014-07-13 23:57:08
【问题描述】:
我的第一个文件如下所示:
CHR id position
1 rs58108140 10583
1 rs189107123 10611
1 rs180734498 13302
1 rs144762171 13327
1 chr1:13957:D 13957
我的第二个文件看起来像:
CHR SNP POS RiskAl OTHER_ALLELE RAF logOR Pval
10 rs1999138 110140096 T C 0.449034245446375 0.0924443 1.09e-06
6 rs7741604 20839503 C A 0.138318264238111 0.127947 1.1e-06
8 rs1486006 82553172 G C 0.833130882716561 0.147456 1.12727730194884e-06
我的脚本读入第一个文件并将其存储在一个数组中,然后我想从第一个文件的第 2 列中找到第二个文件的第 2 列中的 rsID。我认为我在如何匹配表达式方面遇到了问题。这是我的脚本:
#! perl -w
use strict;
use warnings;
my $F = shift @ARGV;
my @snps;
open IN, "$F";
while (<IN>) {
next if m/CHR/;
my @L = split;
push @snps, [$L[0], $L[1], $L[2]] if $L[0] !~ m/[XY]/;
}
close IN;
open IN, "DIAGRAMv3sansWTCCCqc0clumpd_noTCF7L2regOrLeadOrPlt1em6clumps- CHR_SNP_POS_RiskAl_OtherAl_RAF_logOR_Pval.txt";
while (<IN>) {
my @L = split;
next if m/CHR/;
foreach (@snps) {
next if ($L[0] != ${$_}[0]);
# if not on same chromosome
if ($L[0] = ${$_}[0]) {
# if on same chromosome
if ($L[1] =~ ${$_}[1]) {
print "$L[0] $L[1] ${$_}[2]\n";
last;
}
}
}
}
【问题讨论】:
-
将数据存储在以第 2 列为键的哈希中。
-
从您显示的示例数据中发布您想要的输出。