1. #!/usr/bin/perl -w 2. use strict; 3. use SAPserver; 4. use COserver; 5. use SeedUtils; 6. 7. my $sapObject = SAPserver->new(); 8. 9. my $genomeHash = $sapObject->all_genomes(-complete => 1); 10. for my $genome (keys %$genomeHash) { 11. my $genomeName = $genomeHash->{$genome}; 12. my $geneHash = $sapObject->feature_assignments(-genome => $genome, 13. -type => 'peg'); 14. my @hypotheticalGenes = grep { &SeedUtils::hypo($geneHash->{$_}) } sort keys %$geneHash; 15. my $couplingHash = $sapObject->conserved_in_neighborhood(-ids => \@hypotheticalGenes, 16. -hash => 1); 17. for my $gene (@hypotheticalGenes) { 18. my $couplingList = $couplingHash->{$gene}; 19. if (defined $couplingList) { 20. my $subHash = $sapObject->ids_to_subsystems(-ids => [ map { $_->[1]} @$couplingList ]); 21. my ($bestCoupler, $bestScore, $bestFunction) = (undef, 0, ''); 22. for my $coupling (@$couplingList) { 23. my ($score, $coupler, $function) = @$coupling; 24. if ($subHash->{$coupler} && $score > $bestScore) { 25. $bestCoupler = $coupler; 26. $bestScore = $score; 27. $bestFunction = $function; 28. } 29. } 30. if (defined $bestCoupler) { 31. print join("\t", $gene, $geneHash->{$gene}, $genome, $genomeName, 32. $bestCoupler, $bestScore, $bestFunction) . "\n"; 33. } 34. } 35. } 36. }