-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreateRGgroup.pl
More file actions
executable file
·130 lines (105 loc) · 4.1 KB
/
createRGgroup.pl
File metadata and controls
executable file
·130 lines (105 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/perl -w
# Author: Abdullah Kahraman
# Date: 10.12.2017
###############################################################################
###############################################################################
### Creates an RG line for an Illumina sample. ###
###############################################################################
###############################################################################
use strict;
use warnings;
use Getopt::Long;
no autovivification;
use File::Basename;
my (
# variable for parameters which are read in from commandline
$help,
$dir,
$file,
);
##############################################################################
### read all needed parameters from commandline ##############################
&GetOptions(
"help!" => \$help, # print this help
"dir=s" => \$dir, # full path to directory holding FASTQ file
"file=s" => \$file, # FASTQ file name
) or die "\nTry \"$0 -h\" for a complete list of options\n\n";
##############################################################################
# help
if ($help) {printHelp(); exit}
##############################################################################
### SETTINGS #################################################################
##############################################################################
##############################################################################
### SUBROUTINES ##############################################################
##############################################################################
###############################################################################
sub printHelp {
###############################################################################
# prints a help about the using and parameters of this scripts
# (execute if user types commandline parameter -h)
# param: no paramaters
# return: no return value
my (
$usage,
$sourceCode,
@rows,
$row,
$option,
$scriptInfo,
$example,
);
$usage = "$0\n";
print "\nUsage: " . $usage . "\n";
print "Valid options are:\n\n";
open(MYSELF, "$0") or
die "Cannot read source code file $0: $!\n";
$sourceCode .= join "", <MYSELF>;
close MYSELF;
$sourceCode =~ s/^.+?\&GetOptions\(\n//s;
$sourceCode =~ s/\n\).+$//s;
@rows = split /\n/, $sourceCode;
foreach $row (@rows){
$option = $row;
$option =~ s/\s+\"//g;
$option =~ s/\"\s.+\#/\t\#/g;
$option =~ s/=./\t<value> [required]/;
$option =~ s/:./\t<value> [optional]/;
$option =~ s/!/\t<non value> [optional]/;
$row =~ s/^.*//;
print "\t";
printf("%-1s%-30s%-30s\n", "-",$option,$row);
} # end of foreach $row (@rows)
print "\n";
print "Options may be abreviated, e.g. -h for --help\n\n";
$example = "$0";
}
##############################################################################
### END OF SUBROUTINES########################################################
##############################################################################
############
### MAIN ###
############
if(!defined $dir or !defined $file) {
print STDERR "\n\tPlease provide a directory path and file name. Try $0 -help to get more information\n\n";
exit -1;
}
$file = basename($file);
if($file !~ /\.fastq/ or $file !~ /\.fastq.gz/) {
print STDERR "\nERROR: $file appears not to be a FASTQ file. Please check!\n\n";
exit -2;
}
# e.g. 171124_D00515_1111_AHY25YBCXY
my $run = $dir;
$run =~ s/.*\/*(\d{6}_[A-Z]\d{5}_\d+_[A-Z0-9]+)\/*.*/$1/;
my ($date, $instrument, $runIndex, $flowcellId) = split(/_/, $run);
# e.g. 1228219B_7_1_S10_L002_R2_001.fastq.gz
$file =~ s/\.fastq.*//;
my $sampleName = $file;
$sampleName =~ s/^(.*)_S\d+_L\d+_R\d_\d+/$1/;
my @a = split(/_/, $file);
my $sampleNumber = $a[-4];
my $lane = $a[-3];
my $read = $a[-2];
#print "\@RG\tID:$flowcellId-$lane\tSM:$sampleName\tLB:$run\tPU:$flowcellId.$lane.$sampleName\tCN:USZ_MTP\tPL:ILLUMINA";
print "\@RG\\tID:$flowcellId-$lane\\tSM:$sampleName\\tLB:$run\\tPU:$flowcellId.$lane.$sampleName\\tCN:USZ_MTP\\tPL:ILLUMINA";