update
[openface-maja] / p.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4 use autodie;
5 use Data::Dump qw(dump);
6
7 my $filename = 'Intervali_Openface_novi_rad_Boris_export.txt';
8
9 sub col2nr {
10         my @c = @_;
11         my $i = 0;
12         my $out;
13         $out->{$_} = $i++ foreach @c;
14         warn "# col2nr ", dump( $out );
15         return $out;
16 }
17
18 open(my $fh, '<', $filename);
19
20 my $h = <$fh>; chomp $h;
21 my @cols = split(/\t/, $h);
22 my $col2nr = col2nr @cols;
23
24 my $file2;
25 my $fh2;
26 my $last_id;
27
28 my @h2;
29 my $h2nr;
30 my $tell2;
31
32
33 while(<$fh>) {
34         chomp;
35         my @v = split(/\t/, $_);
36         #warn "#[ $_ ]\n";
37
38         if ( ! $last_id || $last_id ne $v[0] ) {
39                 $file2 = glob $v[0] . '*.txt';
40
41                 next unless $file2; # FIXME
42
43                 warn "# file2 $file2 [$v[0]]";
44                 open($fh2, '<', $file2);
45                 $last_id = $v[0];
46         }
47
48         sub col_v {
49                 my $name = shift;
50                 my $i = $col2nr->{$name};
51                 die "can't find $name" unless defined $i;
52                 my $v = $v[$i];
53                 die "can't find $i : $name in ",dump( \@v ) unless defined $v;
54                 return $v;
55         }
56
57         #my $start = $v[ $col2nr->{'Start (s)'} ];
58         #my $stop  = $v[ $col2nr->{'Stop (s)'} ];
59
60         my $start = col_v 'Start (s)';
61         my $stop  = col_v 'Stop (s)';
62
63         my @sum;
64         my $count = 0;
65
66         while(<$fh2>) {
67                 chomp;
68                 warn "##[ $_ ]\n";
69                 my @v2 = map { s/^\s+//; $_ } split(/\t/,$_);
70                 if ( ! @h2 ) {
71                         @h2 = @v2;
72                         $h2nr = col2nr @h2;
73                         $tell2 = tell($fh2);
74                         warn "# h2nr ",dump( $h2nr );
75                         next;
76                 }
77
78                 sub col_v2 {
79                         my $name = shift;
80                         my $i = $h2nr->{$name};
81                         die "can't find $name in ",dump( $h2nr ) unless defined $i;
82                         my $v = $v2[$i];
83                         die "can't find $i : $name in ",dump( \@v2 ) unless defined $v;
84                         return "### col_v2 $name $i = $v";
85                         return $v;
86                 }
87
88
89                 #my $timestamp = $v2[ $h2nr->{'timestamp'} ] || die;
90                 #my $timestamp = col_v2 'timestamp';
91                 my $timestamp = $v2[2];
92 warn "XXX ",dump( $timestamp ); #$h2nr, \@v2 );
93
94                 if ( $timestamp < $start ) {
95                         warn "# $start > @v2";
96                 } elsif ( $timestamp < $stop ) {
97                         $tell2 = tell($fh2);
98                         foreach my $n ( $h2nr->{'AU01_r'} .. $h2nr->{'AU45_c'} ) {
99                                 $sum[$n] += $v[$n];
100                         }
101                         $count++;
102                 } else {
103                         warn "# seek $tell2";
104                         seek $fh2, $tell2, 0;
105
106                         print join("\t", @v,
107                                 map { $sum[$_] / $count } ( $h2nr->{'AU01_r'} .. $h2nr->{'AU45_r'} ),
108                                 map { $sum[$_] }          ( $h2nr->{'AU01_c'} .. $h2nr->{'AU45_c'} ),
109                         );
110                 }
111         }
112 }
113
114 __END__
115
116
117 my $col2nr;
118
119 # prema filenamenu iz $v[0]
120 # Start (s)       Stop (s)
121
122 my $lookup_file = '
123
124 # col timestamp
125