File: intron_barcharter.pl

package info (click to toggle)
trinityrnaseq 2.11.0%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 417,528 kB
  • sloc: perl: 48,420; cpp: 17,749; java: 12,695; python: 3,124; sh: 1,030; ansic: 983; makefile: 688; xml: 62
file content (78 lines) | stat: -rwxr-xr-x 1,134 bytes parent folder | download | duplicates (4)
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env perl

use strict;
use warnings;

my $usage = "usage: $0 venn.txt\n\n";

my $venn = $ARGV[0] or die $usage;

my %class_to_att_count;

my %atts;

open (my $fh, $venn) or die "Error, cannot open file $venn";
while (<$fh>) {
	chomp;
	my ($feature, $class_list) = split(/\t/);

	my @classes = split(/,/, $class_list);
	
	my $att;
	
	my ($reference) = grep { /reference/ } @classes;

	my $count = scalar (@classes);
	if ($reference) {
		$count--;
		$att = "reference";
		@classes = grep { $_ !~ /reference/ } @classes;
	}
	
	
	elsif ( $count == 1) {
		$att = "unique";
	}
	elsif ($count > 1) {
		$att = "shared";
	}
	else {
		die "Error, have only reference...?";
	}
	
	$atts{$att}++;
	
	foreach my $class (@classes) {
		$class_to_att_count{$class}->{$att}++;
	}
}

close $fh;

my @sorted_atts = reverse sort keys %atts;

print "#class\t" . join("\t", @sorted_atts) . "\n";

my @classes = sort keys %class_to_att_count;


foreach my $class (@classes) {
	
	print $class;
	
	foreach my $att (@sorted_atts) {
		
		my $count = $class_to_att_count{$class}->{$att} || 0;
		print "\t$count";
	}
	
	print "\n";
}

exit(0);