#! /usr/bin/perl
use strict;
my (@data,$data,@data1,@diff,$diff,$tempS,$tempE, @ID,@Seq,@Start,@End, @data2);
#my $file=<>;
open(FILE, "< ./out.txt");
while (<FILE>){
chomp $_;
#next if ($line =~/Measurement count:/ or $line =~/^\s+/) ;
#push @data, [split ("\t", $line)] ;
my @data = split('\t');
push(@ID, $data[0]);
push(@Seq, $data[1]);
push(@Start, $data[2]);
push(@End, $data[3]);
# push @$data, [split ("\t", $line)] ;
}
close(FILE);
my %hash = map { my $key = "$ID[$_]"; $key => [ $Start[$_], $End[$_] ] } (0..$#ID);
for my $key ( %hash) {
print "Key: $key contains: ";
for my $value ($hash{$key}) {
print " $hash{$key}[0] ";
}
print "\n";
}
for (my $j=0; $j <=$#Start ; $j++)
{
if ($Start[$j] > $End[$j])
{
$tempS=$Start[$j];
$Start[$j]=$End[$j];
$End[$j]=$tempS;
}
print"$tempS\t$Start[$j]\t$End[$j]\n";
}
my @sortStart = sort { $a <=> $b } @Start;
my @sortEnd = sort { $a <=> $b } @End;
#open(OUT,">>./trial.txt");
for(my $i=1521;$i>=0;$i--)
{
print "hey";
my $diff = $sortStart[$i] - $sortStart[$i-1];
print "$ID[$i]\t$diff\n";
}
排序其他两个阵列我有相同的长度的三个阵列,ID
用的ID(字符串),Start
和End
与整数值(从文件读取)。ID跟踪,同时交换和在Perl
我想遍历所有这些数组,并且还想跟踪ID。首先将Start
中的元素与End
对换,如果开始>结束,那么我必须对这两个数组进行排序以供进一步应用(因为我对Start
中的每个项目否定Start[0]-Start[1]
)。排序时,Id值可能会更改,并且由于我的ID对于每个Start和End
元素都是唯一的,因此如何在排序时跟踪我的ID?
三个阵列,ID
,Start
和End
,都在我的考虑之下。
这是我的输入数据的小块:
DQ704383 191990066 191990037
DQ698580 191911184 191911214
DQ724878 191905507 191905532
DQ715191 191822657 191822686
DQ722467 191653368 191653339
DQ707634 191622552 191622581
DQ715636 191539187 191539157
DQ692360 191388765 191388796
DQ722377 191083572 191083599
DQ697520 189463214 189463185
DQ709562 187245165 187245192
DQ540163 182491372 182491400
DQ720940 180753033 180753060
DQ707760 178340696 178340726
DQ725442 178286164 178286134
DQ711885 178250090 178250119
DQ718075 171329314 171329344
DQ705091 171062479 171062503
上述ID,开始,结束分别。如果开始>结束,我只在这两个数组之间交换它们。但交换后,降序可能会改变,但我希望它们的降序也是它们对应的否定ID,如上所述。
请添加您的代码。 – serenesat
请忽略我的代码中的哈希创建。 – Kanhu
添加输入数据和预期输出会更有帮助。 – serenesat