#!/bin/env perl
use 5.008; # Require at least Perl version 5.8
use strict; # Must declare all variables before using them
use warnings; # Emit helpful warnings
use autodie; # Fatal exceptions for common unrecoverable errors (e.g. w/open)
# Testing-related modules
use Test::More; # provide testing functions (e.g. is, like)
use Test::LongString; # Compare strings byte by byte
use Data::Section -setup; # Set up labeled DATA sections
use File::Temp qw( tempfile ); #
use File::Slurp qw( slurp ); # Read a file into a string
use Carp qw( croak );
# Distribution-specific modules
use lib 'lib'; # add 'lib' to @INC
{
my $output_filename = temp_filename();
my $config_filename = filename_for('config');
system( "perl lib/Bio/App/SELEX/selex_covarianceSearch --config $config_filename --cm test.cm --sto search.sto --rounds 10 --fasta search.fasta > $output_filename");
my $result = slurp $output_filename;
my $expected = string_from('expected');
is_string( $result, $expected, 'Successfully created script file' );
}
done_testing();
sub sref_from {
my $section = shift;
#Scalar reference to the section text
return __PACKAGE__->section_data($section);
}
sub string_from {
my $section = shift;
#Get the scalar reference
my $sref = sref_from($section);
#Return a string containing the entire section
return ${$sref};
}
sub fh_from {
my $section = shift;
my $sref = sref_from($section);
#Create filehandle to the referenced scalar
open( my $fh, '<', $sref );
return $fh;
}
sub assign_filename_for {
my $filename = shift;
my $section = shift;
# Don't overwrite existing file
croak "'$filename' already exists." if -e $filename;
my $string = string_from($section);
open( my $fh, '>', $filename );
print {$fh} $string;
close $fh;
return;
}
sub filename_for {
my $section = shift;
my ( $fh, $filename ) = tempfile();
my $string = string_from($section);
print {$fh} $string;
close $fh;
return $filename;
}
sub temp_filename {
my ( $fh, $filename ) = tempfile();
close $fh;
return $filename;
}
sub delete_temp_file {
my $filename = shift;
my $delete_ok = unlink $filename;
ok( $delete_ok, "deleted temp file '$filename'" );
}
#------------------------------------------------------------------------
# IMPORTANT!
#
# Each line from each section automatically ends with a newline character
#------------------------------------------------------------------------
__DATA__
__[ expected ]__
#round1
/share/apps/bin/cmcalibrate test.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd1.tab test.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd1.tab > test_rnd1_clusters_found.txt
grep -w -f test_rnd1_clusters_found.txt search.sto > test_rnd2.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd2.sto > test_rnd2.fasta
#round2
/share/apps/bin/cmalign -o test_rnd2_cmaligned.sto test.cm test_rnd2.fasta
/share/apps/bin/cmbuild test_rnd2_aln.cm test_rnd2_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd2_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd2.tab test_rnd2_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd2.tab > test_rnd2_clusters_found.txt
grep -w -f test_rnd2_clusters_found.txt search.sto > test_rnd3.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd3.sto > test_rnd3.fasta
#round3
/share/apps/bin/cmalign -o test_rnd3_cmaligned.sto test.cm test_rnd3.fasta
/share/apps/bin/cmbuild test_rnd3_aln.cm test_rnd3_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd3_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd3.tab test_rnd3_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd3.tab > test_rnd3_clusters_found.txt
grep -w -f test_rnd3_clusters_found.txt search.sto > test_rnd4.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd4.sto > test_rnd4.fasta
#round4
/share/apps/bin/cmalign -o test_rnd4_cmaligned.sto test.cm test_rnd4.fasta
/share/apps/bin/cmbuild test_rnd4_aln.cm test_rnd4_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd4_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd4.tab test_rnd4_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd4.tab > test_rnd4_clusters_found.txt
grep -w -f test_rnd4_clusters_found.txt search.sto > test_rnd5.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd5.sto > test_rnd5.fasta
#round5
/share/apps/bin/cmalign -o test_rnd5_cmaligned.sto test.cm test_rnd5.fasta
/share/apps/bin/cmbuild test_rnd5_aln.cm test_rnd5_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd5_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd5.tab test_rnd5_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd5.tab > test_rnd5_clusters_found.txt
grep -w -f test_rnd5_clusters_found.txt search.sto > test_rnd6.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd6.sto > test_rnd6.fasta
#round6
/share/apps/bin/cmalign -o test_rnd6_cmaligned.sto test.cm test_rnd6.fasta
/share/apps/bin/cmbuild test_rnd6_aln.cm test_rnd6_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd6_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd6.tab test_rnd6_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd6.tab > test_rnd6_clusters_found.txt
grep -w -f test_rnd6_clusters_found.txt search.sto > test_rnd7.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd7.sto > test_rnd7.fasta
#round7
/share/apps/bin/cmalign -o test_rnd7_cmaligned.sto test.cm test_rnd7.fasta
/share/apps/bin/cmbuild test_rnd7_aln.cm test_rnd7_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd7_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd7.tab test_rnd7_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd7.tab > test_rnd7_clusters_found.txt
grep -w -f test_rnd7_clusters_found.txt search.sto > test_rnd8.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd8.sto > test_rnd8.fasta
#round8
/share/apps/bin/cmalign -o test_rnd8_cmaligned.sto test.cm test_rnd8.fasta
/share/apps/bin/cmbuild test_rnd8_aln.cm test_rnd8_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd8_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd8.tab test_rnd8_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd8.tab > test_rnd8_clusters_found.txt
grep -w -f test_rnd8_clusters_found.txt search.sto > test_rnd9.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd9.sto > test_rnd9.fasta
#round9
/share/apps/bin/cmalign -o test_rnd9_cmaligned.sto test.cm test_rnd9.fasta
/share/apps/bin/cmbuild test_rnd9_aln.cm test_rnd9_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd9_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd9.tab test_rnd9_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd9.tab > test_rnd9_clusters_found.txt
grep -w -f test_rnd9_clusters_found.txt search.sto > test_rnd10.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd10.sto > test_rnd10.fasta
#round10
/share/apps/bin/cmalign -o test_rnd10_cmaligned.sto test.cm test_rnd10.fasta
/share/apps/bin/cmbuild test_rnd10_aln.cm test_rnd10_cmaligned.sto
/share/apps/bin/cmcalibrate test_rnd10_aln.cm
/share/apps/bin/cmsearch --toponly -E 0.1 --tabfile test_rnd10.tab test_rnd10_aln.cm search.fasta
awk '$1!~/^#/{print $2}' test_rnd10.tab > test_rnd10_clusters_found.txt
grep -w -f test_rnd10_clusters_found.txt search.sto > test_rnd11.sto
perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl test_rnd11.sto > test_rnd11.fasta
__[ config ]__
[Flags_for]
RNAalifold=-r -cv 0.6 -nc 10 -p -d2 -noLP -color -aln
mafft=--preservecase --clustalout
[executables]
CreateStockholm=perl /home/user/perl5/lib/perl5/Bio/App/SELEX/CreateStockholm.pm
RNAalifold=/share/apps/bin/RNAalifold
cmalign=/share/apps/bin/cmalign
cmbuild=/share/apps/bin/cmbuild
cmcalibrate=/share/apps/bin/cmcalibrate
cmsearch=/share/apps/bin/cmsearch
mafft=/share/apps/bin/mafft
stock2fasta=perl /home/user/perl5/lib/perl5/Bio/App/SELEX/stock2fasta.pl