File Coverage

blib/lib/AI/NeuralNet/FastSOM/Rect.pm
Criterion Covered Total %
statement 45 49 91.8
branch 1 4 25.0
condition 2 2 100.0
subroutine 7 9 77.7
pod 1 3 33.3
total 56 67 83.5


line stmt bran cond sub pod time code
1             package AI::NeuralNet::FastSOM::Rect;
2              
3 8     8   91252 use strict;
  8         19  
  8         320  
4 8     8   41 use warnings;
  8         23  
  8         253  
5              
6 8     8   3649 use AI::NeuralNet::FastSOM;
  8         19  
  8         5684  
7             our @ISA = qw/AI::NeuralNet::FastSOM/;
8              
9             our $VERSION = '0.19';
10              
11 0     0   0 sub _old_radius { shift->{_R} }
12              
13             sub initialize {
14 12     12 0 40087 my $self = shift;
15 12         47 my @data = @_;
16              
17 12         21 my $i = 0;
18              
19             my $get_from_stream = sub {
20 0 0   0   0 $i = 0 if $i > $#data;
21 0         0 return [ @{ $data[$i++] } ]; # cloning !
  0         0  
22 12 50       46 } if @data;
23              
24             $get_from_stream ||= sub {
25 360     360   1447 return [ map { rand( 1 ) - 0.5 } 1..$self->{_Z} ];
  1080         4058  
26 12   100     92 };
27              
28 12         106 for my $x (0 .. $self->{_X}-1) {
29 60         268 for my $y (0 .. $self->{_Y}-1) {
30 360         491 $self->{map}->[$x]->[$y] = &$get_from_stream;
31             }
32             }
33             }
34              
35             sub as_string {
36 4     4 0 34439 my $self = shift;
37 4         22 my $s = '';
38              
39 4         12 $s .= " ";
40 4         69 for my $y (0 .. $self->{_Y}-1){
41 24         93 $s .= sprintf(" %02d ",$y);
42             }
43 4         43 $s .= "\n" . "-"x107 . "\n";
44              
45 4         21 my $dim = scalar @{ $self->{map}->[0]->[0] };
  4         45  
46              
47 4         54 for my $x (0 .. $self->{_X}-1) {
48 20         43 for my $w ( 0 .. $dim-1 ){
49 60         219 $s .= sprintf("%02d | ",$x);
50 60         335 for my $y (0 .. $self->{_Y}-1){
51 360         3401 $s .= sprintf("% 2.2f ", $self->{map}->[$x]->[$y]->[$w]);
52             }
53 60         120 $s .= "\n";
54             }
55 20         26 $s .= "\n";
56             }
57 4         20 return $s;
58             }
59              
60             sub as_data {
61 4     4 1 12 my $self = shift;
62 4         11 my $s = '';
63              
64 4         7 my $dim = scalar @{ $self->{map}->[0]->[0] };
  4         69  
65 4         34 for my $x (0 .. $self->{_X}-1) {
66 20         173 for my $y (0 .. $self->{_Y}-1){
67 120         213 for my $w ( 0 .. $dim-1 ){
68 360         3756 $s .= sprintf("\t%f", $self->{map}->[$x]->[$y]->[$w]);
69             }
70 120         182 $s .= "\n";
71             }
72             }
73 4         32 return $s;
74             }
75              
76             1;
77              
78             __END__