-
Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathperform_controls.pl
executable file
·105 lines (64 loc) · 2.05 KB
/
perform_controls.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/perl
# miRDeep2 perform-controls perl script
# Copyright (C) 2008 - 2011 Marc Friedländer
# Copyright (C) 2009 - 2011 Sebastian Mackowiak
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
use warnings;
use strict;
use Getopt::Std;
use File::Copy;
use File::Path;
my $usage=
"$0 file_command_line file_structure rounds_controls
-a Output progress to screen
";
my $file_command_line=shift or die $usage;
my $file_structure=shift or die $usage;
my $rounds=shift or die $usage;
#options
my %options=();
getopts("a",\%options);
my $ltime=time();
my $dir="dir_perform_controls$ltime";
my $command_line=parse_file_command_line($file_command_line);
if($options{a}){print STDERR "total number of rounds controls=$rounds\n";}
perform_controls();
sub perform_controls{
mkdir $dir;
my $round=1;
while($round<=$rounds){
if($options{a}){print STDERR "$round\r";}
system("permute_structure.pl $file_structure > $dir/precursors_permuted.str 2> /dev/null");
my $ret=`$command_line 2> /dev/null`;
print "permutation $round\n\n";
print "$ret";
$round++;
}
rmtree($dir);
if($options{a}){print STDERR "controls performed\n\n";}
}
sub parse_file_command_line{
my ($file) = @_;
open (FILE, "<$file") or die "can not open $file\n";
while (my $line=<FILE>){
if($line=~/(\S+)/){
chomp $line;
$line=~s/$file_structure/$dir\/precursors_permuted.str/;
$line=~s/>.+//;
return $line;
}
}
die "$file is empty\n";
}