Bonjour à tous,
J'essaie, comme je le dis dans l'intitulé de mon post, de couper une séquences ( de taille L ) en plus petits morceaux. Je souhaite que la moyenne de tailles des fragments générés soient aux alentours de 50 (+/- 2 ). Attention, il ne faut pas mettre de contrainte sur la taille des fragments ( par exemple tous ont une taille de 50, ou taille comprise en 48 et 52 nt etc ...). Ca doit être complètement aléatoire.
Il y a une contrainte supplémentaire, qui est le nombre de fragments aléatoire générés : celui ci est imposé ...
Voici la base du code, mais je rencontre vraiment un problème concernant la contrainte de moyenne de taille des fragments générés ...
Pensez vous que les deux contraintes soient applicables ? J'essaie de coder un "algorithme" que j'ai trouvé dans un article scientifique et ce n'est pas évident ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 int main() { int mrna_length = 1000 ; int n_cut = 36 ; simulation(mrna_length, n_cut); return 0; } int simulation(int mrna_length, int n_cut) { int i,j,n_cut double *cutpoint; /* tableau contenant tous les positions (clivees ou pas) */ int *cut; /* tableau contenant uniquement les positions clivees */ cutpoint=(double *)malloc((size_t)((mrna_coverage+10)*sizeof(double))); for(i=0;i<=mrna_length;i++)cutpoint[i]=0; /* initialise cutpoint a 0 */ cut=(int *)malloc((size_t)((n_cut+10)*sizeof(int))); for(i=0;i<=n_cut;i++)cut[i]=0; for(i=0;i<n_cut;i++){ /* ici n_cut est utilise de façon a avoir le nombre requis de fragments ... */ j = 1 + (int) ((mrna_length-1) * (rand() / (RAND_MAX + 1.0))); /* choisi aleatoirement n_cut positions dans le fragment */ if(cutpoint[j]==1)i--;else cutpoint[j]=1; /* cutpoint est fixe a 1 pour les positions clivees */ } for(i=0,j=1;i<=mrna_length;i++)if(cutpoint[i]==1)cut[j++]=i; cut[0]=0; cut[j]=mrna_length; /* je store dans cut les positions clivees de façon a pouvoir recuperer des positions qui se suivent (start et stop des fragments)*/ }
A l'aiiiiiiiide !!
Partager