forked from czheluo/lncRNA-pipeline
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathget.mRNA.list.pl
90 lines (86 loc) · 1.96 KB
/
get.mRNA.list.pl
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
#!/usr/bin/perl -w
use strict;
use warnings;
my $BEGIN_TIME=time();
use Getopt::Long;
my ($fin,$fout,$min);
use Data::Dumper;
use FindBin qw($Bin $Script);
use File::Basename qw(basename dirname);
my $version="1.0.0";
GetOptions(
"help|?" =>\&USAGE,
"int:s"=>\$fin,
"out:s"=>\$fout,
) or &USAGE;
&USAGE unless ($fin);
open In,$fin;
my @rgens;
while (<In>) {
chomp;
my (undef,undef,$trans,undef,undef,undef,undef,undef,$gene)=split/\s+/,$_,9;
next if($trans ne "transcript");
my @gen=split/\;/,$gene;
foreach my $gens (@gen) {
#next if($gens =~ "transcript_id");
if ($gens =~ "ref_gene_id") {
my (undef,$geneid,$mid)=split/\s+/,$gens;
$mid=~s/"//g;
push @rgens,join("\n",$mid);
#print Out "$mid\n";
}else{
next;
}
}
}
close In;
@rgens=uniq(@rgens);
open Out,">$fout/mRNA.list";
foreach my $ge (@rgens) {
print Out "$ge\n";
}
close Out;
#my $sca=scalar @rgens;
#print $sca;die;
#print Dumper @rgens;die;
#######################################################################################
print STDOUT "\nDone. Total elapsed time : ",time()-$BEGIN_TIME,"s\n";
#######################################################################################
sub ABSOLUTE_DIR #$pavfile=&ABSOLUTE_DIR($pavfile);
{
my $cur_dir=`pwd`;chomp($cur_dir);
my ($in)=@_;
my $return="";
if(-f $in){
my $dir=dirname($in);
my $file=basename($in);
chdir $dir;$dir=`pwd`;chomp $dir;
$return="$dir/$file";
}elsif(-d $in){
chdir $in;$return=`pwd`;chomp $return;
}else{
warn "Warning just for file and dir \n$in";
exit;
}
chdir $cur_dir;
return $return;
}
sub uniq {
my %seen;
grep !$seen{$_}++, @_;
}
sub USAGE {#
my $usage=<<"USAGE";
Contact: meng.luo\@majorbio.com;
Script: $Script
Description:
eg: perl -int filename -out filename
Usage:
Options:
-int input file name
-out ouput file name
-h Help
USAGE
print $usage;
exit;
}