AnalysisJob.pm 3.19 KB
Newer Older
Jessica Severin's avatar
Jessica Severin committed
1
2
3
4
5
6
7
8
9
#
# You may distribute this module under the same terms as perl itself
#
# POD documentation - main docs before the code

=pod 

=head1 NAME

Jessica Severin's avatar
Jessica Severin committed
10
  Bio::EnsEMBL::Hive::AnalysisJob
Jessica Severin's avatar
Jessica Severin committed
11
12

=head1 DESCRIPTION
Jessica Severin's avatar
Jessica Severin committed
13

14
  An AnalysisJob is the link between the input_id control data, the analysis and
Jessica Severin's avatar
Jessica Severin committed
15
  the rule system.  It also tracks the state of the job as it is processed
Jessica Severin's avatar
Jessica Severin committed
16
17

=head1 CONTACT
Jessica Severin's avatar
Jessica Severin committed
18

19
20
  Contact Jessica Severin on EnsEMBL::Hive implemetation/design detail: jessica@ebi.ac.uk
  Contact Ewan Birney on EnsEMBL in general: birney@sanger.ac.uk
Jessica Severin's avatar
Jessica Severin committed
21
22

=head1 APPENDIX
Jessica Severin's avatar
Jessica Severin committed
23

24
25
  The rest of the documentation details each of the object methods.
  Internal methods are usually preceded with a _
Jessica Severin's avatar
Jessica Severin committed
26

Jessica Severin's avatar
Jessica Severin committed
27
28
29
30
31
32
33
34
35
36
=cut

package Bio::EnsEMBL::Hive::AnalysisJob;

use strict;

use Bio::EnsEMBL::Analysis;
use Bio::EnsEMBL::DBSQL::DBAdaptor;
use Bio::EnsEMBL::Hive::Worker;

37
38
39
40
41
sub new {
  my ($class,@args) = @_;
  my $self = bless {}, $class;
  return $self;
}
Jessica Severin's avatar
Jessica Severin committed
42
43
44
45
46
47
48
49
50
51
52
53
54
55

sub adaptor {
  my $self = shift;
  $self->{'_adaptor'} = shift if(@_);
  return $self->{'_adaptor'};
}

sub dbID {
  my $self = shift;
  $self->{'_dbID'} = shift if(@_);
  return $self->{'_dbID'};
}

sub input_id {
56
57
  my $self = shift;
  $self->{'_input_id'} = shift if(@_);
Jessica Severin's avatar
Jessica Severin committed
58
59
60
61
62
63
64
65
66
67
  return $self->{'_input_id'};
}

sub hive_id {
  my $self = shift;
  $self->{'_hive_id'} = shift if(@_);
  return $self->{'_hive_id'};
}

sub analysis_id {
68
69
  my $self = shift;
  $self->{'_analysis_id'} = shift if(@_);
Jessica Severin's avatar
Jessica Severin committed
70
71
72
73
  return $self->{'_analysis_id'};
}

sub job_claim {
74
75
  my $self = shift;
  $self->{'_job_claim'} = shift if(@_);
Jessica Severin's avatar
Jessica Severin committed
76
77
78
79
  return $self->{'_job_claim'};
}

sub status {
80
81
  my $self = shift;
  $self->{'_status'} = shift if(@_);
Jessica Severin's avatar
Jessica Severin committed
82
83
84
  return $self->{'_status'};
}

85
86
87
88
89
90
91
sub update_status {
  my ($self, $status ) = @_;
  return unless($self->adaptor);
  $self->status($status);
  $self->adaptor->update_status($self);
}

Jessica Severin's avatar
Jessica Severin committed
92
sub retry_count {
93
94
  my $self = shift;
  $self->{'_retry_count'} = shift if(@_);
95
  $self->{'_retry_count'} = 0 unless(defined($self->{'_retry_count'}));
Jessica Severin's avatar
Jessica Severin committed
96
97
98
99
  return $self->{'_retry_count'};
}

sub completed {
100
101
  my $self = shift;
  $self->{'_completed'} = shift if(@_);
Jessica Severin's avatar
Jessica Severin committed
102
103
104
  return $self->{'_completed'};
}

105
sub runtime_msec {
106
107
  my $self = shift;
  $self->{'_runtime_msec'} = shift if(@_);
108
109
110
111
112
  $self->{'_runtime_msec'} = 0 unless(defined($self->{'_runtime_msec'}));
  return $self->{'_runtime_msec'};
}

sub query_count {
113
114
  my $self = shift;
  $self->{'_query_count'} = shift if(@_);
115
116
117
118
  $self->{'_query_count'} = 0 unless(defined($self->{'_query_count'}));
  return $self->{'_query_count'};
}

Jessica Severin's avatar
Jessica Severin committed
119
sub branch_code {
120
121
  my $self = shift;
  $self->{'_branch_code'} = shift if(@_);
Jessica Severin's avatar
Jessica Severin committed
122
123
124
125
126
  $self->{'_branch_code'} = 1 unless(defined($self->{'_branch_code'}));
  return $self->{'_branch_code'};
}

sub stdout_file {
127
128
  my $self = shift;
  $self->{'_stdout_file'} = shift if(@_);
Jessica Severin's avatar
Jessica Severin committed
129
130
131
132
  return $self->{'_stdout_file'};
}

sub stderr_file {
133
134
  my $self = shift;
  $self->{'_stderr_file'} = shift if(@_);
Jessica Severin's avatar
Jessica Severin committed
135
136
137
138
139
  return $self->{'_stderr_file'};
}

sub print_job {
  my $self = shift;
Leo Gordon's avatar
Leo Gordon committed
140
141
142
143
144
  my $logic_name = $self->adaptor()
      ? $self->adaptor->db->get_AnalysisAdaptor->fetch_by_dbID($self->analysis_id)->logic_name()
      : '';

  printf("job_id=%d %35s(%5d) retry=%d input_id='%s'\n", 
Jessica Severin's avatar
Jessica Severin committed
145
146
147
148
149
       $self->dbID,
       $logic_name,
       $self->analysis_id,
       $self->retry_count,
       $self->input_id);
Jessica Severin's avatar
Jessica Severin committed
150
151
152
}

1;