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   67108 use strict;
  8         15  
  8         212  
4 8     8   31 use warnings;
  8         8  
  8         199  
5              
6 8     8   2521 use AI::NeuralNet::FastSOM;
  8         14  
  8         4525  
7             our @ISA = qw/AI::NeuralNet::FastSOM/;
8              
9             our $VERSION = '0.17';
10              
11 0     0   0 sub _old_radius { shift->{_R} }
12              
13             sub initialize {
14 12     12 0 37491 my $self = shift;
15 12         27 my @data = @_;
16              
17 12         20 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       45 } if @data;
23              
24             $get_from_stream ||= sub {
25 360     360   1136 return [ map { rand( 1 ) - 0.5 } 1..$self->{_Z} ];
  1080         3369  
26 12   100     85 };
27              
28 12         99 for my $x (0 .. $self->{_X}-1) {
29 60         230 for my $y (0 .. $self->{_Y}-1) {
30 360         404 $self->{map}->[$x]->[$y] = &$get_from_stream;
31             }
32             }
33             }
34              
35             sub as_string {
36 4     4 0 25224 my $self = shift;
37 4         7 my $s = '';
38              
39 4         19 $s .= " ";
40 4         40 for my $y (0 .. $self->{_Y}-1){
41 24         60 $s .= sprintf (" %02d ",$y);
42             }
43 4         50 $s .= sprintf "\n","-"x107,"\n";
44              
45 4         8 my $dim = scalar @{ $self->{map}->[0]->[0] };
  4         43  
46              
47 4         37 for my $x (0 .. $self->{_X}-1) {
48 20         40 for my $w ( 0 .. $dim-1 ){
49 60         120 $s .= sprintf ("%02d | ",$x);
50 60         232 for my $y (0 .. $self->{_Y}-1){
51 360         2675 $s .= sprintf ("% 2.2f ", $self->{map}->[$x]->[$y]->[$w]);
52             }
53 60         76 $s .= sprintf "\n";
54             }
55 20         22 $s .= sprintf "\n";
56             }
57 4         26 return $s;
58             }
59              
60             sub as_data {
61 4     4 1 7 my $self = shift;
62 4         8 my $s = '';
63              
64 4         6 my $dim = scalar @{ $self->{map}->[0]->[0] };
  4         40  
65 4         39 for my $x (0 .. $self->{_X}-1) {
66 20         131 for my $y (0 .. $self->{_Y}-1){
67 120         149 for my $w ( 0 .. $dim-1 ){
68 360         2651 $s .= sprintf ("\t%f", $self->{map}->[$x]->[$y]->[$w]);
69             }
70 120         136 $s .= sprintf "\n";
71             }
72             }
73 4         21 return $s;
74             }
75              
76             1;
77              
78             __END__