annotate nanopolish_variants.pl @ 7:32cb27adeb34 draft

planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
author jdv
date Mon, 12 Feb 2018 00:58:10 -0500
parents bdd6c1ab07c5
children b437c0a7ca04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
1 #!/usr/bin/env perl
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
2
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
3 use strict;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
4 use warnings;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
5 use 5.012;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
6
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
7 use Cwd qw/getcwd abs_path/;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
8 use File::Copy qw/copy/;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
9 use Getopt::Long qw/:config pass_through/;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
10 use threads;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
11 use threads::shared;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
12 use BioX::Seq::Stream;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
13
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
14 my $fn_genome;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
15 my $threads = 1;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
16 my $fn_outfile;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
17 my $fn_consensus;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
18 my $fn_fast5;
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
19 my $fn_reads;
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
20 my $fn_index;
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
21
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
22 # remember full command string (with proper binary)
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
23
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
24 # parse genome filename and add back to arg stack
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
25 GetOptions(
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
26 'genome=s' => \$fn_genome,
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
27 'threads=i' => \$threads,
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
28 'outfile=s' => \$fn_outfile,
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
29 'consensus=s' => \$fn_consensus,
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
30 'fast5=s' => \$fn_fast5,
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
31 'reads=s' => \$fn_reads,
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
32 'index=s' => \$fn_index,
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
33 );
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
34
4
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
35 my $ret;
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
36
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
37 my $fn_link = 'reads';
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
38 my $tmp_dir = 'tmp_dir';
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
39 mkdir $tmp_dir;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
40
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
41 $fn_fast5 = abs_path($fn_fast5);
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
42
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
43 # extract FAST5 files to path where they are expected
4
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
44 # use system 'tar' to transparently and safely handle absolute paths
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
45 my $fast5_dir = 'fast5';
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
46 mkdir $fast5_dir;
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
47 my $cwd = abs_path( getcwd() );
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
48 chdir $fast5_dir;
4
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
49 $ret = system(
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
50 'tar',
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
51 '-xf',
4
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
52 $fn_fast5
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
53 );
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
54 die "Failed to extract tarball: $!\n"
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
55 if ($ret);
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
56 chdir $cwd;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
57
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
58 symlink( $fn_reads, $fn_link )
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
59 or die "Failed to create symlink";
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
60
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
61
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
62 # index reads
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
63 if (defined $fn_index) {
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
64 $ret = system(
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
65 'tar',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
66 '-xf',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
67 $fn_index
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
68 );
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
69 die "Failed to extract tarball: $!\n"
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
70 if ($ret);
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
71 }
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
72 else {
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
73 $ret = system(
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
74 'nanopolish',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
75 'index',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
76 '--directory' => $fast5_dir,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
77 $fn_link,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
78 );
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
79 die "Failed nanopolish indexing: $!\n"
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
80 if ($ret);
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
81 }
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
82
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
83 my @cmd = @ARGV;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
84 unshift @cmd, 'nanopolish';
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
85 push @cmd, '--genome', $fn_genome;
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
86 push @cmd, '--reads', $fn_link;
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
87
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
88 my @regions :shared;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
89
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
90 # build region tags to pass to nanopolish
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
91 my $parser = BioX::Seq::Stream->new($fn_genome);
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
92 while (my $seq = $parser->next_seq) {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
93 push @regions, join( ':', $seq->id,
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
94 join( '-', 1, length($seq) ),
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
95 );
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
96 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
97
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
98 my @workers;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
99 for (1..$threads) {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
100 push @workers, threads->create(\&run);
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
101 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
102
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
103 $_->join() for (@workers);
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
104
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
105 my @fa_files = glob "$tmp_dir/*.fasta";
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
106 my @out_files = glob "$tmp_dir/*.vcf";
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
107
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
108 open my $out_cons, '>', $fn_consensus
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
109 or die "Failed to open output consensus: $!";
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
110 for (@fa_files) {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
111 open my $in, '<', $_;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
112 while (my $line = <$in>) {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
113 print {$out_cons} $line;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
114 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
115 close $in;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
116 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
117 close $out_cons;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
118
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
119 # we may need to do extra processing on VCF output
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
120 open my $out_vcf, '>', $fn_outfile
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
121 or die "Failed to open output file: $!";
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
122 for my $i (0..$#out_files) {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
123 my $v = $out_files[$i];
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
124 open my $in, '<', $v;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
125 while (my $line = <$in>) {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
126 next if ($line =~ /^\s*#/ && $i > 0);
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
127 print {$out_vcf} $line;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
128 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
129 close $in;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
130 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
131 close $out_vcf;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
132
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
133
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
134 sub run {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
135
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
136 LOOP:
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
137 while (1) {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
138
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
139 my $tag;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
140
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
141 {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
142 lock @regions;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
143 last LOOP if (! scalar @regions);
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
144 $tag = shift @regions;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
145 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
146
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
147 my $fn_out = "$tmp_dir/$tag.vcf";
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
148 my $fn_cons = "$tmp_dir/$tag.fasta";
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
149
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
150 my @cmd_local = @cmd;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
151 push @cmd_local, '--window', $tag;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
152 push @cmd_local, '--outfile', $fn_out;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
153 push @cmd_local, '--consensus', $fn_cons;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
154
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
155 my $ret = system @cmd_local;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
156
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
157 my $cmd_string = join ' ', @cmd_local;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
158 die "Non-zero exit value for command: $cmd_string\n"
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
159 if ($ret);
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
160
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
161 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
162
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
163 }