Bio-Roary

 view release on metacpan or  search on metacpan

lib/Bio/Roary/CommandLine/TransferAnnotationToGroups.pm  view on Meta::CPAN

undef $VERSION;
package Bio::Roary::CommandLine::TransferAnnotationToGroups;
$Bio::Roary::CommandLine::TransferAnnotationToGroups::VERSION = '3.13.0';
# ABSTRACT: Take in a groups file and a set of GFF files and transfer the consensus annotation


use Moose;
use Getopt::Long qw(GetOptionsFromArray);
use Bio::Roary::AnnotateGroups;
extends 'Bio::Roary::CommandLine::Common';


has 'args'        => ( is => 'ro', isa => 'ArrayRef', required => 1 );
has 'script_name' => ( is => 'ro', isa => 'Str',      required => 1 );
has 'help'        => ( is => 'rw', isa => 'Bool',     default  => 0 );

has 'gff_files'       => ( is => 'rw', isa => 'ArrayRef' );
has 'groups_filename' => ( is => 'rw', isa => 'Str' );
has 'output_filename' => ( is => 'rw', isa => 'Str', default => 'reannotated_groups' );
has 'verbose'         => ( is => 'rw', isa => 'Bool', default => 0 );
has '_error_message'  => ( is => 'rw', isa => 'Str' );

sub BUILD {
    my ($self) = @_;

    my ( $gff_files, $output_filename, $groups_filename, @group_names, $action,$verbose,  $help );

    GetOptionsFromArray(
        $self->args,
        'o|output=s'          => \$output_filename,
        'g|groups_filename=s' => \$groups_filename,
		'v|verbose'           => \$verbose,
        'h|help'              => \$help,
    );
	
    if ( defined($verbose) ) {
        $self->verbose($verbose);
        $self->logger->level(10000);
    }
	
    $self->help($help) if(defined($help));
    ( !$self->help ) or die $self->usage_text;
    
    if ( @{ $self->args } == 0 ) {
        $self->_error_message("Error: You need to provide a FASTA file");
    }

    $self->output_filename($output_filename) if ( defined($output_filename) );
    if ( defined($groups_filename) && ( -e $groups_filename ) ) {
        $self->groups_filename($groups_filename);
    }
    else {
        $self->_error_message("Error: Cant access the groups file");
    }

    for my $filename ( @{ $self->args } ) {
        if ( !-e $filename ) {
            $self->_error_message("Error: Cant access file $filename");
            last;
        }
    }
    $self->gff_files( $self->args );

}

sub run {
    my ($self) = @_;

    
    if ( defined( $self->_error_message ) ) {
        print $self->_error_message . "\n";
        die $self->usage_text;
    }



( run in 0.595 second using v1.01-cache-2.11-cpan-98e64b0badf )