-
Notifications
You must be signed in to change notification settings - Fork 0
/
seance10.r
93 lines (78 loc) · 1.8 KB
/
seance10.r
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# TD question 12-14
source ("readfasta.r")
myseq<-readfasta("suzuki_and_pand2014_ali.faa")
# fonction pour compter les nuc dans un vecteur
comptenuc <- function(vec){
vectcount<-rep(0,5)
names(vectcount)=c("A","T","G","C","-")
for (i in names(vectcount)){
vectcount[i]<-length(which(vec==i))
}
return(vectcount)
}
# fonction pour compter les nuc dans un vecteur
compteaa <- function(vec){
vectcount<-rep(0,21)
names(vectcount)=c("I", "M", "T", "N", "K", "S", "R", "L", "P", "H", "Q", "V",
"A", "D", "E", "G", "F", "Y", "-", "C", "W")
for (i in names(vectcount)){
vectcount[i]<-length(which(vec==i))
}
return(vectcount)
}
# fonction pour calculer les freq des nuc dans un vecteur
freqnuc <- function (vec){
r<-comptenuc(vec)
tot<-sum(r)
r<-r/tot
return(r)
}
# fonction pour calculer les freq des nuc dans un vecteur
freqaa <- function (vec){
r<-compteaa(vec)
tot<-sum(r)
r<-r/tot
return(r)
}
# fonction pour calculer l'entropie d'un vecteur
entropie <- function (vec){
fvec<-freqaa(vec)
H<-0
for (i in (1:length(fvec))){
f<-fvec[i]
if (f!=0){
H<-H+(f*log2(f))
}
}
return(-H)
}
# creation tableau des séquences
tabseq<-c()
for (i in (1:length(myseq))){
v<-unlist(strsplit(myseq[i],""))
names(v)=""
tabseq<-rbind(tabseq,v)
}
rownames(tabseq)<-names(myseq)
ncol(tabseq)
nrow(tabseq)
# entropy of all columns
H<-c()
for (i in (1:ncol(tabseq))){
H<-c(H,entropie(tabseq[,i]))
}
# x and y axes for plot
x=1:length(H)
y=H
# ugly
plot (H, type="l")
# nice
plot (H,type="n") #plot just axes
lisse = smooth.spline(x, y, spar=0.35)
lines(lisse)
# entropie la plus elevee
print (max(H))
# position d'entropie la plus elevee
print (which(H==max(H)))
# 10% des positions de plus haute entropie
order(H,decreasing = T)[1:(length(H)/10)]