TFBS::PatternGen
YMF
TFBS::PatternGen::MEME - a pattern factory that uses the MEME program
|
| No package variables defined. |
my $patterngen = TFBS::PatternGen::MEME->new(-seq_file=>'sequences.fa', -binary => 'meme'
my $pfm = $patterngen->pattern(); # $pfm is now a TFBS::Matrix::PFM object
|
TFBS::PatternGen::MEME builds position frequency matrices using an external program MEME written by Bailey and Elkan. For information and source code of MEME see
http://www.sdsc.edu/MEME
|
Methods description
Title : new
Usage : my $patterngen = TFBS::PatternGen::YMF->new(%args);
Function: the constructor for the TFBS::PatternGen::MEME object
Returns : a TFBS::PatternGen::MEME object
Args : This method takes named arguments;
you must specify one of the following three
-seq_list # a reference to an array of strings
# and/or Bio::Seq objects
# or
-seq_stream # A Bio::SeqIO object
# or
-seq_file # the name of the fasta file containing
# all the sequences
Other arguments are:
-binary # a fully qualified path to the 'meme' executable
# OPTIONAL: default 'meme'
-additional_params # a string containing additional
# command-line switches for the
# meme program
Methods code
| _parse_stats_output | description | top | prev | next |
sub _parse_stats_output
{ my ($self,$resultstring,$command_line,$dumpfile,$temp_dir)=@_;
open DUMP,$dumpfile;
while(<DUMP>){
if ((/(^Error.*)/) or /(.*Aborting.*)/){
## warn "Error running AnnSpec\nNo patterns produced";
print "YMF Error message:\" $1\"\n";
unlink $dumpfile;
$self->throw ("Error running YMF using command:\n $command_line");
return;
}
}
unlink $dumpfile;
open RES,"$temp_dir/results";
my $skip=<RES>;
while (<RES>){
my ($word,$occ,$z_score,$expect,$var)=split;
##print $word;
my $motif =TFBS::PatternGen::YMF::Motif->new
(-word=>$word,
-tags => {z_score=>$z_score,
'occurences'=>$occ,
'expectation value'=>$expect,
'variance'=>$var}
);
push @{ $self->{'motifs'} }, $motif;
}
my $command="rm -r $temp_dir";
##print $command;
`$command`;## or die "could not unlink $!";
## return
}
sub _run_stats
{ my ($self)=shift;
my $tmp_file = tmpnam();
my $dumpfile = tmpnam();
my $outstream = Bio::SeqIO->new(-file=>">$tmp_file", -format=>"fasta");
foreach my $seqobj (@{ $self->{'seq_set'} } ) {
$outstream->write_seq($seqobj);
}
$outstream->close();
my $dir = tempdir();
##print $dir;
##change directory to directory where the program is located
##system 'cd $dir.w;';
## my $command="cd $dir;";
## print $command;
## system $command;
## `$command`;
## system 'ls -ltr';
my $command_line =
$self->{'abs_stats_path'}."/stats ".
## "stats ".
$self->{'config_file'}." ".
$self->{'len_region'}." ".
$self->{'width'}." ".
$self->{'path_org'}." ".
"-sort ".##sorts on z-score
$tmp_file
." >$dumpfile"
;
## print STDERR "cd $dir;$command_line\n";
my $resultstring = `cd $dir;$command_line`;
## print STDERR $resultstring;
$self->_parse_stats_output($resultstring,$command_line,$dumpfile,$dir);
unlink $tmp_file;
##unlink $dumpfile;
return 1}
sub new
{ my ($caller, %args) = @_;
my $self = bless {}, ref($caller) || $caller;
$self->{'width'}=$args{'-length_oligo'};
$self->{'path_org'}=$args{'-pathoforganismtables'};
$self->{'len_region'}=$args{'-length_region'};
$self->{'config_file'}=$args{'-config_file'}||$args{'-stats_path'}."/stats.config";
##The latter is the example configfile that comes with the installation of YMF
$self->{'abs_stats_path'} = $args{'-abs_stats_path'} ;
##This is the directory where the executable and the results file is
##generated by the program are located
$self->_create_seq_set(%args) or die ('Error creating sequence set');
$self->_run_stats() or $self->throw("Error running stats.");
return $self;}
General documentation