annotate variant_effect_predictor/Bio/EnsEMBL/Pipeline/FASTA/EmailSummary.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 package Bio::EnsEMBL::Pipeline::FASTA::EmailSummary;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 use base qw/Bio::EnsEMBL::Hive::RunnableDB::NotifyByEmail Bio::EnsEMBL::Pipeline::Base/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 use Bio::EnsEMBL::Hive::Utils qw/destringify/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 sub fetch_input {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 $self->assert_executable('sendmail');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 my $dump_dna = $self->jobs('DumpDNA');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 my $copy_dna = $self->jobs('CopyDNA');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 my $dump_genes = $self->jobs('DumpGenes');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 my $blast_dna = $self->jobs('BlastDNAIndex');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 my $blast_gene = $self->jobs('BlastGeneIndex');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 my $blast_pep = $self->jobs('BlastPepIndex');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 my $blat = $self->jobs('BlatDNAIndex', 100);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 my $blat_sm = $self->jobs('BlatSmDNAIndex', 100);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 my @args = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 $dump_dna->{successful_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 $dump_dna->{failed_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 $copy_dna->{successful_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 $copy_dna->{failed_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $dump_genes->{successful_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 $dump_genes->{failed_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $blast_dna->{successful_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $blast_dna->{failed_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 $blast_gene->{successful_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 $blast_gene->{failed_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 $blast_pep->{successful_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 $blast_pep->{failed_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 $blat->{successful_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 $blat->{failed_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 $blat_sm->{successful_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 $blat_sm->{failed_jobs},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 $self->failed(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 $self->summary($dump_dna),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 $self->summary($copy_dna),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 $self->summary($dump_genes),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $self->summary($blast_dna),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 $self->summary($blast_gene),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $self->summary($blast_pep),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 $self->summary($blat),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 $self->summary($blat_sm),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 my $msg = sprintf(<<'MSG', @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 Your FASTA Pipeline has finished. We have:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 * %d species with new DNA Dumped (%d failed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 * %d species with copied DNA (%d failed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 * %d species with genes dumped (%d failed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 * %d species with BLAST DNA indexes generated (%d failed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 * %d species with BLAST GENE indexes generated (%d failed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 * %d species with BLAST PEPTIDE indexes generated (%d failed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 * %d species with BLAT DNA generated (%d failed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 * %d species with BLAT soft-masked DNA generated (%d failed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 ===============================================================================
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Full breakdown follows ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 %s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 MSG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 $self->param('text', $msg);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 sub jobs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 my ($self, $logic_name, $minimum_runtime) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 my $aa = $self->db->get_AnalysisAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 my $aja = $self->db->get_AnalysisJobAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 my $analysis = $aa->fetch_by_logic_name($logic_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 my $id = $analysis->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 my @jobs = @{$aja->generic_fetch("j.analysis_id =$id")};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 $_->{input} = destringify($_->input_id()) for @jobs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 @jobs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 sort { $a->{input}->{species} cmp $b->{input}->{species} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 grep {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 if($minimum_runtime) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 if($minimum_runtime > $_->runtime_msec()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 @jobs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my %passed_species = map { $_->{input}->{species}, 1 } grep { $_->status() eq 'DONE' } @jobs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my %failed_species = map { $_->{input}->{species}, 1 } grep { $_->status() eq 'FAILED' } @jobs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 return {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 analysis => $analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 name => $logic_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 jobs => \@jobs,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 successful_jobs => scalar(keys %passed_species),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 failed_jobs => scalar(keys %failed_species),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 sub failed {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my $failed = $self->db()->get_AnalysisJobAdaptor()->fetch_all_failed_jobs();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 if(! @{$failed}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 return 'No jobs failed. Congratulations!';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 my $output = <<'MSG';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 The following jobs have failed during this run. Please check your hive's error msg table for the following jobs:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 MSG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 foreach my $job (@{$failed}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 my $analysis = $self->db()->get_AnalysisAdaptor()->fetch_by_dbID($job->analysis_id());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 my $line = sprintf(q{ * job_id=%d %s(%5d) input_id='%s'}, $job->dbID(), $analysis->logic_name(), $analysis->dbID(), $job->input_id());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 $output .= $line;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $output .= "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 return $output;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 my $sorter = sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 my $status_to_int = sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 my ($v) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 return ($v->status() eq 'FAILED') ? 0 : 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my $status_sort = $status_to_int->($a) <=> $status_to_int->($b);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 return $status_sort if $status_sort != 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 return $a->{input}->{species} cmp $b->{input}->{species};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 sub summary {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 my ($self, $data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 my $name = $data->{name};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 my $underline = '~'x(length($name));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 my $output = "$name\n$underline\n\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 my @jobs = @{$data->{jobs}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 if(@jobs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 foreach my $job (sort $sorter @{$data->{jobs}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 my $species = $job->{input}->{species};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $output .= sprintf(" * %s - job_id=%d %s\n", $species, $job->dbID(), $job->status());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $output .= "No jobs run for this analysis\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 $output .= "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 return $output;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 1;