diff scripts/generate_density_json.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/generate_density_json.pl	Mon Apr 25 13:08:56 2016 -0400
@@ -0,0 +1,80 @@
+#! /usr/bin/perl                                                                                                                                                                                  
+
+use strict;
+die "perl $0 <input.insertion.bp.summary> <chromInfo file> <genomic bin size>\n" if @ARGV<2;
+
+my @colors=("blue","green","red","yellow","grey","orange","purple","brown", "black");
+
+my $op_title=$ARGV[0];
+$op_title =~ s/summary/json/;
+
+my %chrs=();
+system("cut -f1 $ARGV[0] | uniq > chr");
+open (input, "<chr") or die "Can't open chr since $!\n";
+while (my $line=<input>) {
+    chomp($line);
+    $chrs{$line}=1;
+}
+close input;
+system("rm chr");
+
+open (output, ">>$op_title") or die "Can't open $op_title since $!\n";
+print output "{\"ideograms\":[\n";
+
+my $i=0;
+open (input, "<$ARGV[1]") or die "Can't open $ARGV[1] since $!\n";
+while (my $line=<input>) {
+    chomp($line);
+    my @a=split(/\t/, $line);
+    if ($chrs{$a[0]}==1) {
+        my $len=int($a[1]/$ARGV[2])+1;
+        if ($len < 5) {
+            $chrs{$a[0]}=0;
+            next;
+        }
+        if ($i > 0) {print output ",\n";}
+        print output "{\"id\":\"$a[0]\",\"length\":$len,\"color\":\"$colors[$i % 9]\"}";
+        $i++;
+    }
+}
+close input;
+
+print output "\n],\n\"tracks\":[\n{\n";
+print output "\"name\": \"Density\",\n";
+print output "\"type\": \"plot\",\n";
+print output "\"values\":\n[\n";
+
+my @hist=();
+my $last_chr="";
+my $i=0;
+my $k=0;
+open (input, "<$ARGV[0]") or die "Can't open $ARGV[0] since $!\n";
+#my $header=<input>;                                                                                                                                                                              
+while (my $line=<input>) {
+    chomp($line);
+    my @a=split(/\t/, $line);
+    if ($a[0] eq $last_chr) {
+        my $mid=int(($a[1]+$a[2])/2);
+        if (int($mid/$ARGV[2]) > $i) {
+            $i++;
+            $hist[$i]=1;
+        }
+        else {$hist[$i]++;}
+    }
+    else {
+        if (($last_chr ne "") && ($chrs{$last_chr} == 1)) {
+            if ($k > 0) {print output ",\n";}
+            print output "{\"color\":\"$colors[$k % 9]\",\"chr\":\"$last_chr\",\"values\":[";
+            for my $j (0..$i-1) {print output "$hist[$j],";}
+            print output "$hist[$i]]}";
+            $k++;
+        }
+        $i=0;
+        $hist[0]=1;
+        $last_chr=$a[0];
+    }
+}
+close input;
+
+print output "\n]}\n]\n}\n";
+close output;