Mercurial > repos > portiahollyoak > temp
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:28d1a6f8143f |
---|---|
1 #! /usr/bin/perl | |
2 | |
3 use strict; | |
4 die "perl $0 <input.insertion.bp.summary> <chromInfo file> <genomic bin size>\n" if @ARGV<2; | |
5 | |
6 my @colors=("blue","green","red","yellow","grey","orange","purple","brown", "black"); | |
7 | |
8 my $op_title=$ARGV[0]; | |
9 $op_title =~ s/summary/json/; | |
10 | |
11 my %chrs=(); | |
12 system("cut -f1 $ARGV[0] | uniq > chr"); | |
13 open (input, "<chr") or die "Can't open chr since $!\n"; | |
14 while (my $line=<input>) { | |
15 chomp($line); | |
16 $chrs{$line}=1; | |
17 } | |
18 close input; | |
19 system("rm chr"); | |
20 | |
21 open (output, ">>$op_title") or die "Can't open $op_title since $!\n"; | |
22 print output "{\"ideograms\":[\n"; | |
23 | |
24 my $i=0; | |
25 open (input, "<$ARGV[1]") or die "Can't open $ARGV[1] since $!\n"; | |
26 while (my $line=<input>) { | |
27 chomp($line); | |
28 my @a=split(/\t/, $line); | |
29 if ($chrs{$a[0]}==1) { | |
30 my $len=int($a[1]/$ARGV[2])+1; | |
31 if ($len < 5) { | |
32 $chrs{$a[0]}=0; | |
33 next; | |
34 } | |
35 if ($i > 0) {print output ",\n";} | |
36 print output "{\"id\":\"$a[0]\",\"length\":$len,\"color\":\"$colors[$i % 9]\"}"; | |
37 $i++; | |
38 } | |
39 } | |
40 close input; | |
41 | |
42 print output "\n],\n\"tracks\":[\n{\n"; | |
43 print output "\"name\": \"Density\",\n"; | |
44 print output "\"type\": \"plot\",\n"; | |
45 print output "\"values\":\n[\n"; | |
46 | |
47 my @hist=(); | |
48 my $last_chr=""; | |
49 my $i=0; | |
50 my $k=0; | |
51 open (input, "<$ARGV[0]") or die "Can't open $ARGV[0] since $!\n"; | |
52 #my $header=<input>; | |
53 while (my $line=<input>) { | |
54 chomp($line); | |
55 my @a=split(/\t/, $line); | |
56 if ($a[0] eq $last_chr) { | |
57 my $mid=int(($a[1]+$a[2])/2); | |
58 if (int($mid/$ARGV[2]) > $i) { | |
59 $i++; | |
60 $hist[$i]=1; | |
61 } | |
62 else {$hist[$i]++;} | |
63 } | |
64 else { | |
65 if (($last_chr ne "") && ($chrs{$last_chr} == 1)) { | |
66 if ($k > 0) {print output ",\n";} | |
67 print output "{\"color\":\"$colors[$k % 9]\",\"chr\":\"$last_chr\",\"values\":["; | |
68 for my $j (0..$i-1) {print output "$hist[$j],";} | |
69 print output "$hist[$i]]}"; | |
70 $k++; | |
71 } | |
72 $i=0; | |
73 $hist[0]=1; | |
74 $last_chr=$a[0]; | |
75 } | |
76 } | |
77 close input; | |
78 | |
79 print output "\n]}\n]\n}\n"; | |
80 close output; |