Branch Coverage

blib/lib/Algorithm/Classifier/IsolationForest.pm
Criterion Covered Total %
branch 225 270 83.3


line true false branch
1927 1 163 unless $mode eq "axis" or $mode eq "extended"
1940 1 162 unless $missing =~ /\A(?:die|zero|impute|nan)\z/
1944 1 161 unless $impute_with =~ /\A(?:mean|median)\z/
1947 131 30 if (defined $args{'seed'})
1959 60 55 $args{'use_c'} && $HAS_C ? :
115 46 defined $args{'use_c'} ? :
1963 2 3 $args{'use_openmp'} && $HAS_OPENMP ? :
5 156 defined $args{'use_openmp'} ? :
1965 57 104 unless $use_c
1970 9 152 $args{'use_openmp_fit'} && $HAS_OPENMP && $use_c ? :
1994 1 160 unless $self->{'n_trees'} >= 1
1995 1 159 unless $self->{'sample_size'} >= 1
1997 1 158 if defined $self->{'extension_level'} and $self->{'extension_level'} < 0
2000 3 155 if defined $self->{'contamination'} and not $self->{'contamination'} > 0 && $self->{'contamination'} <= 0.5
2003 2 9 if defined $self->{'parallel_fit'} and !($self->{'parallel_fit'} =~ /^\d+$/) || $self->{'parallel_fit'} < 1
2086 6 130 unless ref $data eq "ARRAY" and @$data
2089 4 126 unless ref $data->[0] eq "ARRAY" and @{$data->[0];}
2109 29 91 if ($self->{'mode'} eq 'extended') { }
2114 4 25 defined $self->{'extension_level'} ? :
2115 0 29 if $ext < 0
2116 2 27 if $ext > $max_ext
2127 0 120 defined $self->{'max_depth'} ? :
2128 0 120 if $limit < 1
2131 120 0 if defined $self->{'seed'}
2134 8 112 if (defined $workers and $workers > 1 and $self->{'n_trees'} > 1 and _fork_supported()) { }
7 105 elsif ($self->{'_use_c'} and $self->{'_use_openmp_fit'}) { }
58 47 elsif ($self->{'_use_c'}) { }
2166 3 117 if (defined $self->{'contamination'})
2171 0 3 if $k < 1
2172 0 3 if $k > $n_pts
2173 3 0 $k < $n_pts ? :
2178 73 47 if $self->{'_use_c'}
2229 7505 0 if ($self->{'_use_c'} and $self->{'_c_nodes'})
2243 0 1 $self->{'missing'} eq 'nan' ? :
2280 3 26 defined $self->{'threshold'} ? :
14978 29 defined $threshold ? :
2288 14988 3 if ($self->{'_use_c'} and $self->{'_c_nodes'} and $self->{'c_psi'} > 0 and $threshold > 0 and $threshold < 1)
2312 414 871 $_ >= $threshold ? :
2365 0 0 unless ref $row eq "HASH"
2370 0 0 unless defined $self->{'feature_names'} and ref $self->{'feature_names'} eq "ARRAY" and @{$self->{'feature_names'};}
2378 0 0 if @unknown
2382 0 0 if @missing
2425 14208 3 if ($self->{'_use_c'} and $self->{'_c_nodes'})
2433 14207 0 if ($c > 0)
2443 3 55 $self->{'missing'} eq 'nan' ? :
2456 58 0 if ($c > 0)
2511 0 7 defined $self->{'threshold'} ? :
5098 7 defined $threshold ? :
2518 5103 0 if ($self->{'_use_c'} and $self->{'_c_nodes'} and $self->{'c_psi'} > 0 and $threshold > 0 and $threshold < 1)
2546 4 8 if ($score >= $threshold) { }
2608 0 4 defined $self->{'threshold'} ? :
14110 4 defined $threshold ? :
2614 14112 0 if ($self->{'_use_c'} and $self->{'_c_nodes'} and $self->{'c_psi'} > 0 and $threshold > 0 and $threshold < 1)
2640 4 8 $_ >= $threshold ? :
2697 1 20 unless ref $payload eq "HASH" and defined $payload->{'format'} and $payload->{'format'} eq "Algorithm::Classifier::IsolationForest"
2704 1 19 if (($payload->{'version'} // 0) < 1)
2733 1 19 unless @{$self->{'trees'};}
2738 19 0 if defined $self->{'psi_used'}
2741 19 0 if $self->{'_use_c'}
2800 241866 339714 if $n <= 1
2801 58278 281436 if $n == 2
2846 145063 148484 if $depth >= $limit or $size <= 1
2859 23338 125146 if ($nan) { }
2863 72249 698528 unless defined $v
2864 87444 611084 if not defined $lo[$f] or $v < $lo[$f]
2865 86526 612002 if not defined $hi[$f] or $v > $hi[$f]
2872 607872 6413849 if not defined $lo[$f] or $v < $lo[$f]
2873 605366 6416355 if not defined $hi[$f] or $v > $hi[$f]
2881 331221 55 if defined $lo[$_]
2884 2795 145689 unless @varying
2887 22387 123302 $self->{'mode'} eq 'extended' ? :
2895 123302 22387 $node->[0] == 1 ? :
2916 15096 108206 if ($nan) { }
2919 111298 128069 if (defined $v and $v < $split) { }
2924 1093141 1096784 if ($row->[$attr] < $split) { }
2941 3606 18781 if $active > scalar @$varying
2966 6947 15440 if ($nan) { }
2972 26240 236042 unless (defined $v)
2975 57761 81925 if (not $missing and $dot <= $b) { }
2982 193814 200390 if ($dot <= $b) { }
3009 2283722 197556 if ($node->[0] == 1) { }
3010 4852 2278870 if ($nan) { }
3012 963 3889 defined $v && $v < $node->[2] ? :
3014 1144254 1134616 ($$x[$node->[1]] // 0) < $node->[2] ? :
3018 3034 194522 if ($nan) { }
3023 1920 2807 unless (defined $v)
3026 552 2482 !$missing && $dot <= $b ? :
3030 94590 99932 $dot <= $b ? :
3042 0 0 if ($node->{'leaf'}) { }
0 0 elsif (exists $node->{'attr'}) { }
3086 241165 237073 if ($node->[0] == 0) { }
208282 28791 elsif ($node->[0] == 1) { }
3117 24985 3806 if (defined $n_features and $num == $n_features) { }
3140 705 3387 @coef_idx ? :
3141 705 3387 @coef_val ? :
3166 9 56016 unless ref $self->{'trees'} eq "ARRAY" and @{$self->{'trees'};}
3175 6 2 if defined $cached
3178 2 0 ($Config::Config{'d_fork'} || '') eq 'define' ? :
3201 1 7 if $workers > $n_trees
3209 3 23 $w < $extras ? :
3216 0 26 unless $share > 0
3218 0 26 unless pipe my $rh, my $wh
3220 0 26 unless defined $pid
3222 0 26 if ($pid == 0)
3226 0 0 if (defined $self->{'seed'})
3243 0 0 if ($self->{'_use_c'}) { }
3276 0 26 if $exit != 0
3279 0 26 if $@ or ref $trees ne "ARRAY"
3305 12 46 $self->{'mode'} eq 'extended' ? :
3346 5 2 $self->{'mode'} eq 'extended' ? :
3370 6582 6262 if ($type == 0) { }
1604 4658 elsif ($type == 1) { }
3426 1 5 unless $self->{'_use_c'}
3427 2 3 unless ref $data eq "ARRAY"
3447 25815 30101 if (ref $data eq "Algorithm::Classifier::IsolationForest::PackedData")
3449 1 25814 unless $data->{'n_feats'} == $self->{'n_features'}
3466 80 0 if ref $data eq "ARRAY"
3467 0 0 if (ref $data eq "Algorithm::Classifier::IsolationForest::PackedData")
3505 100 26 if ($m eq "die")
3509 40679 2 if defined $row->[$f]
3519 8 18 if $m eq "nan"
3539 12 6 $m eq 'impute' ? :
3543 8 6 if $m eq "impute"
3546 7 7 if $self->{'_use_c'}
3562 6 6 if ($self->{'_use_c'})
3564 2 4 $how eq 'median' ? :
3573 2 10 unless @vals
3575 4 6 if ($how eq 'median') { }
3578 2 2 $k % 2 ? :
3599 3855 223 if (defined $r->[$_]) { }
3610 9 30160 if $m eq "nan"
3611 9 30151 if ($m eq "impute")
3614 0 9 unless ref $fill eq "ARRAY" and @$fill == $self->{'n_features'}
3628 3 56 if ($self->{'missing'} eq "impute")
3630 0 3 unless ref $self->{'missing_fill'} eq "ARRAY"