Perl:在数组中获取所有递增和递减条带(用于生物信息学)

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)

我是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)

我试图将问题简化为仅获取所有递减条带,但这是我所能做到的:

代码如下:

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)