-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRETRODUP.pm
54 lines (48 loc) · 1.02 KB
/
RETRODUP.pm
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
package RETRODUP;
use warnings;
use strict;
my $NO_ID = "__NO_GENE_ID__";
sub getGeneId
{
my $in = shift;
my $ret = "";
if ($in =~ m/gene_id\s\"(ENSG.+)\"\;\stranscript_id/) {
$ret = $1;
} else {
return $NO_ID;
}
if ($in =~ m/gene_name\s\"(.+)\"\;\stranscript_type/) {
$ret .= "_".$1;
} else {
return $NO_ID;
}
return $ret;
}
sub openFile
{
my $file_name = shift;
unless (-e $file_name) {
print STDERR "File ",$file_name," does not exist.\n";
return 0;
}
my $ext = getExtension($file_name);
my $ret = 0;
if ($ext eq "gz" || $ext eq "gzip") {
$ret = open(INFILE,"gzip -cd $file_name | ");
} else {
$ret = open(INFILE,$file_name);
}
my $line = <INFILE>;
if ($ret) { return \*INFILE; }
print STDERR "Can't open file '",$file_name,"'.\n";
return 0;
}
sub getExtension
{
my $file_name = shift;
my @tmp = split(/\./,$file_name);
my $n = scalar(@tmp);
if ($n <= 1) { return ""; }
return $tmp[$n - 1];
}
1;