Bio-Roary
view release on metacpan or search on metacpan
lib/Bio/Roary/Output/NumberOfGroups.pm view on Meta::CPAN
$Bio::Roary::Output::NumberOfGroups::VERSION = '3.13.0';
# ABSTRACT: Create raw output files of group counts for turning into plots
use Moose;
use List::Util qw(shuffle);
use Bio::Roary::AnnotateGroups;
use Bio::Roary::GroupStatistics;
has 'group_statistics_obj' => ( is => 'ro', isa => 'Bio::Roary::GroupStatistics', required => 1 );
has 'number_of_iterations' => ( is => 'ro', isa => 'Int', default => 10);
has 'groups_to_contigs' => ( is => 'ro', isa => 'Maybe[HashRef]' );
has 'annotate_groups_obj' => ( is => 'ro', isa => 'Bio::Roary::AnnotateGroups', required => 1 );
has 'core_definition' => ( is => 'ro', isa => 'Num', default => 1.0 );
has 'output_raw_filename_conserved_genes' => ( is => 'ro', isa => 'Str', default => 'number_of_conserved_genes.Rtab' );
has 'output_raw_filename_unique_genes' => ( is => 'ro', isa => 'Str', default => 'number_of_unique_genes.Rtab' );
has 'output_raw_filename_total_genes' => ( is => 'ro', isa => 'Str', default => 'number_of_genes_in_pan_genome.Rtab' );
has 'output_raw_filename_new_genes' => ( is => 'ro', isa => 'Str', default => 'number_of_new_genes.Rtab' );
has '_conserved_genes' => ( is => 'ro', isa => 'ArrayRef', default => sub { [] } );
has '_unique_genes' => ( is => 'ro', isa => 'ArrayRef', default => sub { [] } );
has '_total_genes' => ( is => 'ro', isa => 'ArrayRef', default => sub { [] } );
has '_new_genes' => ( is => 'ro', isa => 'ArrayRef', default => sub { [] } );
sub create_output_files {
my ($self) = @_;
for ( my $i = 0 ; $i < $self->number_of_iterations ; $i++ ) {
$self->_single_iteration_gene_expansion;
}
$self->_create_raw_output_file( $self->output_raw_filename_conserved_genes, $self->_conserved_genes );
$self->_create_raw_output_file( $self->output_raw_filename_unique_genes, $self->_unique_genes );
$self->_create_raw_output_file( $self->output_raw_filename_total_genes, $self->_total_genes );
$self->_create_raw_output_file( $self->output_raw_filename_new_genes, $self->_new_genes );
return 1;
}
sub _create_raw_output_file {
my ( $self, $filename, $output_data ) = @_;
open( my $fh, '>', $filename );
for my $iterations ( @{$output_data} ) {
print {$fh} join( "\t", @{$iterations} );
print {$fh} "\n";
}
close($fh);
}
sub _shuffle_input_files {
my ($self) = @_;
my @shuffled_input_files = shuffle( @{ $self->group_statistics_obj->_sorted_file_names } );
return \@shuffled_input_files;
}
lib/Bio/Roary/SplitGroups.pm view on Meta::CPAN
use File::Copy qw(move);
use File::Temp;
use File::Basename;
use File::Slurper 'read_lines';
use Cwd;
has 'groupfile' => ( is => 'ro', isa => 'Str', required => 1 );
has 'fasta_files' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
has 'outfile' => ( is => 'ro', isa => 'Str', required => 1 );
has 'iterations' => ( is => 'ro', isa => 'Int', default => 5 );
has 'dont_delete' => ( is => 'ro', isa => 'Bool', default => 0 );
has '_neighbourhood_size' => ( is => 'ro', isa => 'Int', default => 5 );
has '_group_filelist' => ( is => 'rw', isa => 'ArrayRef', lazy_build => 1 );
has '_tmp_dir_object' => ( is => 'ro', isa => 'File::Temp::Dir', default => sub { File::Temp->newdir( DIR => getcwd, CLEANUP => 1 ); } );
has '_tmp_dir' => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_build__tmp_dir' );
has '_analyse_groups_obj' => ( is => 'ro', lazy_build => 1 );
has '_genes_to_files' => ( is => 'ro', lazy_build => 1 );
lib/Bio/Roary/SplitGroups.pm view on Meta::CPAN
sub _build__genes_to_files {
my ( $self ) = @_;
return $self->_analyse_groups_obj->_genes_to_file;
}
sub _build__group_filelist {
my ( $self ) = @_;
my $tmp = $self->_tmp_dir;
my @filelist = ( $self->groupfile );
for my $i ( 1..($self->iterations - 1) ){
push( @filelist, "$tmp/group_$i" );
}
push( @filelist, $self->outfile );
return \@filelist;
}
sub _build__genes_to_neighbourhood
{
my ( $self ) = @_;
lib/Bio/Roary/SplitGroups.pm view on Meta::CPAN
}
}
}
return \%genes_to_neighbourhood;
}
sub split_groups {
my ( $self ) = @_;
# iteratively
for my $x ( 0..($self->iterations - 1) ){
my ( $in_groups, $out_groups ) = $self->_get_files_for_iteration( $x );
# read in groups, check paralogs and split
my @newgroups;
my $any_paralogs = 0;
$self->_set_genes_to_groups( $in_groups );
open( my $group_handle, '<', $in_groups );
while( my $line = <$group_handle> ){
my @group = split( /\s+/, $line );
( run in 1.825 second using v1.01-cache-2.11-cpan-96521ef73a4 )