2つの配列を直列につないで新たな配列に入れる方法(push)
push(@c, @a, @b);
新配列@cに@aと@bを直列に入れている。
2/26の間違いは、
push(@allid, @pre, @post);
print "@allid\n";
これが動かないから。
で、
治った結果。
[minako1@minako agilent]# grep "[[:space:]]chr10[[:space:]]" agilentCgh244a.txt | perl longerthan_selectdist.pl - 100000 | perl 20100228.pl - agilentCgh244a.txt | head
A_86_P04317089 A_86_P04320226 A_86_P04344161 A_86_P04364781 A_86_P04415780 A_86_P04418327 A_86_P04440080 A_86_P04462526 A_86_P04468130 A_86_P04468740 A_86_P04469787 A_86_P04510212 A_86_P04514853 A_86_P04536506 A_86_P04577507 A_86_P04595309 A_86_P04627551 A_86_P04316823 A_86_P04320204 A_86_P04344114 A_86_P04364780 A_86_P04415772 A_86_P04418324 A_86_P04440075 A_86_P04462516 A_86_P04468127 A_86_P04468456 A_86_P04469413 A_86_P04510179 A_86_P04514843 A_86_P04536505 A_86_P04577499 A_86_P04595293 A_86_P04627504
$tempid= A_86_P04316823 = $allid[17] = A_86_P04316823
$tempid= A_86_P04317089 = $allid[0] = A_86_P04317089
$tempid= A_86_P04320204 = $allid[18] = A_86_P04320204
$tempid= A_86_P04320226 = $allid[1] = A_86_P04320226
$tempid= A_86_P04344114 = $allid[19] = A_86_P04344114
$tempid= A_86_P04344161 = $allid[2] = A_86_P04344161
$tempid= A_86_P04364780 = $allid[20] = A_86_P04364780
$tempid= A_86_P04364781 = $allid[3] = A_86_P04364781
$tempid= A_86_P04415772 = $allid[21] = A_86_P04415772
合っているかどうかとか、確認せずに、これはこれとして。
perlはマシンじゃなくて、「人間の目」で見る、とのこと。
わざわざアレイの.bedみたいなファイルをカラムごとに分けていたけど、
一行ざっと見たらいいのだ。
というわけで、方針変更。
#!/usr/bin/perl
#
#
$| = 1;
$infile = $ARGV[0];
$agilent = $ARGV[1];
open(INFILE, "< $infile") || die "Can't open $infile";
while(<INFILE>) {
chomp;
push(@pre, (split(/\t/, $_))[0]);
push(@post, (split(/\t/, $_))[1]);
}
close(INFILE);
push(@allid, @pre, @post);
open(AGILENT, "< $agilent") || die "Can't open $agilent";
while(<AGILENT>) {
chomp;
push(@agiarray, $_);
}
close(AGILENT);
foreach $i (0..$#allid) {
foreach $h (0..$#agiarray) {
if ($agiarray[$h] =~ /$allid[$i]/) { # 人の目なんだからパターンマッチ。
print "$allid[$i] = $agiarray[$h]\n";
}
}
}
[minako1@minako agilent]# grep "[[:space:]]chr10[[:space:]]" agilentCgh244a.txt | perl longerthan_selectdist.pl - 100000 | perl 20100228.pl - agilentCgh244a.txt
A_86_P04317089 = 601 chr10 2160494 2160549 A_86_P04317089 1000 +
A_86_P04320226 = 611 chr10 3506329 3506389 A_86_P04320226 1000 +
A_86_P04344161 = 672 chr10 11411259 11411319 A_86_P04344161 1000 +
・・・・・省略・・・・
A_86_P04595309 = 1301 chr10 93970524 93970582 A_86_P04595309 1000 +
A_86_P04627551 = 1382 chr10 104487073 104487133 A_86_P04627551 1000 +
A_86_P04316823 = 600 chr10 1994162 1994222 A_86_P04316823 1000 +
A_86_P04320204 = 610 chr10 3355229 3355287 A_86_P04320204 1000 +
・・・・・省略・・・・・・・
A_86_P04595293 = 1300 chr10 93739947 93740007 A_86_P04595293 1000 +
A_86_P04627504 = 1380 chr10 104286833 104286893 A_86_P04627504 1000 +
[minako1@minako agilent]#
これで、ちゃんと.bedに成ってたらいいんだ。
while(<AGILENT>) {
chomp;
$_ =~ s/^(\d+)(\t)//;
push(@agiarray, $_);
}
pushの前に先頭の数字何個かとtabを//何もないものに置換、というパターンマッチを追加。
A_86_P04317089 = chr10 2160494 2160549 A_86_P04317089 1000 +
A_86_P04320226 = chr10 3506329 3506389 A_86_P04320226 1000 +
A_86_P04344161 = chr10 11411259 11411319 A_86_P04344161 1000 +
A_86_P04364781 = chr10 18048353 18048403 A_86_P04364781 1000 +
・・・・
できている。
カスタムブラウザに載せてみる。
[minako1@minako agilent]# grep "[[:space:]]chr10[[:space:]]" agilentCgh244a.txt | perl longerthan_selectdist.pl - 100000 | perl 20100228.pl - agilentCgh244a.txt > chr10long100k_dist.bed
載せてみた。