5
open (ENT,'*.csv') or die "$!"; # file name
9
open (ENTOUT,'>entropy.csv');
11
foreach $feat (@allfeat) {
13
($name,$a,$b,$c,$d,$e,$f,$g,$h) = split(/,/,$feat);
14
@feature = ($a,$b,$c,$d,$e,$f,$g,$h);
15
@sortfeat = sort {$a <=> $b} @feature;
16
$interval = ($sortfeat[7] - $sortfeat[0])/9;
17
@compart = (0,0,0,0,0,0,0,0,0,0);
18
for ($fe = 0;$fe <= 7;++$fe) {
19
$cell = int (($feature[$fe]-$sortfeat[0])/$interval);
20
$compart[$cell] += 0.125;
22
$entropy = -($compart[0]*log($compart[0]+0.00001)/log(2)
23
+$compart[1]*log($compart[1]+0.00001)/log(2)
24
+$compart[2]*log($compart[2]+0.00001)/log(2)
25
+$compart[3]*log($compart[3]+0.00001)/log(2)
26
+$compart[4]*log($compart[4]+0.00001)/log(2)
27
+$compart[5]*log($compart[5]+0.00001)/log(2)
28
+$compart[6]*log($compart[6]+0.00001)/log(2)
29
+$compart[7]*log($compart[7]+0.00001)/log(2)
30
+$compart[8]*log($compart[8]+0.00001)/log(2)
31
+$compart[9]*log($compart[9]+0.00001)/log(2));
32
push (@entropy,$entropy);
33
print ENTOUT "$name,$a,$b,$c,$d,$e,$f,$g,$h,$entropy\n";
38
# Cut features genes with lowest 5% entropy
40
@sortent = sort{$a <=> $b} @entropy;
41
$entther = ($sortent[*] + $sortent[*])/2; # *:lowest 5% number of features (genes)
43
open (CENT,'entropy.csv') or die "$!";
47
open (CENTOUT,'>relation.csv');
48
open (DROPOUT,'>dropout.csv');
50
foreach $feat2 (@allfeat2) {
52
($name,$a,$b,$c,$d,$e,$f,$g,$h,$entropy) = split(/,/,$feat2);
54
if ($entropy >= $entther) {
55
print CENTOUT "$name,$a,$b,$c,$d,$e,$f,$g,$h\n";
58
print DROPOUT "$name,$a,$b,$c,$d,$e,$f,$g,$h\n";
63
print "Gene with sufficient entoropy:$entgene\n";
64
print "Dropout gene:$dropgene\n";