annotate nanopolish_index.pl @ 12:f64b148e6189 draft default tip

planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
author jdv
date Fri, 09 Mar 2018 21:56:08 -0500
parents 32cb27adeb34
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
1 #!/usr/bin/env perl
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
2
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
3 use strict;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
4 use warnings;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
5 use 5.012;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
6
12
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
7 use autodie;
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
8
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
9 use Cwd qw/getcwd abs_path/;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
10 use File::Copy qw/copy/;
12
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
11 use File::Temp qw/tempdir/;
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
12 use Getopt::Long qw/:config pass_through/;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
13 use threads;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
14 use threads::shared;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
15 use BioX::Seq::Stream;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
16
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
17 my $fn_link = 'reads';
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
18
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
19 my $fn_fast5;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
20 my $fn_reads;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
21 my $fn_outfile;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
22
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
23 # parse genome filename and add back to arg stack
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
24 GetOptions(
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
25 'fast5=s' => \$fn_fast5,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
26 'reads=s' => \$fn_reads,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
27 'outfile=s' => \$fn_outfile,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
28 );
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
29
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
30 my $ret;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
31
12
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
32 my $cwd = abs_path( getcwd() );
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
33
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
34 $fn_fast5 = abs_path($fn_fast5);
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
35 $fn_reads = abs_path($fn_reads);
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
36 $fn_outfile = abs_path($fn_outfile);
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
37
12
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
38 my $tmpdir = tempdir( CLEANUP => 1 );
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
39
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
40 chdir $tmpdir;
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
41
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
42 # extract FAST5 files to path where they are expected
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
43 my $fast5_dir = 'fast5';
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
44 if (-e $fast5_dir) {
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
45 warn "$fast5_dir exists, won't overwrite";
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
46 exit;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
47 }
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
48 mkdir $fast5_dir;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
49 chdir $fast5_dir;
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
50
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
51 # use system 'tar' to transparently and safely handle absolute paths
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
52 $ret = system(
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
53 'tar',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
54 '-xf',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
55 $fn_fast5
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
56 );
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
57 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:
diff changeset
58 if ($ret);
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
59
12
f64b148e6189 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit ba4c46d7717e3acd346c9c6bf0bbc9bbecccc190
jdv
parents: 7
diff changeset
60 chdir $tmpdir;
7
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
61
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
62 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:
diff changeset
63 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:
diff changeset
64
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
65 # index reads
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
66 $ret = system(
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
67 'nanopolish',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
68 'index',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
69 '--directory' => $fast5_dir,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
70 $fn_link,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
71 );
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
72 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:
diff changeset
73 if ($ret);
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
74
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
75 my @idx_fns = glob "$fn_link.*";
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
76 $ret = system(
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
77 'tar',
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
78 '-cf' => $fn_outfile,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
79 @idx_fns,
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
80 );
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
81 die "Failed tarball creation: $!\n"
32cb27adeb34 planemo upload for repository https://github.com/jvolkening/galaxy-tools/tree/master/tools/nanopolish commit 2dabc22c3707cc87100b094b25705160b842e9f9-dirty
jdv
parents:
diff changeset
82 if ($ret);