Perl:在数组中获取所有递增和递减条带(用于生物信息学)
我是Perl新手,在用Perl设计某个函数时遇到了麻烦 该函数应查找并返回所有递增和递减条带。 这是什么意思?如果两个位置是相邻的数字,则它们是相邻的。i、 e.(2,3)或(8,7)。一个不断增长的地带就是一个不断增长的邻居地带。i、 e.(3,4,5,6)。递减带的定义类似。在每个数组的开头添加0,在数组的结尾添加长度+1。没有邻居的单个数字正在减少。0和n+1正在增加 如果我有数组(0,3,4,5,9,8,6,2,1,7,10),我应该得到以下结果: 递增带为:(3,4,5)(10)(0) 递减带为:(9,8)、(6)、(2,1)(7) 我试图将问题简化为仅获取所有递减条带,但这是我所能做到的: 代码如下:Perl:在数组中获取所有递增和递减条带(用于生物信息学),perl,bioinformatics,Perl,Bioinformatics,我是Perl新手,在用Perl设计某个函数时遇到了麻烦 该函数应查找并返回所有递增和递减条带。 这是什么意思?如果两个位置是相邻的数字,则它们是相邻的。i、 e.(2,3)或(8,7)。一个不断增长的地带就是一个不断增长的邻居地带。i、 e.(3,4,5,6)。递减带的定义类似。在每个数组的开头添加0,在数组的结尾添加长度+1。没有邻居的单个数字正在减少。0和n+1正在增加 如果我有数组(0,3,4,5,9,8,6,2,1,7,10),我应该得到以下结果: 递增带为:(3,4,5)(10)(0)
sub getIncs{
my @$bar = shift;
my %incs;
my $inccount = 0;
my $i=0;
while($i<@bar-1){
for($j=$i; 1; $j++;){
if($bar[$j] == $bar[$j+1]+1){
$incs{$inccount} = ($i,$j);
} else {
$inccount++;
last;
}
}
}
sub-getIncs{
我的@$bar=班次;
我的%incs;
我的$inccount=0;
我的$i=0;
而我
结果:
Increasing: (0),(3,4,5),(10)
Decreasing: (9,8),(6),(2,1),(7)
是否允许条带重叠?在(3,2,1,2)
的情况下(3,2,1)
是与(2)
一个单独的递减条带的递减条带,还是(3,2,1)
允许与(1,2)
共存?
Increasing: (0),(3,4,5),(10)
Decreasing: (9,8),(6),(2,1),(7)