NAME

R::YapRI::Block.pm

A module to segment the R commands.

SYNOPSIS

use R::YapRI::Base;

## WORKING WITH COMMAND BLOCKS:

my $rbase = R::YapRI::Base->new();

## Create a file-block_1

my $rblock1 = $rbase->create_block('BLOCK1');
$rblock1->add_command('x <- c(10, 9, 8, 5)');
$rblock1->add_command('z <- c(12, 8, 8, 4)');
$rblock1->add_command('x + z')

## Get name or rbase

my $blockname = $rblock1->get_blockname();
my $rbase = $rblock1->get_rbase();  

## Create a file-block_2

my $rblock2 = $rbase->create_block('BLOCK2');   
$rblock2->add_command('bmp(filename="myfile.bmp", width=600, height=800)');
$rblock2->add_command('dev.list()');
$rblock2->add_command('plot(c(1, 5, 10), type = "l")');

## Run each block

$rblock1->run_block();
$rblock2->run_block();

## Get the results

my $resultfile1 = $rblock1->get_resultfile();
my $resultfile2 = $rblock2->get_resultfile();

## Combine block before run it

my $newblock = $rbase->combine_blocks(['BLOCK1', 'BLOCK2'], 'NEWBLOCK');
$newblock->run_block();

DESCRIPTION

A wrapper to use blocks with R::YapRI::Base.

Use blocks through rbase object.

AUTHOR

Aureliano Bombarely <aurebg@vt.edu>

CLASS METHODS

The following class methods are implemented:

(*) CONSTRUCTORS:

There are two ways to create a new block:

1) Through rbase object.

my $rblock = $rbase->new_block($blockname);

2) Through R::YapRI::Block class

my $rblock = R::YapRI::Block->new($rbase, $blockname);

Both methods will add the new block to the rbase object.

constructor new

Usage: my $rblock = R::YapRI::Block->new($rbase, $blockname);

Desc: Create a new R block object associated with a R::YapRI::Base object

Ret: a R::YapRI::Block object

Args: $rbase, a R::YapRI::Base object.
      $blockname, an scalar, a blockname
      $cmdfile, a filename with the command file (optional).
      
Side_Effects: Die if no arguments are used.
              Die if $rbase argument is not a R::YapRI::Base object.
              Create a new command file if no commandfile is supplied.
              Add the block created to rbase object.

Example: my $rblock = R::YapRI::Block->new($rbase, 'MyBlock');           

(*) ACCESSORS:

No set accessors have been created for rbase or blockname. They are controlled by R::YapRI::Base object.

get_rbase

Usage: my $rbase = $rblock->get_rbase(); 

Desc: Get rbase object from rblock

Ret: $rbase, a R::YapRI::Base object

Args: None

Side_Effects: None

Example: my $rbase = $rblock->get_rbase(); 

get_blockname

Usage: my $blockname = $rblock->get_blockname(); 

Desc: Get blockname from rblock object

Ret: $blockname, name of the block, an alias for cmdfile.

Args: None

Side_Effects: None

Example: my $blockname = $rblock->get_blockname(); 

get_command_file

Usage: my $filename = $rblock->get_command_file(); 

Desc: Get filename of the block from rbase object

Ret: $filename, the command filename for the block associated to rbase.

Args: None

Side_Effects: None

Example: my $filename = $rblock->get_command_file(); 

set_command_file

Usage: $rblock->set_command_file($filename); 

Desc: Set filename for a block

Ret: None

Args: $filename

Side_Effects: Die if no argument is used.

Example: $rblock->set_command_file($filename); 

delete_command_file

Usage: $rblock->delete_command_file(); 

Desc: Delete command filename for a block and set command file as empty

Ret: None

Args: None

Side_Effects: None

Example: $rblock->delete_command_file(); 

get_result_file

Usage: my $filename = $rblock->get_result_file(); 

Desc: Get result filename of the block

Ret: $filename, the result filename for the block associated to rbase.

Args: None

Side_Effects: None

Example: my $filename = $rblock->get_result_file(); 

set_result_file

Usage: $rblock->set_result_file($filename); 

Desc: Set result filename for a block

Ret: None

Args: $filename, the result filename for the block associated to rbase.

Side_Effects: Die if no argument is used or if the result file doesnt exist

Example: $rblock->set_result_file($filename); 

delete_result_file

Usage: $rblock->delete_result_file(); 

Desc: Delete result filename for a block and set command file as empty

Ret: None

Args: None

Side_Effects: None

Example: $rblock->delete_result_file(); 

(*) COMMAND METHODS:

add_command

Usage: $rblock->add_command($r_command); 

Desc: Add a R command line to a block

Ret: None

Args: $r_command, a string or a hash ref. with the R commands.
      If hashref. is used, it will translated to R using r_var from
      R::YapRI::Interpreter::Perl

Side_Effects: Die if no argument is used.
              Die if argument is not an scalar or an hash reference.
              Translate a perl hashref. to R command if hashref is used.

Example: $rblock->add_command('x <- c(10, 9, 8, 5)')
         $rblock->add_command({ '' => { x => [10, 9, 8, 5] } })

read_commands

Usage: my @commands = $rblock->read_commands(); 

Desc: Read all the R command lines from a block and return them in an 
      array.

Ret: @commands, an array with the commands used in the block

Args: None

Side_Effects: None

Example: None

run_block

Usage: $rblock->run_block(); 

Desc: Run R commands for a specific block.

Ret: None

Args: None

Side_Effects: None

Example: $rblock->run_block(); 

read_results

Usage: my @results = $rblock->read_results(); 

Desc: Read all the results lines from a block and return them as an 
      array.

Ret: @results, an array with the produced by the block

Args: None

Side_Effects: None

Example: my @results = $rblock->read_results();

(*) DESTRUCTORS:

Destructor will delete the files associated with this block (command and result) if the rbase switch keepfiles is disabled.

DESTROY

 Usage: $block->DESTROY(); 

 Desc: Destructor for block object. It also delete the command file and
       the result files associated with that block if keepfiles from
       rbase is disabled

 Ret: None

 Args: None

 Side_Effects: None

 Example: $block->DESTROY();

ACKNOWLEDGEMENTS

Lukas Mueller

Robert Buels

Naama Menda

Jonathan "Duke" Leto

COPYRIGHT AND LICENCE

Copyright 2011 Boyce Thompson Institute for Plant Research

Copyright 2011 Sol Genomics Network (solgenomics.net)

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.