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 )