[Bio] / SubsystemExtension / subsystem_extension.pl Repository:
ViewVC logotype

Annotation of /SubsystemExtension/subsystem_extension.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (view) (download) (as text)

1 : olson 1.1 #!/Users/fig/FIGDisk/env/mac/bin/perl
2 :    
3 :     use strict;
4 :     use warnings;
5 :    
6 :     use Getopt::Std;
7 :     use Term::ReadKey;
8 :     use IO::Handle;
9 :     use Data::Dumper;
10 :     use FIG;
11 :     use Subsystem;
12 :     use SubsystemExtension::AEOS;
13 :     use SubsystemExtension::ValidationInterface;
14 :     use SubsystemExtension::SubsystemCandidateFactory::SEED;
15 : heiko 1.2 use SubsystemExtension::ExtensionConfig qw (TEMPDIR);
16 :    
17 : olson 1.1 use constant DEBUG => 1;
18 :     no warnings qw(redefine);
19 :    
20 :     #
21 :     # this is necessary if the script is started via rsh(1)
22 :     # otherwise you won't see any output until the first <RETURN>
23 :     #
24 :     STDOUT->autoflush(1);
25 :    
26 :     sub usage {
27 :     print "\t -= subsystem_extension =-\n\n";
28 :     print "This script is used to extend subsystems (either one or a list in a file) to one ore more genomes.\n";
29 :     print "If neither the parameter -t nor -m is defined all genomes not yet present in the subsystem (excluding environmental samples) will be used\n\n";
30 :    
31 : heiko 1.3 print "usage:\n subsystem_extension -s <subsystem name> -f <subsystem file> [-t <taxon_id> -m <taxon_id file> -a] -d <validation_directory> -e <e-value cutoff: e.g. 1.0e-10> -r <number of organisms to search in> \n\n";
32 : olson 1.1
33 :     }
34 :    
35 :     # global variables
36 : heiko 1.3 our($opt_s, $opt_t, $opt_f, $opt_d, $opt_m, $opt_a, $opt_e, $opt_r);
37 : olson 1.1
38 : heiko 1.3 getopts('s:t:f:d:m:e:r:a');
39 : olson 1.1
40 :    
41 :     if ((!$opt_s) && (!$opt_f)) {
42 :     usage;
43 :     print "ERROR: Can't start script : no subsystem/filename given!\n";
44 :     exit 1;
45 :     }
46 :    
47 :    
48 :    
49 :    
50 :     my $fig = new FIG;
51 :     my @subsystems;
52 :    
53 :     push @subsystems, $opt_s if ($opt_s);
54 :    
55 :    
56 :     ## collect the subsystem names from a flat file
57 :     # each line holds one subsystem name
58 :    
59 :     if ($opt_f && -e $opt_f) {
60 :     open SSF, "<$opt_f";
61 :     while (<SSF>) {
62 :     chomp;
63 :     push @subsystems, $_;
64 :     }
65 :     close SSF;
66 :     }
67 :    
68 :     my $html = [];
69 :    
70 :    
71 :     my @missing_genomes;
72 :    
73 :     # add single or multiple taxon ids (parsed from file) to
74 :     # the list of missing genomes
75 :    
76 :     if ($opt_t) {
77 :     push @missing_genomes, $opt_t;
78 :     } elsif ($opt_m && -e $opt_m) {
79 :     open TF, "<$opt_m";
80 :     while (<TF>) {
81 :     chomp;
82 :     push @missing_genomes, $_ if $_ =~ /\d+\.\d+/;
83 :     }
84 :     close TF;
85 :    
86 :     } elsif ($opt_a) {
87 :     @missing_genomes = grep { $_ !~ /^99999/ } $fig->genomes("complete");
88 :     }
89 :    
90 : heiko 1.2 $opt_d = TEMPDIR unless ($opt_d);
91 : olson 1.1
92 :     foreach (@subsystems) {
93 :    
94 :     my $subsystem = $fig->get_subsystem($_);
95 :    
96 :     if (!$subsystem) {
97 :     print STDERR "could not initialize the subsystem $opt_s\n";
98 :     next;
99 :     }
100 :    
101 :     my $extension = SubsystemExtension::SubsystemCandidateFactory::SEED->new($subsystem, "master", $opt_e, $opt_r);
102 :    
103 :    
104 :     if (ref $extension && $extension->isa("SubsystemExtension::SubsystemCandidateFactory")) {
105 :    
106 :     my %in = map { $_ => 1 } $subsystem->get_genomes;
107 :    
108 :    
109 :     unless (scalar @missing_genomes > 0) {
110 :     print STDERR "getting missing genomes for subsystem ".$subsystem->get_name()."\n" if (DEBUG);
111 :     @missing_genomes = grep { ! $in{$_} } grep { $_ !~ /^99999/ } $fig->genomes("complete");
112 :     }
113 :    
114 :    
115 :     foreach my $genome (@missing_genomes) {
116 :     my $subsystem_candidates = $extension->generate([$genome]);
117 :    
118 :     foreach (keys %$subsystem_candidates) {
119 :     my $subsystem_candidate;
120 :     # generate the aeos and extend the subsystem!!
121 : heiko 1.3
122 :     my $aeos = SubsystemExtension::AEOS->new($fig, $subsystem, $genome, $subsystem_candidates->{$_}, {mute=>1});
123 :     $subsystem_candidate = $aeos->extend();
124 :    
125 : olson 1.1
126 :     my $subsystem_name = $subsystem->get_name();
127 :     $subsystem_name =~ s/\(/\\\(/;
128 :     $subsystem_name =~ s/\)/\\\)/;
129 :    
130 :     mkdir $opt_d."/".$subsystem->get_name() unless (-d $opt_d."/".$subsystem->get_name());
131 : heiko 1.3
132 : olson 1.1 $subsystem_candidate->toFile($opt_d."/".$subsystem->get_name()."/".$_.".scs") if (-d $opt_d);
133 : heiko 1.3
134 : olson 1.1 if ($subsystem_candidate->functional_variant() > 0) {
135 :     my $validation_interface = SubsystemExtension::ValidationInterface->new($fig, $subsystem, $_, $subsystem_candidate);
136 :     if (-d $opt_d) {
137 :    
138 :     my $filename = $opt_d."/".$subsystem->get_name()."/".$_;
139 :     $filename .= "_complete" if ($subsystem_candidate->functional_variant_score() >= 0.9);
140 :     $filename .= ".html";
141 :     open VAL, ">$filename";
142 :     print VAL $validation_interface->html_output();
143 :     close VAL;
144 : heiko 1.3
145 : olson 1.1 } else {
146 :     print $validation_interface->html_output();
147 :     }
148 :     }
149 :     }
150 :     }
151 :    
152 :     }
153 :     }
154 :    
155 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3