File: SRA_to_fastq.pl

package info (click to toggle)
trinityrnaseq 2.11.0%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 417,528 kB
  • sloc: perl: 48,420; cpp: 17,749; java: 12,695; python: 3,124; sh: 1,030; ansic: 983; makefile: 688; xml: 62
file content (84 lines) | stat: -rwxr-xr-x 1,655 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env perl

use strict;
use warnings;

use File::Basename;

use Getopt::Long qw(:config no_ignore_case bundling pass_through);

my $usage = "\n\nusage: $0 --prefix \$prefix fileA.sra [fileB.sra ...]\n\n\n";


my $prefix;

&GetOptions ('prefix=s' => \$prefix);

my @sra_files = @ARGV;

unless (@ARGV) {
    die $usage;
}

unless (@sra_files) {
    die $usage;
}

my $fastq_dump_path = `which fastq-dump`;
unless ($fastq_dump_path && $fastq_dump_path =~ /\w/) {
    die "Error, cannot find 'fastq-dump' utility in your PATH. Be sure you have SRA toolkit installed and fastq-dump in your PATH setting. ";
}

my @core_names;
foreach my $sra_file (@sra_files) {

    my $core_name = $sra_file;
    $core_name =~ s/\.sra$//;
    $core_name = basename($core_name);
    push (@core_names, $core_name);
    
    my $cmd = "fastq-dump --defline-seq '@\$sn[_\$rn]/\$ri' --split-files $sra_file";
    &process_cmd($cmd) unless (-s "${core_name}_1.fastq");
    
}

if ($prefix) {
    
    my @final_cmds;
    my @tmp_files;
    for my $end ("1", "2") {
        
        my $cmd = "cat";
        foreach my $core_name (@core_names) {
            
            my $file = "$core_name" . "_$end.fastq";
            $cmd .= " $file ";
            push (@tmp_files, $file);
        }
        $cmd .= ">$prefix" . "_$end.fastq";
        &process_cmd($cmd);
    }
    
    ## remove tmp files:
    foreach my $file (@tmp_files) {
        unlink($file);
    }
}


exit(0);


####
sub process_cmd {
    my ($cmd) = @_;

    print STDERR "CMD: $cmd\n";
    my $ret = system($cmd);

    if ($ret) {
        die "Error, cmd: $cmd died with ret $ret";
    }

    return;
}