diff scripts/refine_breakpoint.in.pl @ 0:28d1a6f8143f draft

planemo upload for repository https://github.com/portiahollyoak/Tools commit 132bb96bba8e7aed66a102ed93b7744f36d10d37-dirty
author portiahollyoak
date Mon, 25 Apr 2016 13:08:56 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/refine_breakpoint.in.pl	Mon Apr 25 13:08:56 2016 -0400
@@ -0,0 +1,73 @@
+#! /usr/bin/perl
+
+use strict;
+
+#my @files=<*.bp.bed.sfcp>;
+my @files=<*.clipped.reads.aln>;
+for my $file (@files) {
+
+    my $title=$file;
+    $title =~ s/clipped.reads.aln/insertion.refined.bp/;
+    my $title2=$file;
+    $title2 =~ s/clipped.reads.aln/insertion.bp.bed/;
+
+    open (input, "<$file") or die "Can't open $file since $!\n";
+    open (input2, "<$title2") or die "Can't open $title2 since $!\n";
+    open (output, ">>$title") or die "Can't open $title since $!\n";
+    while (my $line=<input>) {
+	chomp($line);
+	my @a=split(/\t/, $line);
+	my @b=split(/\;/, $a[4]);
+	my $plusmax="";
+	my $minusmax="";
+	my $plus=0;
+	my $minus=0;
+	my $bp="";
+
+	my $line2=<input2>;
+	my @z=split(/\t/, $line2);
+	my $psup=abs($z[6]);
+	my $msup=abs($z[7]);
+	my $strand=$z[4];
+	my $class=$z[5];
+
+	for my $element (@b) {
+	    my @c=split(/\:/, $element);
+	    chop($c[0]);
+	    my @d=split(/\(/, $c[0]);
+	    if (($d[1] eq "+") && ($c[1] > $plus)) {
+		$plusmax=$d[0];
+		$plus=$c[1];
+	    }
+	    elsif (($d[1] eq "-") && ($c[1] > $minus)) {
+		$minusmax=$d[0];
+		$minus=$c[1];
+	    }
+	}
+
+        if ($a[1] > 0) {
+	    $a[1] += 15;
+	    $a[2] -= 15;
+	    print output "$a[0]\t$a[1]\t$a[2]\t$a[3]\t$strand\t$class\t";
+	    if (($minus >= 1)&&($plus >= 1)&&(abs($plusmax-$minusmax) <= 25)) {
+		print output "$plusmax\(\+\)\t$minusmax\(\-\)\t$plus\t$minus\t";
+	    }
+	    elsif (($plus >= $minus)&&($plus >= 2)&&($plusmax >= $a[1])&&($plusmax <= $a[2])) {
+		print output "$plusmax\(\+\)\t$plusmax\(\-\)\t$plus\t0\t";
+	    }
+	    elsif (($minus >= 2)&&($minusmax >= $a[1])&&($minusmax <= $a[2])) {
+		print output "$minusmax\(\+\)\t$minusmax\(\-\)\t0\t$minus\t";
+	    }
+	    else {
+		my $mid=int(($a[1] + $a[2])/2);
+		print output "$mid\(\+\)\t$mid\(\-\)\t0\t0\t";
+	    }
+	    print output "$psup\t$msup\n";
+	}
+    }
+    close input;
+    close input2;
+    close output;
+    system("uniq $title > temp");
+    system("mv temp $title");
+}