annotate nanopolish_variants.pl @ 10:c00a942cfc0b draft

planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 1eeffb2cd0b8115ca185f7fcb2df2920dff33e3b
author jdv
date Mon, 12 Feb 2018 23:59:21 -0500
parents f1141f6a2d65
children 550ac6458c07
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/;
8
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
10 use List::Util qw/min/;
0
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;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
12 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
13 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
14
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
15 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
16 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
17 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
18 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
19 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
20 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
21 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
22
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
23 # 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
24
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
25 # 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
26 GetOptions(
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
27 '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
28 '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
29 '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
30 '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
31 '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
32 '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
33 '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
34 );
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
35
4
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
36 my $ret;
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
37
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
38 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
39 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
40 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
41
8
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
42 # divide available threads between actual threads and regions
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
43 #
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
44 # testing suggests minimal speed-up past 4-8 actual threads per region, so use
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
45 # remaining threads for running parallel regions
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
46 my $n_threads = min( 4, $threads );
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
47 my $n_workers = int($threads/$n_threads);
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
48
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
49
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
50 $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
51
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
52 # 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
53 # 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
54 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
55 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
56 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
57 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
58 $ret = system(
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
59 '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
60 '-xf',
4
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
61 $fn_fast5
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
62 );
bdd6c1ab07c5 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 83364d7d78ca5524a08065daef995bfcd54a379d
jdv
parents: 3
diff changeset
63 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
64 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
65 chdir $cwd;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
66
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
67 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
68 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
69
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
70
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
71 # 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
72 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
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 'tar',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
75 '-xf',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
76 $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
77 );
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
78 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
79 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
80 }
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
81 else {
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
82 $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
83 'nanopolish',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
84 'index',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
85 '--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
86 $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
87 );
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents: 4
diff changeset
88 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
89 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
90 }
3
a1d433401bc2 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit e9238df905c413aaab086ea146cb1b97e3ffa0fd
jdv
parents: 0
diff changeset
91
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
92 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
93 unshift @cmd, 'nanopolish';
8
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
94 push @cmd, '--genome', $fn_genome;
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
95 push @cmd, '--reads', $fn_link;
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
96 push @cmd, '--threads', $n_threads;
0
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 @regions :shared;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
99
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
100 # build region tags to pass to nanopolish
10
c00a942cfc0b planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 1eeffb2cd0b8115ca185f7fcb2df2920dff33e3b
jdv
parents: 9
diff changeset
101 if (-s $fn_genome) { # gracefully handle empty inputs
c00a942cfc0b planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 1eeffb2cd0b8115ca185f7fcb2df2920dff33e3b
jdv
parents: 9
diff changeset
102 my $parser = BioX::Seq::Stream->new($fn_genome);
c00a942cfc0b planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 1eeffb2cd0b8115ca185f7fcb2df2920dff33e3b
jdv
parents: 9
diff changeset
103 while (my $seq = $parser->next_seq) {
c00a942cfc0b planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 1eeffb2cd0b8115ca185f7fcb2df2920dff33e3b
jdv
parents: 9
diff changeset
104 push @regions, join( ':', $seq->id,
c00a942cfc0b planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 1eeffb2cd0b8115ca185f7fcb2df2920dff33e3b
jdv
parents: 9
diff changeset
105 join( '-', 1, length($seq) ),
c00a942cfc0b planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 1eeffb2cd0b8115ca185f7fcb2df2920dff33e3b
jdv
parents: 9
diff changeset
106 );
c00a942cfc0b planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 1eeffb2cd0b8115ca185f7fcb2df2920dff33e3b
jdv
parents: 9
diff changeset
107 }
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
108 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
109
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
110 my @workers;
8
b437c0a7ca04 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 419298c744d71488d78e1dadb868a4d8b933618e
jdv
parents: 7
diff changeset
111 for (1..$n_workers) {
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
112 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
113 }
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 $_->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
116
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
117 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
118 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
119
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_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
121 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
122 for (@fa_files) {
9
f1141f6a2d65 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0ace87b59137f1ed770db97fbb33036e16205edf
jdv
parents: 8
diff changeset
123 my $parser = BioX::Seq::Stream->new($_);
f1141f6a2d65 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0ace87b59137f1ed770db97fbb33036e16205edf
jdv
parents: 8
diff changeset
124 while (my $seq = $parser->next_seq) {
f1141f6a2d65 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0ace87b59137f1ed770db97fbb33036e16205edf
jdv
parents: 8
diff changeset
125 $seq->id =~ s/^.+\K:\d+-\d+$//; # strip coordinates from ID
f1141f6a2d65 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0ace87b59137f1ed770db97fbb33036e16205edf
jdv
parents: 8
diff changeset
126 print {$out_cons} $seq->as_fasta;
0
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
127 }
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 $out_cons;
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 # 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
132 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
133 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
134 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
135 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
136 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
137 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
138 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
139 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
140 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
141 close $in;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
142 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
143 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
144
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 sub run {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
147
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
148 LOOP:
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
149 while (1) {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
150
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
151 my $tag;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
152
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
153 {
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
154 lock @regions;
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
155 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
156 $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
157 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
158
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
159 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
160 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
161
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
162 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
163 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
164 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
165 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
166
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
167 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
168
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
169 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
170 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
171 if ($ret);
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
172
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
173 }
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
174
2136c2725fc4 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 0206b7bd377b39ad28592b0a02588f40575efd3e-dirty
jdv
parents:
diff changeset
175 }