Bioinfo
view release on metacpan or search on metacpan
lib/Bioinfo/PBS/Queue.pm view on Meta::CPAN
package Bioinfo::PBS::Queue;
use Moose;
use Modern::Perl;
use Parallel::ForkManager;
use IO::All;
use List::Util 'uniq';
use namespace::autoclean;
our $VERSION = '0.1.15'; # VERSION:
# ABSTRACT: used to submit a batch of task to Torque cluster
has tasks => (
is => 'rw',
isa => 'ArrayRef[Bioinfo::PBS]',
default => sub { [] },
traits => ['Array'],
handles => {
_add_tasks => 'push',
all_tasks => 'elements',
filter_tasks => 'grep',
count_tasks => 'count',
pop_tasks => 'pop',
},
);
sub add_tasks {
my $self = shift;
my $type = ref $_[0];
if ($type eq 'Bioinfo::PBS') {
$self->_add_tasks(@_);
} elsif ($type eq 'Bioinfo::PBS::Queue') {
$self->_add_tasks($_[0]->all_tasks);
} elsif ($type eq 'HASH') {
use Bioinfo::PBS;
$self->_add_tasks(Bioinfo::PBS->new($_)) for @_;
}
}
has name => (
is => 'rw',
isa => 'Str',
default => sub { 'pbs' },
);
has parallel => (
is => 'rw',
isa => 'Int',
lazy => 1,
default => sub { shift->count_tasks }
);
has _log => (
is => 'rw',
isa => 'IO::All',
default => sub { io(shift->name . ".log") },
lazy => 1,
);
has run_queue => (
is => 'ro',
isa => 'ArrayRef[Bioinfo::PBS]',
default => sub { [] },
traits => ['Array'],
handles => {
( run in 2.081 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )