-
Notifications
You must be signed in to change notification settings - Fork 0
/
mafTobed.pl
61 lines (60 loc) · 1.85 KB
/
mafTobed.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
#!/bin/env perl
use strict;
use 5.010;
use Getopt::Long;
my($maf,$suffix);
my $opt=GetOptions(
'm|maf=s' => \$maf,
'h|help' => sub{&usage;exit(-1);}
);
my $IN;
if(defined $maf){
open $IN,"$maf" or die "Can't open file $maf:$!";
}else{
$IN=\*STDIN;
}
my $blockNum=1;
my $tag=0;
while(<$IN>){
chomp;
next if /^#/;
next if /^[aieq] /;
if(/^$/){print "\n";$blockNum+=1;}
if(/^s /){
my($name, $Chr, $Start, $Length, $Strand, $SrcSize)
= /s\s+(\S+?) #genome
\.(\S+) #Chr
\s+(\d+) #Start
\s+(\d+) #Length
\s+([+-]) #tStrand
\s+(\d+) #SrcSize
\s+[ATCGatcgNn-]+ #targetSeq
/x;
my($outS,$outE);
if($Strand eq '+'){
$outS=$Start;
$outE=$Start+$Length;
}else{
$outS=$SrcSize-($Start+$Length);
$outE=$outS+$Length;
}
if($tag == $blockNum){
print "\t";
print join "\t",$Chr,$outS,$outE,"$name"."_"."$blockNum",$Strand;
}else{
print join "\t",$Chr,$outS,$outE,"$name"."_"."$blockNum",$Strand;
$tag=$blockNum;
}
}
}
sub usage{
print <<HELP;
Usage: perl $0 -m in.maf >out.bed
Author: Yumei Li, 2017-4-7
This script output block regions of each species in maf into the same out line.
Options:
-m|--maf The maf file to be prosecced.[Can be read from STDIN.]
-h --help Print this help information.
HELP
exit(-1);
}