17h18 :
Je veux savoir si une répartition des sage aléatoire sur le génome produirait les memes résultats en terme de segments.
l’idée est de répartir sur les 24 million de position possible les 267000 tags de façon aleatoire, puis de rechercher les segments de la meme manière qu’avec les vraies données et ensuite de regarder la tailles des segments produites.
1- je pars des valeurs suivante
genome : 24 313 356 bases
tag, après filtration (juste tag unique et correct) 267023 tag
2- dans matlab je fait une répartition random de ces tags.
pour cela je genere 267023 valeurs aléatoire que je multiplie par la taille du génome
j’ai alors 267023 valeurs comprise entre 0 et 24313356
rand_tag=zeros(267023,1);for i=1:267023rand_tag(i,1)=gen*rand();end
on reparti dans une matrice de la taille du genome ces différents tag
g=zeros(24313356,1);for i=1:267023g(ceil(rand_tag(i,1)))=g(ceil(rand_tag(i,1))) + 1;end
je fait appelle ensuite à la fonction region_hit
cpt = region_hit(g, 1,1,1,1);
je recupère en sortie une matrice
–> cette méthode n’est pas la bonne car je vais etudier la répartition des segments sur une ditribution aléatoire. hors ce n’est pas exactement ce que je veux montrer.
je veux finalement montrer que c’est la distrivution des sage (ou le tirage) qui est ou pas aléatoire.
je suis parti sur l’idée d’un tirage aléatoire.
je ne le fait que sur les tag des manip 1 et 2.
ca en fait 77000
je fait un randperm sur une matrice de la taille du génome et je sélection les 77000 premie résultats.
ce seront les 77000 position aléatoire de mes tag
>> taille_gen=24313356;>> gen=[1:taille_gen];>> x=randperm(taille_gen);>> rand_tag_12=gen(x(1:77212));>> rand_tag_12=sort(rand_tag_12');>> dist_rand_tag12=diff(rand_tag_12);>> hist(dist_rand_tag12,100)
je fait la meme chose sur les tag des manip 1 & 2
j’utilise le fichier matlab ~/total/stats/tag_tot_genome.mat
n12 = sum(header01) + sum(header02);tag12=zeros(n12,1);j=1;for i=1:size(header01,1)t=header01(i,1);if (t>0) for k=1:t tag12(j,1)=i; j=j+1; endendendfor i=1:size(header02,1)t=header02(i,1);if (t>0) for k=1:t tag12(j,1)=i; j=j+1; endendendtag12=sort(tag12);dist_tag12=diff(tag12);hist(dist_tag12(find(dist_tag12<3500)),100)
et je récupère
on voit bien que les distributions sont différentes mais il faudrait une valeur numérique pour le prouver.
on a pour la distribution des tag 1 et 2 :
>>mean(dist_tag12)ans =306.8112>> median(dist_tag12)ans =0>> std(dist_tag12)ans =1.4071e+03
et pour la dsitribution aléatoire
>> mean(dist_rand_tag12)ans =314.8891>> median(dist_rand_tag12)ans =218>> std(dist_rand_tag12)ans =316.0702
on voit bien que la mediane est très différente.
mais ce n’est peut-etre pas un critère suffisant
le test du chi2 permet de voir si une distribution est aléatoire ou non
prennons la taille du génome totale -> 24313356
prennons le nb de tag 1 et 2 -> 77212
s’il sont répartis de façon homgène sur le génome ca fait 1 tag tout les 314 nucleotide environ.
imaginons qu’il soient réparti selon une distribution normal centrée autour de cette distance moyenne.
>> g2=randn(77212,1);>> g2=g2+abs(min(g2));>> mean(g2)ans =4.3959>> coeff = 314/4.3954coeff =71.4383>> g2=g2*coeff;>> hist(g2,100)>> [h,p]=chi2gof(g2)h =0p =0.7848
la distribution de ces distances est la suivante
avec une p-value sur le test de chi2 de 0.7848,
donc une proba très forte que cette distribution soit aléatoire.
Si je représente la distribution des distance entre tag des manip 1 et 2
(voir au-dessus), on voit que celle-ci est centrée sur 0, donc la plupart
des tag sont très proches entre eux
le test du chi2 sur cette distribution donne :
>> [h,p]=chi2gof(dist_tag12, 'nbins',32)h =1p =0
une p-value de 0, soit une proba nulle que ce soit une distribution aléatoire.
on calcule pour la distrib aléatoire
>> median(g2)ans = 314.8353>> mean(g2)ans = 314.8909>> std(g2)ans = 71.6086
et pour les manip
>>mean(dist_tag12)ans =306.8112>> median(dist_tag12)ans =0>> std(dist_tag12)ans =1.4071e+03
je fais ensuite la meme chose pour les tag des manip 7 et 8
n78 = sum(header07) + sum(header08);tag78=zeros(n78,1);j=1;for i=1:size(header07,1) t=header07(i,1); if (t>0) for k=1:t tag78(j,1)=i; j=j+1; end endendfor i=1:size(header08,1) t=header08(i,1); if (t>0) for k=1:t tag78(j,1)=i; j=j+1; end endendtag78=sort(tag78);dist_tag78=diff(tag78);
puis je fais une distribution aléatoire de tag équivalente
g=randn(69549,1);>> g=g+abs(min(g));>> mean(g)ans = 4.3684>> 24313356/69549ans =349.5860>> coeff = 349/4.3684coeff =79.8920>> g=g*coeff;>> hist(g,100)
j’obtiens pour la distribution aléatoire
>> [h,p]=chi2gof(g)h = 0p = 0.7109
soit une proba de 0.7 que ce soit une distrib aléatoire
avec la distrib suivante
et pour les tag
>> [h,p]=chi2gof(dist_tag78, 'nbins',25)h = 1p = 0
soit une proba nulle que ce soit aléatoire
avec la distrib suivante
pour cette distribution on a
>> mean(dist_tag78)ans = 348.9803>> median(dist_tag78)ans = 0>> std(dist_tag78)ans = 1.5912e+03
et pour la distrib aléatoire
>> median(g)ans = 348.9698>> mean(g)ans = 348.9981>> std(g)ans = 80.0903
les images sont dans ~/Desktop/screenshot/tags
