+ # check to see if there's a different name we should be using
+ if (not exists $genes{$gene[NAME]}) {
+ # if the gene has a valid name, we do at least one test.
+ my $num_tested = $gene[NAME] ne 'NO NAME' ? 1 : 0;
+ my %candidates;
+ if ($gene[NAME] ne 'NO NAME' and exists $alias_reverse{$gene[NAME]} and $alias_reverse{$gene[NAME]} ne '') {
+ $candidates{$alias_reverse{$gene[NAME]}}++;
+ }
+ else {
+ for my $alias (grep {$_ !~ /^NO (ALIASES|NAME)$/} split(/; /, $gene[ALIAS])) {
+ if (exists $alias_reverse{$alias} and $alias_reverse{$alias} ne '') {
+ $candidates{$alias_reverse{$alias}}++;
+ }
+ $num_tested++;
+ }
+ }
+ #print STDERR "Choosing $alias_reverse{$gene[NAME]} for $gene[NAME]\n";
+ for my $candidate (keys %candidates) {
+ if ($candidates{$candidate} > ($num_tested/2)) {
+ print STDERR "Choosing $candidate for '$gene[NAME]', as it matched $candidates{$candidate} of $num_tested tests\n";
+ $gene[NAME] = $candidate;
+ }
+ }
+ }