#!/usr/bin/perl # # $Header: /home/whelan/cvsroot/joetbrw/2002/scripts/ranking_comparison,v 1.6 2002/03/03 8:24:01 whelan Exp $ # use KRACH; use Fcntl; use Time::Local; require 'common.pl'; require 'modpairwise.pl'; use Getopt::Long; Getopt::Long::config('auto_abbrev'); GetOptions('i|scores=s' => \$infile, # Score input file (default STDIN) 'o|comps=s' => \$outfile, # PWC output file 'tucs=s' => \$losers, # TUCs specified by hand 'quick' => \$quickflag, # Only calculate PWCs 'kcomps=s' => \$koutfile, # KRACH-PWC output file 'refweight=f'=> \$refweight, # Weight for ref games in KRACH # (default 0) 'indata=s'=> \$indata, # read the non-TUC data from this file # (instead of calculating it) 'outdata=s'=> \$outdata, # write the non-TUC data to this file 'onetol=f' => \$onetol, # tolerance for one-shot KPct soln 'systol=f' => \$systol, # tolerance for KPct system soln 'nolink' => \$nlflag, # Suppress links in PWC table(s) 'date=i' => \$stopdate, # Only use scores before $stopdate 'folder=s' => \$tabsdir, # put tables in this directory ); if (defined $onetol) { Criterion->tol($onetol); } if (defined $systol) { Group->tol($systol); } unless (defined $stopdate) { $stopdate = 30001231; } %name=( Ab => 'Albany', AF => 'Air Force', Ar => 'Army', BC => 'Boston Coll', Bh => 'Binghamton', Bk => 'Bucknell', Br => 'Brown', Bu => 'Butler', Cg => 'Colgate', Cn => 'Canisius', Cr => 'Cornell', Da => 'Dartmouth', De => 'Delaware', Dk => 'Duke', Dr => 'Drexel', DU => 'Denver', Ff => 'Fairfield', Gt => 'Georgetown', Ha => 'Harvard', Hb => 'Hobart', HC => 'Holy Cross', Hf => 'Hartford', Ho => 'Hofstra', JH => 'Johns Hopkins', Le => 'Lehigh', Lf => 'Lafayette', Lo => 'Loyola', Ma => 'UMass', MB => 'UMBC', Md => 'Maryland', Mh => 'Manhattan', Mr => 'Marist', MS => 'Mt St Mary\'s', Na => 'Navy', NC => 'No. Carolina', ND => 'Notre Dame', OS => 'Ohio State', Pn => 'Pennsylvania', Pr => 'Princeton', PS => 'Penn State', Pv => 'Providence', Qn => 'Quinnipiac', Ru => 'Rutgers', SB => 'Stony Brook', SH => 'Sacred Heart', Si => 'Siena', SJ => 'St. Joseph\'s', Sy => 'Syracuse', To => 'Towson', Va => 'Virginia', Vi => 'Villanova', VM => 'VMI', Vt => 'Vermont', Wa => 'Wagner', Ya => 'Yale'); unless ($quickflag) { %class=(1=>' class="won"','-1'=>' class="lost"',0=>'','-0'=>''); %conf_team=(AC=>[qw(Dk Md NC Va)], AE=>[qw(Ab Bh Hf Qn SB Vt)], CA=>[qw(De Dr Ho Lo SH To Vi)], EC=>[qw(Gt Ma MB Na PS Ru)], GW=>[qw(AF Bu DU Ff ND OS)], IL=>[qw(Br Cr Da Ha Pn Pr Ya)], MA=>[qw(Cn Mh Mr MS Pv Si SJ Wa)], PL=>[qw(Ar Bk Cg Hb HC Le Lf)], Indy=>[qw(JH Sy)]); @conf=keys %conf_team; foreach $conf (@conf) { foreach (@{$conf_team{$conf}}) { $conf{$_}=$conf; } } %html_name=%name; } while (($abbr,$name)=each %name) { new Team(abbr=>$abbr, name=>$name); } if ($indata) { $dataref=retrieve($indata); %Team::TEAM=%{$dataref}; } else { $date=&initscores($infile); if ($refweight) { $ref=new Team; foreach (Team->team) { unless ($ref eq $_) { $ref->game(0,$_,0,weight=>$refweight); } } foreach (Team->team) { $_->krach; } warn $ref->krach if $^W; warn 1/(1+1/$ref->krach) if $^W; delete $Team::TEAM{$ref=$ref->abbr}; foreach $team (Team->team) { foreach (grep {/^_/} keys %{$team}) { next if $_ eq '_pf' or $_ eq '_krach' or $_ eq '_chain' or $_ eq '_t' or $_ eq '_recent'; delete $team->{$_}; } delete $team->{_pf}{$ref}; delete $team->{_chain}[0]{$ref}; delete $team->{_chain}[1]{$ref}; shift @{$team->{_recent}}; shift @{$team->{_recent}}; } } elsif ($koutfile) { warn "Caching KRACH" if $^W; foreach (Team->team) { $_->krach; } } unless ($quickflag or not $koutfile) { warn "Caching last 8" if $^W; foreach $team (Team->team) { $team->Last(8)->krach; } warn "Caching Hockey RPI" if $^W; foreach $team (Team->team) { $team->rpi; } warn "Caching NCAA RPI" if $^W; foreach $team (Team->team) { $team->rpi(.25,.5,.25); } warn "Caching RPIStr" if $^W; foreach $team (Team->team) { $team->data('RPIStr',(10*$team->pct+3*$team->opppct)/13); } warn "Caching RPISOS" if $^W; foreach $team (Team->team) { $team->data('RPISOS',(10*$team->opppct+3*$team->oppopppct)/13); } @tuc=TUCdef->tucdef->teams; warn "Caching common opponents" if $^W; foreach $team (@tuc) { foreach (@tuc) { $team->common($_)->hhwp($_->common($team)); } } } } if ($losers) { foreach (split /,/ , $losers) { Team->team($_)->maketuc; } @tuc=TUCdef->tucdef->teams; } @team = Team->team; $UMBC = Team->team('MB'); unless ($quickflag or not $koutfile) { warn "Caching KSOS" if $^W; foreach $team (Team->team) { if ($team->pf && $team->hhwp($UMBC)) { $team->data('KSOS',($team->krach*($team->pa)/($team->pf))) } } } foreach (@team) { if ($_->connection($UMBC,'>')) { warn $_->abbr, " infinite"; $_->data('KRACH','∞'); } elsif ($_->connection($UMBC,'<')) { warn $_->abbr, " zero"; $_->data('KRACH',0); } else { $_->data('KRACH',&five(100*$_->krach)); } } unless ($quickflag or not $koutfile) { warn "Caching vs TUC" if $^W; foreach $team (@tuc) { foreach (@tuc) { $team->tuc($_)->hhwp($_->tuc($team)); } } if ($outdata) { store(\%Team::TEAM,$outdata); } warn "Sorting by RRWP" if $^W; @team = sort {$b->rrwp<=>$a->rrwp or $a->name cmp $b->name} @team; $i=0; foreach (@team) { $_->data('RRWPrk',++$i); } warn "Sorting by winning percentage" if $^W; $i=0; foreach (@teambypct = sort {$b->pct<=>$a->pct or $a->name cmp $b->name} @team) { $_->data('Pctrk',++$i); } warn "Sorting by hockey RPI" if $^W; $i=0; foreach (sort {$b->rpi<=>$a->rpi or $a->name cmp $b->name} @team) { $_->data('HRPIrk',++$i); } warn "Sorting by NCAA RPI" if $^W; $i=0; foreach (@teambyrpi = sort {$b->rpi(.25,.5,.25)<=>$a->rpi(.25,.5,.25) or $a->name cmp $b->name} @team) { $_->data('NRPIrk',++$i); } warn "Sorting by RPIStr" if $^W; $i=0; foreach (sort {$b->data('RPIStr')<=>$a->data('RPIStr') or $a->name cmp $b->name} @team) { $_->data('RPIStrrk',++$i); } warn "Sorting by Opp Pct" if $^W; $i=0; foreach (sort {$b->opppct<=>$a->opppct or $a->name cmp $b->name} @team) { $_->data('OppPctrk',++$i); } warn "Sorting by Opp Opp Pct" if $^W; $i=0; foreach (sort {$b->oppopppct<=>$a->oppopppct or $a->name cmp $b->name} @team) { $_->data('OppOppPctrk',++$i); } warn "Sorting by RPISOS" if $^W; $i=0; foreach (sort {$b->data('RPISOS')<=>$a->data('RPISOS') or $a->name cmp $b->name} @team) { $_->data('RPISOSrk',++$i); } warn "Sorting by KSOS" if $^W; $i=0; foreach (sort {$b->data('KSOS')<=>$a->data('KSOS') or $a->name cmp $b->name} @team) { $_->data('KSOSrk',++$i); } warn "Sorting by Last 8" if $^W; $i=0; foreach (sort {$b->Last(8)->pct<=>$a->Last(8)->pct or $a->name cmp $b->name} @tuc) { $_->data('L8rk',++$i); } warn "Sorting by Last 8 KRACH" if $^W; $i=0; } @tuc=TUCdef->tucdef->teams; warn 'Calculating pairwise comparisons' if $^W; unless ($quickflag) { foreach $team (@team) { $team->data('PWR',''); $team->data('PWRrk',''); } } foreach $team (@tuc) { $team->data('PWC',{}); $team->data('comps',[]); foreach (@tuc) { if ( ($team->data('PWC')->{$_->abbr}=&pairwise($team,$_)) > 0 ) { unshift @{$team->data('comps')}, $_; } } $team->data('PWR',scalar(@{$team->data('comps')})); } warn Team->team('Pr')->data('PWC')->{Lo}; warn 'Sorting by PWCs' if $^W; @tuc=&pwsort([@tuc],{map {($_->abbr, $_->data('PWR'))} @tuc}); $i=0; foreach (@tuc) { $_->data('PWRrk',++$i); } if ($koutfile) { warn 'Calculating modified pairwise comparisons' if $^W; unless ($quickflag) { foreach $team (@team) { $team->data('KPWR',''); $team->data('KPWRrk',''); } } foreach $team (@tuc) { $team->data('KPWC',{}); $team->data('Kcomps',[]); foreach (@tuc) { if ( ($team->data('KPWC')->{$_->abbr}=&kpairwise($team,$_)) > 0 ) { unshift @{$team->data('Kcomps')}, $_; } } $team->data('KPWR',scalar(@{$team->data('Kcomps')})); } warn 'Sorting by KPWCs' if $^W; @Ktuc=&kpwsort([@tuc],{map {($_->abbr, $_->data('KPWR'))} @tuc}); $i=0; foreach (@Ktuc) { $_->data('KPWRrk',++$i); } } unless ($quickflag) { warn "Sorting by Last 8 KRACH" if $^W; $i=0; foreach (sort {$b->Last(8)->hhwp($a->Last(8)) <=> .5 or $a->name cmp $b->name} @tuc) { $_->data('KL8rk',++$i); } warn "Sorting by record vs TUC" if $^W; $i=0; foreach (sort {$b->tuc->pct<=>$a->tuc->pct or $a->name cmp $b->name} @tuc) { $_->data('TUCrk',++$i); } $i=0; foreach (sort {$b->tuc->hhwp($a->tuc)<=> .5 or $a->name cmp $b->name} @tuc) { $_->data('KTUCrk',++$i); } $yesterday=&today(localtime(timelocal(0,0,0,(1*substr($date,6,2)), substr($date,4,2)-1, substr($date,0,4)-1900) )); if ($koutfile) { warn 'Printing rank information' if $^W; sysopen (TABLE, "$tabsdir/rankings.tab", O_WRONLY|O_TRUNC|O_CREAT) or die $!; print TABLE ' '; foreach (@teambypct) { print TABLE ' data('Pctrk')-1)/5) % 2) { print TABLE ' class="tens'; } else { print TABLE ' class="fives'; } print TABLE 'cornell' if $_->abbr eq 'Cr'; print TABLE '"> '; if ($_->istuc) { print TABLE ' '; } print TABLE ' '; } print TABLE '
Team Record Hockey RPI NCAA RPI KRACH PWR KPWR
Rk W-L-T Pct. Rk Rating Rk Rating Rk Rating RRWP Rk Rating Rk Rating
',$_->name,' ',$_->data('Pctrk'),' ',&wlt($_),' ',&pct($_->pct,4),' ',$_->data('HRPIrk'),' ',&pct($_->rpi,4),' ',$_->data('NRPIrk'),' ',&pct($_->rpi(.25,.5,.25),4),' ',$_->data('RRWPrk'),' ',$_->data('KRACH'),' ',&pct($_->rrwp,4),'',$_->data('PWRrk'),' ',$_->data('PWR'),' ',$_->data('KPWRrk'),' ',$_->data('KPWR'),'
'; close TABLE or die $!; warn 'Printing KRACH table' if $^W; sysopen (TABLE, "$tabsdir/krach.tab", O_WRONLY|O_TRUNC|O_CREAT) or die $!; print TABLE '

Current KRACH (including games of ',$yesterday,')

'; foreach $team (@team) { print TABLE ' data('RRWPrk')-1)/5) % 2) { print TABLE ' class="tens'; } else { print TABLE ' class="fives'; } print TABLE 'cornell' if $team->abbr eq 'Cr'; print TABLE '"> ', ' ', ' '; print TABLE ' '; sysopen (COMP, "$tabsdir/Kcrit.". $team->abbr.'.shtml', O_WRONLY|O_TRUNC|O_CREAT) or die $!; print COMP 'BT-Modified Criteria for ', $team->name,'

Bradley-Terry Modified Criteria for ', $team->name, '

Team KRACH Record Sched Strength
Rk Rating RRWP Rk W-L-T PF/PA Rk SOS
',$team->name,' ',$team->data('RRWPrk'),' ',$team->data('KRACH'),' ',&pct($team->rrwp,4),'',$team->data('Pctrk'),' ',&wlt($team),' ',($team->pa ? &five($team->pf/$team->pa) : '∞'), '',$team->data('KSOSrk'),' ',&five(100*$team->data('KSOS')),'
'; foreach (sort {$b->rrwp <=> $a->rrwp} $team->opponents) { print COMP ''; foreach $crit ($team->tuc,$team->Last(8)) { print COMP ''; } print COMP ' '; } print COMP '
OpponentKRACHOverallTUCLast 8
Criterion Rating', $team->data('KRACH'),'', &fivek($team->tuc,$team),'', &fivek($team->Last(8),$team),'
Won-Lost-Tied', &wlt($team->w,$team->l,$team->t),'', &wlt($team->tuc->w,$team->tuc->l,$team->tuc->t), '', &wlt($team->Last(8)->w,$team->Last(8)->l, $team->Last(8)->t),'
',$_->name,'', $_->data('KRACH'),'', &wlt($team->w($_),$team->l($_),$team->t($_)),''; if ($crit->num($_)) { print COMP &wlt($crit->w($_),$crit->l($_),$crit->t($_)); } print COMP '
'; } close COMP or die $!; print TABLE ' '; close TABLE or die $!; warn 'Printing PWR table' if $^W; sysopen (TABLE, "$tabsdir/pwr.tab", O_WRONLY|O_TRUNC|O_CREAT) or die $!; print TABLE ' '; foreach (@tuc) { print TABLE ' data('PWRrk')-1)/5) % 2) { print TABLE ' class="tens'; } else { print TABLE ' class="fives'; } print TABLE 'cornell' if $_->abbr eq 'Cr'; print TABLE '"> '; print TABLE ' '; } print TABLE '
Team Comps Won Hockey RPI vs TUCs Last 8
Rk PWR Rk Hockey RPI Rk W-L-T Pct Rk W-L-T Pct
',$_->name,' ',$_->data('PWRrk'),' ',$_->data('PWR'),' ',$_->data('HRPIrk'),' ',&pct($_->rpi,4),' ',$_->data('TUCrk'),' ',&wlt($_->tuc),' ',&pct($_->tuc->pct,4),' ',$_->data('L8rk'),' ',&wlt($_->Last(8)),' ',&pct($_->Last(8)->pct,4),'
'; close TABLE or die $!; warn 'Printing KPWR table' if $^W; sysopen (TABLE, "$tabsdir/kpwr.tab", O_WRONLY|O_TRUNC|O_CREAT) or die $!; print TABLE ' '; foreach (@Ktuc) { print TABLE ' data('KPWRrk')-1)/5) % 2) { print TABLE ' class="tens'; } else { print TABLE ' class="fives'; } print TABLE 'cornell' if $_->abbr eq 'Cr'; print TABLE '"> '; print TABLE ' '; } print TABLE '
Team Comps Won KRACH vs TUCs Last 8
Rk KPWR Rk W-L-T Rating RRWP Rk W-L-T Rating Rk W-L-T Rating
',$_->name,' ',$_->data('KPWRrk'),' ',$_->data('KPWR'),' ',$_->data('RRWPrk'),' ',&wlt($_),' ',$_->data('KRACH'),' ',&pct($_->rrwp,4),' ',$_->data('KTUCrk'),' ',&wlt($_->tuc),' ',&fivek($_->tuc,$_),' ',$_->data('KL8rk'),' ',&wlt($_->Last(8)),' ',&fivek($_->Last(8),$_),'
'; close TABLE or die $!; warn 'Printing RPI table' if $^W; sysopen (TABLE, "$tabsdir/rpi.tab", O_WRONLY|O_TRUNC|O_CREAT) or die $!; print TABLE '

Current RPI (including games of ',$yesterday,')

'; foreach $team (@teambyrpi) { print TABLE ' data('NRPIrk')-1)/5) % 2) { print TABLE ' class="tens'; } else { print TABLE ' class="fives'; } print TABLE 'cornell' if $team->abbr eq 'Cr'; print TABLE '"> '; print TABLE ' '; sysopen (COMP, "$tabsdir/crit.". $team->abbr.'.shtml', O_WRONLY|O_TRUNC|O_CREAT) or die $!; print COMP 'Criteria for ', $team->name,'

Criteria for ', $team->name, '

Team Hockey RPI NCAA RPI Record Sched Strength Opp Pct Opp Opp Pct RPIStr
Rk Rating Rk Rating Rk W-L-T Pct Rk SOS Rk OPct Rk OOPct Rk Rating
',$team->name,' ',$team->data('HRPIrk'),' ',&pct($team->rpi,4),' ',$team->data('NRPIrk'),' ',&pct($team->rpi(.25,.5,.25),4),' ',$team->data('Pctrk'),' ',&wlt($team),' ',&pct($team->pct,4),' ',$team->data('RPISOSrk'),' ',&pct($team->data('RPISOS'),4),' ',$team->data('OppPctrk'),' ',&pct($team->opppct,4),' ',$team->data('OppOppPctrk'),' ',&pct($team->oppopppct,4),' ',$team->data('RPIStrrk'),' ',&pct($team->data('RPIStr'),4),'
'; %strength=(); foreach ($team->opponents) { if ($team->num($_)) { $strength{$_->abbr}=(10*($_->pf-$_->pf($team)) /($_->num-$_->num($team)) +3*$_->opppct)/13; } else { $strength{$_->abbr}=$_->data('RPIStr'); } } foreach (sort {$strength{$b->abbr} <=> $strength{$a->abbr}} $team->opponents) { print COMP ''; foreach $crit ($team->tuc,$team->Last(8)) { print COMP ''; } print COMP ' '; } print COMP '
OpponentStrengthOverallTUCLast 8
RPI', &pct($team->rpi,4),'
Won-Lost-Tied', &wlt($team->w,$team->l,$team->t),'', &wlt($team->tuc->w,$team->tuc->l,$team->tuc->t), '', &wlt($team->Last(8)->w,$team->Last(8)->l, $team->Last(8)->t),'
',$_->name,'', &pct($strength{$_->abbr},4),'', &wlt($team->w($_),$team->l($_),$team->t($_)),''; if ($crit->num($_)) { print COMP &wlt($crit->w($_),$crit->l($_),$crit->t($_)); } print COMP '
'; close COMP or die $!; } print TABLE ' '; close TABLE or die $!; } warn 'Printing PWC table' if $^W; sysopen (TABLE, ($nlflag ? "$tabsdir/comps.tmp" : "$tabsdir/comps.tab") ,O_WRONLY|O_TRUNC|O_CREAT) or die $!; print TABLE '

', ( $stopdate == 30001231 ? 'Current ' : () ), 'Pairwise Comparisons (including games of ', $yesterday,')

'; foreach $team (@tuc) { print TABLE ' '; foreach (@tuc) { next if $_->data('PWR')==@tuc-1; if ($_ eq $team) { print TABLE ' '; } elsif ($team->data('PWC')->{$_->abbr}>0) { print TABLE ' '; sysopen (COMP, "$tabsdir/comp.". $team->abbr.$_->abbr.'.html', O_WRONLY|O_TRUNC|O_CREAT) or die $!; print COMP '', $team->abbr,' vs ',$_->abbr,'
Pairwise Comparisons
Rk Team PWR RPI Comparisons Won
',$team->data('PWRrk'),' ', ($nlflag ? () : ('') ),$html_name{$team->abbr},($nlflag ? () :''),' (', $conf{$team->abbr},') ',$team->data('PWR'),' ',&pct($team->rpi,4),'', ($nlflag ? () : ( '')), $_->abbr,($nlflag ? () :''),'
rpi <=> $_->rpi; print COMP $class{$winner},'>',&pct($team->rpi,4), '', &pct($_->rpi,4),' '; $winner=$team->tuc($_)->pct <=> $_->tuc($team)->pct; print COMP '',&wlt($team->tuc($_)), '',&pct($team->tuc($_)->pct,4), '',&pct($_->tuc($team)->pct,4), '',&wlt($_->tuc($team)), ' '; $winner=$team->Last(8)->pct <=> $_->Last(8)->pct; print COMP '',&wlt($team->Last(8)), '',&pct($team->Last(8)->pct,4), '',&pct($_->Last(8)->pct,4), '',&wlt($_->Last(8)),' '; $winner=$team->common($_)->pct <=> $_->common($team)->pct; print COMP '',&wlt($team->common($_)), '',&pct($team->common($_)->pct,4), '',&pct($_->common($team)->pct,4), '',&wlt($_->common($team)), ' '; $winner=$team->w($_) <=> $_->w($team); print COMP '
', $html_name{$team->abbr}, '', $html_name{$_->abbr},'
',&wlt($team),'RPI',&wlt($_), '
TUC
L8
COp
', &wlt($team->w($_),$team->l($_),$team->t($_)), 'H2H', &wlt($_->w($team),$_->l($team),$_->t($team)), '
'; close COMP or die $!; } else { print TABLE '   '; } } print TABLE ' '; } print TABLE ' '; close TABLE or die $!; if ($koutfile) { warn 'Printing KPWC table' if $^W; sysopen (TABLE, ($nlflag ? "$tabsdir/Kcomps.tmp" : "$tabsdir/Kcomps.tab") ,O_WRONLY|O_TRUNC|O_CREAT) or die $!; print TABLE '

Current KRACH-Modified Pairwise Comparisons (including games of ', $yesterday,')

'; foreach $team (@Ktuc) { print TABLE ' '; foreach (@Ktuc) { next if $_->data('KPWR')==@Ktuc-1; if ($_ eq $team) { print TABLE ' '; } elsif ($team->data('KPWC')->{$_->abbr}>0) { print TABLE ' '; sysopen (COMP, "$tabsdir/Kcomp.". $team->abbr.$_->abbr.'.html', O_WRONLY|O_TRUNC|O_CREAT) or die $!; print COMP '', $team->abbr,' vs ',$_->abbr,'
Bradley-Terry Modified Pairwise Comparisons
Rk Team KPWR RRWP Comparisons Won
',$team->data('KPWRrk'),' ', ($nlflag ? () : ('') ),$html_name{$team->abbr},($nlflag ? () :''),' (', $conf{$team->abbr},') ',$team->data('KPWR'),' ',&pct($team->rrwp,4),'', ($nlflag ? () : ('')), $_->abbr,($nlflag ? () :''), '
rrwp <=> $_->rrwp; print COMP $class{$winner},'>',$team->data('KRACH'), '', $_->data('KRACH'),' '; $winner=$team->tuc($_)->hhwp($_->tuc($team)) <=> 0.5; print COMP '',&fivek($team->tuc($_),$team), '',&fivek($_->tuc($team),$_), ' '; $winner=$team->Last(8)->hhwp($_->Last(8)) <=> 0.5; print COMP '', &fivek($team->Last(8),$_,$_->Last(8)), '', &fivek($_->Last(8),$team,$team->Last(8)), ' '; $winner=$team->common($_)->hhwp($_->common($team)) <=> 0.5; print COMP '',&fivek($team->common($_),$team), '',&fivek($_->common($team),$_), ' '; $winner=$team->w($_) <=> $_->w($team); print COMP '
', $html_name{$team->abbr}, '', $html_name{$_->abbr},'
',&wlt($team),'KRACH',&wlt($_), '
',&wlt($team->tuc($_)), 'TUC',&wlt($_->tuc($team)), '
',&wlt($team->Last(8)), 'L8',&wlt($_->Last(8)),'
',&wlt($team->common($_)), 'COp',&wlt($_->common($team)), '
', &wlt($team->w($_),$team->l($_),$team->t($_)), 'H2H', &wlt($_->w($team),$_->l($team),$_->t($team)), '
'; close COMP or die $!; } else { print TABLE '   '; } } print TABLE ' '; } print TABLE ' '; close TABLE or die $!; } } if ($outfile) { warn 'Outputting PWCs' if $^W; sysopen (COMPS, $outfile, O_WRONLY|O_TRUNC|O_CREAT) or die $!; print COMPS "$date\n"; foreach $team (@tuc) { @{$team->data('comps')}=sort {$a->data('PWRrk')<=>$b->data('PWRrk') } @{$team->data('comps')}; print COMPS join ' ',$team->abbr,$team->rpi, (map {$_->abbr} @{$team->data('comps')}),"\n"; } close COMPS or die $!; } if ($koutfile) { warn 'Outputting KPWCs' if $^W; sysopen (COMPS, $koutfile, O_WRONLY|O_TRUNC|O_CREAT) or die $!; print COMPS "$date\n"; foreach $team (@Ktuc) { @{$team->data('Kcomps')}=sort {$a->data('KPWRrk')<=>$b->data('KPWRrk') } @{$team->data('Kcomps')}; # print COMPS join ' ',$team->abbr, 1/(1+1/$team->krach) print COMPS join ' ',$team->abbr, $team->rrwp , (map {$_->abbr} @{$team->data('Kcomps')}),"\n"; } close COMPS or die $!; } exit; warn "Finding average conference RPI" if $^W; while (($conf,$cteam)=each %conf_team) { @{$cteam}=sort {Team->team($b)->rpi <=> Team->team($a)->rpi} @{$cteam}; $confrpi{$conf}=0; foreach (@conf) { $confw{$conf}{$_}=0; $conft{$conf}{$_}=0; $confrrwp{$conf}{$_}=0; } foreach $team (@{$cteam}) { foreach (@team) { unless (exists $conf{$_->abbr}) { die $team,$conf,$_,$_->abbr; } $confw{$conf}{$conf{$_->abbr}}+=Team->team($team)->w($_); $conft{$conf}{$conf{$_->abbr}}+=Team->team($team)->t($_); if ($koutfile) { $confrrwp{$conf}{$conf{$_->abbr}}+=Team->team($team)->hhwp($_); } } $confrpi{$conf}+=Team->team($team)->rpi unless $team eq $cteam->[0]; } $opprpi{$conf}=$confrpi{$conf}/(@{$cteam}-1); $confrpi{$conf}=($confrpi{$conf}+Team->team($cteam->[0])->rpi)/@{$cteam}; foreach (@conf) { unless (@{$cteam}*@{$conf_team{$_}}) { die "$conf $_ ", scalar(@{$cteam}),' ',scalar(@{$conf_team{$_}}); } $confrrwp{$conf}{$_}/=(@{$cteam}*@{$conf_team{$_}}); } } warn "Printing head-to-head and RPI tables" if $^W; sysopen (TABLE, "$tabsdir/confrpi.tab", O_WRONLY|O_TRUNC|O_CREAT) or die $!; @conf = sort {$confrpi{$b} <=> $confrpi{$a}} @conf; print TABLE ' '; foreach (@conf) { print TABLE ' '; } print TABLE ' '; foreach $conf (@conf) { print TABLE ' '; foreach (@conf) { if ($conf ne $_) { print TABLE ' '; } else { print TABLE ' '; } } print TABLE ' '; } print TABLE '
Conference Avg RPIvs ',$conf_abbr{$_},'Leader Opp RPI
', $conf_name{$conf}, ' (',$conf,') ', &pct($confrpi{$conf},4), '',&wlt($confw{$conf}{$_},$confw{$_}{$conf}, $conft{$conf}{$_}),'',$conf_team{$conf}->[0],' ', &pct($opprpi{$conf},4),'
'; close TABLE or die $!; if ($koutfile) { sysopen (TABLE, "$tabsdir/confrrwp.tab", O_WRONLY|O_TRUNC|O_CREAT) or die $!; @conf = sort {$confrrwp{$b}{$a} <=> $confrrwp{$a}{$b}} @conf; print TABLE ' '; foreach (@conf) { print TABLE ' '; } print TABLE ' '; foreach $conf (@conf) { print TABLE ' '; foreach (@conf) { if ($conf ne $_) { print TABLE ' '; } else { print TABLE ' '; } } print TABLE ' '; } print TABLE '
Conferencevs ',$conf_name{$_},'
', $conf_name{$conf}, '',&pct($confrrwp{$conf}{$_},4),'
'; close TABLE or die $!; }