App-Rangeops

 view release on metacpan or  search on metacpan

lib/App/Rangeops/Command/clean.pm  view on Meta::CPAN

334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
        $info_of->{$r0}{chr} eq $info_of->{$r1}{chr} ? ($_) : ()
    } @lines;
 
    for my $line (@same_pair_lines) {
        my ( $range0, $range1 ) = split /\t/, $line;
 
        my $intspan0 = $info_of->{$range0}{intspan};
        my $intspan1 = $info_of->{$range1}{intspan};
 
        my $intspan_i = $intspan0->intersect($intspan1);
        if ( $intspan_i->is_not_empty ) {
            if (    $intspan_i->size / $intspan0->size > 0.5
                and $intspan_i->size / $intspan1->size > 0.5 )
            {
                @lines = grep { $_ ne $line } @lines;
            }
        }
    }
}
 
#----------------------------#

lib/App/Rangeops/Command/merge.pm  view on Meta::CPAN

107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
my $range_i = $ranges[$i];
printf STDERR " " x 4 . "Range %d / %d\t%s\n", $i, $#ranges,
    $range_i
    if $opt->{verbose};
my $set_i = $info_of->{$range_i}{intspan};
for my $j ( $i + 1 .. $#ranges ) {
    my $range_j = $ranges[$j];
    my $set_j   = $info_of->{$range_j}{intspan};
 
    my $i_set = $set_i->intersect($set_j);
    if ( $i_set->is_not_empty ) {
        my $coverage_i = $i_set->size / $set_i->size;
        my $coverage_j = $i_set->size / $set_j->size;
        if (    $coverage_i >= $opt->{coverage}
            and $coverage_j >= $opt->{coverage} )
        {
            push @edges, [ $ranges[$i], $ranges[$j] ];
            printf STDERR " " x 8
                . "Merge with Range %d / %d\t%s\n",
                $j, $#ranges, $range_j
                if $opt->{verbose};



( run in 0.629 second using v1.01-cache-2.11-cpan-e9199f4ba4c )