[Bio] / FigKernelScripts / indirect_functional_coupling_mcauliffe.pl Repository:
ViewVC logotype

View of /FigKernelScripts/indirect_functional_coupling_mcauliffe.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (download) (as text) (annotate)
Thu Nov 2 15:52:51 2006 UTC (13 years ago) by overbeek
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, myrast_rel40, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
Changes since 1.4: +8 -5 lines
indirect functional coupling should not be from a PEG to itself

########################################################################
#
# Copyright (c) 2003-2006 University of Chicago and Fellowship
# for Interpretations of Genomes. All Rights Reserved.
#
# This file is part of the SEED Toolkit.
# 
# The SEED Toolkit is free software. You can redistribute
# it and/or modify it under the terms of the SEED Toolkit
# Public License. 
#
# You should have received a copy of the SEED Toolkit Public License
# along with this program; if not write to the University of Chicago
# at info@ci.uchicago.edu or the Fellowship for Interpretation of
# Genomes at veronika@thefig.info or download a copy from
# http://www.theseed.org/LICENSE.TXT.
#

use strict;
use FIG;
my $fig = new FIG;
use FIGStatisticalModels;
my $fs  = new FIGStatisticalModels;

# $usage = "usage: indirect_functional_coupling < PEGS > PEG-PEG-SC-PEG3-PEG4-BBH13-FC34-BBH42";

while (<STDIN>)
{
    chomp;
    my $peg;
    if (/^fig\|/) {$peg=$_}
    else {$peg = $fig->by_alias($_)}
    next unless ($fig->is_real_feature($peg));
    foreach my $tuple (sort { $b->[1] <=> $a->[1] } &indirectly_coupled($fig,$peg))
    {
        print join("\t",($peg,@$tuple)),"\n";
    }
}


sub indirectly_coupled {
    my($fig,$peg1) = @_;
    my(%best_sc);

    my $genome1 = &FIG::genome_of($peg1);

    foreach my $bbh13 ($fig->bbhs($peg1))
    {
        my ($peg3, $bbh_eval13, $bbh_score13) = @$bbh13;
        unless (defined $bbh_score13) {die "Couldn't get a normalized bit score for the BBHs. Are your BBHs upto date?"}
        
        foreach my $fc34 ($fig->coupled_to($peg3))
        {
	    my($peg4,$fc_sc34) = @$fc34;
	    foreach my $bbh42 (grep { &FIG::genome_of($_->[0]) eq $genome1 } $fig->bbhs($peg4))
	    {
		my($peg2,$bbh_eval24, $bbh_score24) = @$bbh42;
		if ($peg1 ne $peg2)
		{
		    unless (defined $bbh_score24) {die "Couldn't get a normalized bit score for the BBHs. Are your BBHs upto date?"}
		    my $psc = &score($fig,$peg1,$peg2,$peg3,$peg4,$bbh_score13,$fc_sc34,$bbh_score24);
		    my $best = $best_sc{$peg2};
		    if ((! defined($best)) || ($best->[0] < $psc))
		    {
			$best_sc{$peg2} = [$psc,$peg3,$peg4,$bbh_score13,$fc_sc34,$bbh_score24];
		    }
		}
	    }
	}
    }
    return map { [$_,@{$best_sc{$_}}] } keys(%best_sc);
}

sub score {
    my($fig,$peg1,$peg2,$peg3,$peg4,$sc_bbh13,$fc_sc34,$sc_bbh24) = @_;

unless (defined $sc_bbh13 && $fc_sc34 && $sc_bbh24) {print STDERR "ERROR: $sc_bbh13 && $fc_sc34 && $sc_bbh24\n"; return 0}
    my $p1 = &score_bbh($fig,$peg1,$sc_bbh13);
    my $p2 = $fs->fc_score2probability($fc_sc34);
    my $p3 = &score_bbh($fig,$peg4,$sc_bbh24);
    my $sc = sprintf("%0.2f",$p1 * $p2 * $p3);
    return $sc;
}

sub score_bbh {
    my($fig,$peg,$bsc) = @_;
    my($i,$bins);

    my $func = scalar($fig->function_of($peg));
    my $tc=0;
    $tc = 1 if ($func =~ /aminotransferase|system|component|oxidase|regulator|cytochrome|specific|permease|transcriptional|transport|dehydrogenase/i);

    return $fs->fc_bitscore2probability($bsc, $tc);
    
}


MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3