Mercurial > repos > matces > carpet_toolsuite
diff carpet-src-1/tools/CARPET/genecentrico.pl @ 0:cdd489d98766
Migrated tool version 1.0.0 from old tool shed archive to new tool shed repository
author | matces |
---|---|
date | Tue, 07 Jun 2011 16:50:41 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/carpet-src-1/tools/CARPET/genecentrico.pl Tue Jun 07 16:50:41 2011 -0400 @@ -0,0 +1,101 @@ +#! /usr/bin/perl + +# Copyright 2009 Matteo Cesaroni, Lucilla Luzi +# +# This program is free software; ; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + + +$file_all=$ARGV[0]; +$file_sub=$ARGV[1]; +$down=$ARGV[2]; +$up=$ARGV[6]; +$scelta=$ARGV[3]; +$result=$ARGV[4]; +$output=$ARGV[5]; + + +open(FILESUB, "<$file_sub") or die "Cannot find file $file_sub\n"; +open(FILEALL, "<$file_all") or die "Cannot open file $file_all: $!\n"; +open(FILEOUT, ">$output") or die "Cannot create file $output: $!\n"; + +print "Analysis Type=$scelta, Promoter def:$down/$up, output=$result\n"; + +@sub=<FILESUB>; +@all=<FILEALL>; +foreach $lines_all(@all){ + chomp $lines_all; + #chop $lines_all; + if ($lines_all=~/#/g){next;} + @line_all=split("\t",$lines_all); + $chr=$line_all[2]; + $refseq=$line_all[1]; + $refStart=$line_all[3]; + $refStop=$line_all[4]; + $name=$line_all[0]; + #$exon_count=$line_all[8]; + #@exonStart=split(",",$line_all[9]); + #@exonStop=split(",",$line_all[10]); + $strand=$line_all[5]; + if ($scelta eq "promoter"){ + if ($strand eq "+"){ + $prom_start=$refStart+$down; + $prom_stop=$refStart+$up; + } + if ($strand eq "-"){ + $prom_start=$refStop-$up; + $prom_stop=$refStop-$down; + } + } + if ($scelta eq "all"){ + if ($strand eq "+"){ + $prom_start=$refStart+$down; + $prom_stop=$refStop; + } + if ($strand eq "-"){ + $prom_start=$refStart; + $prom_stop=$refStop-$down; + } + } + + + + @promotore=(); + $max_prom=0; + foreach $lines_sub(@sub){ + chomp $lines_sub; + if ($lines_sub=~/#/g){next;} + @line_sub=split("\t",$lines_sub); + $chr_p=$line_sub[0]; + $peakStart=$line_sub[3]; + $peakStop=$line_sub[4]; + $value=$line_sub[5]; + #print "$peakStart\t$peakStop\t$prom_start\t$prom_stop\n"; + #print "$refStart\t$refStop\t$peakStart\t$peakStop\n"; + if (((($peakStart>=$prom_start) && ($peakStart<=$prom_stop)) || (($peakStart<=$prom_start) && ($peakStop>=$prom_start))) && ("$chr" eq "$chr_p")){ + push(@promotore,$value); + #print "cazzo"; + + } + } + $i=0; + foreach $valore(@promotore){ + $i++; + if($max_prom<$valore){ + $max_prom=$valore; + } + } + if ($result eq "max_value"){ + print FILEOUT "$lines_all\t$max_prom\n"; + } + else{ + print FILEOUT "$lines_all\t$i\n"; + } +}